public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: john@utzweb.net To: gcc-gnats@gcc.gnu.org Subject: ada/8177: GNAT BUG DETECTED compiling GtkAda on FreeBSD 4.7 rc2 Date: Wed, 09 Oct 2002 13:16:00 -0000 [thread overview] Message-ID: <20021009201247.4282.qmail@sources.redhat.com> (raw) >Number: 8177 >Category: ada >Synopsis: GNAT BUG DETECTED compiling GtkAda on FreeBSD 4.7 rc2 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Oct 09 13:16:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: john@utzweb.net >Release: unknown-1.0 >Organization: >Environment: bash-2.05a$ env PWD=/home/spaz/Compile/GtkAda-1.2.12 XAUTHORITY=/home/spaz/.Xauthority WINDOWID=10485774 PAGER=more FTP_PASSIVE_MODE=YES ENV=/home/spaz/.shrc BLOCKSIZE=K USER=spaz MAIL=/var/mail/spaz OLDPWD=/home/spaz/Compile EDITOR=vi TERMCAP=xterm|vs100|xterm terminal emulator (X window system):ut:li#24:kh=\EOH:@7=\EOF:kD=^?:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:km:is=\E>\E[?1;3;4;5l\E[?7;8h\E[1;65r\E[65;1H:rs=\E>\E[?1;3;4;5l\E[?7;8h:kI=\E[2~:kN=\E[6~:kP=\E[5~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:k5=\E[15~:ve=\E[?25h:vi=\E[?25l:k0@:F1=\E[23~:F2=\E[24~:ic=\E[@:IC=\E[%d@:ec=\E[%dX:al=\E[L:dl=\E[M:dc=\E[P:AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:NP:do=\E[B:cl=\E[H\E[J:sf=\ED:as=\E(0:ae=\E(B:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:nw=\EE:ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:sr=\EM:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:UP=\E[%dA:DO=\E[%dB:RI=\E[%dC:LE=\E[%dD:ct=\E[3g:st=\EH:co#80:le=^H:bs:am:if=/usr/share/tabset/vt100:ho=\E[H:ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||:ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:@8=\EOM:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:pt:xn:ta=^I:ms:bl=^G:cr=^M:eo:it#8:RA=\E[?7l:SA=\E[?7h:kb=\010: DISPLAY=:0.0 SHLVL=2 LOGNAME=spaz SHELL=/usr/local/bin/bash HOME=/home/spaz TERM=xterm PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/bin:/usr/X11R6/bin:/home/spaz/bin _=/usr/bin/env bash-2.05a$ >Description: expected behavior is that this will be compiled successfully. current behavior is that it breaks in the following manner. gcc -v Reading specs from /usr/local/lib/gcc-lib/i386-unknown-freebsd4.7/3.2/specs Configured with: ../gcc-3.2/configure --enable-languages=ada Thread model: posix gcc version 3.2 gcc -c -I../ -O2 -gnatn -gnatwuwl -fPIC -I- ../gtk-extra-plot_data.adb +===========================GNAT BUG DETECTED==============================+ | 3.2 20020814 (release) (i386-unknown-freebsd4.7) GCC error: | | Internal compiler error in assign_stack_temp_for_type, at | | function.c:674 | | Error detected at /usr/local/lib/gcc-lib/i386-unknown-freebsd4.7/3.2/adainclude/s-secsta.ads:66:14| | Please submit a bug report, see http://gcc.gnu.org/bugs.html. | | Include the entire contents of this bug box in the report. | | Include the exact gcc or gnatmake command that you entered. | | Also include sources listed below in gnatchop format | | (concatenated together with no headers between files). | +==========================================================================+ Please include these source files with error report ../gtk-extra-plot_data.adb ../gtk-extra-plot_data.ads ../gtk-extra.ads ../gtk.ads ../glib.ads ../gdk.ads ../gtk-widget.ads ../gdk-color.ads ../gdk-visual.ads ../glib-glist.ads ../gdk-types.ads ../gdk-event.ads ../gdk-rectangle.ads ../gdk-window.ads ../gdk-cursor.ads ../gdk-window_attr.ads ../gdk-bitmap.ads ../gtk-accel_group.ads ../gtk-object.ads ../gtkada.ads ../gtkada-types.ads ../gtk-adjustment.ads ../gtk-data.ads ../gtk-enums.ads ../gtk-style.ads ../gdk-gc.ads ../gdk-font.ads ../gdk-region.ads ../gdk-pixmap.ads ../glib-gslist.ads ../glib-glist.adb ../glib-gslist.adb compilation abandoned >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/gzip; name="gnatbug.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="gnatbug.tar.gz" Z25hdGJ1Zy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwNDA3NTUAMDAwMTc1 MQAwMDAwMDAwADAwMDAwMDAwMDAwADA3NTUxMTA3NjMyADAxMTM0NgAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn bmF0YnVnL2d0ay1leHRyYS1wbG90X2RhdGEuYWRiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAxNzUx ADAwMDAwMDAAMDAwMDAwNzY2NjUAMDc1NTExMDc2MzIAMDE1NzEyACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc3BhegAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBH aW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFy bGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAg IC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0t IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlm IG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwg b3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0t Ci0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRo ZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dl dmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFi bGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAg IC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgp3aXRoIEdsaWI7ICAgICAgICAgdXNlIEdsaWI7CndpdGggR3Rr LldpZGdldDsgICB1c2UgR3RrLldpZGdldDsKd2l0aCBHdGthZGEuVHlwZXM7IHVzZSBHdGthZGEu VHlwZXM7CndpdGggR2RrLkNvbG9yOyAgICB1c2UgR2RrLkNvbG9yOwp3aXRoIEludGVyZmFjZXMu QzsgdXNlIEludGVyZmFjZXMuQzsKCnBhY2thZ2UgYm9keSBHdGsuRXh0cmEuUGxvdF9EYXRhIGlz CgogICAtLS0tLS0tLS0tLS0tCiAgIC0tIEd0a19OZXcgLS0KICAgLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIEd0a19OZXcKICAgICAoRGF0YSA6IG91dCBHdGtfUGxvdF9EYXRhOyBGdW5jIDog UGxvdF9GdW5jdGlvbiA6PSBudWxsKSBpcwogICBiZWdpbgogICAgICBEYXRhIDo9IG5ldyBHdGtf UGxvdF9EYXRhX1JlY29yZDsKICAgICAgSW5pdGlhbGl6ZSAoRGF0YSwgRnVuYyk7CiAgIGVuZCBH dGtfTmV3OwoKICAgLS0tLS0tLS0tLS0tLS0tLQogICAtLSBJbml0aWFsaXplIC0tCiAgIC0tLS0t LS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBJbml0aWFsaXplCiAgICAgKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQnQ2xhc3M7IEZ1bmMgOiBQbG90X0Z1bmN0aW9uIDo9IG51bGwp CiAgIGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX25ldyIpOwoKICAg ICAgZnVuY3Rpb24gSW50ZXJuYWwyIChGdW5jIDogUGxvdF9GdW5jdGlvbikgcmV0dXJuIFN5c3Rl bS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbDIsICJndGtfcGxvdF9k YXRhX25ld19mdW5jdGlvbiIpOwogICBiZWdpbgogICAgICBpZiBGdW5jID0gbnVsbCB0aGVuCiAg ICAgICAgIFNldF9PYmplY3QgKERhdGEsIEludGVybmFsKTsKICAgICAgZWxzZQogICAgICAgICBT ZXRfT2JqZWN0IChEYXRhLCBJbnRlcm5hbDIgKEZ1bmMpKTsKICAgICAgZW5kIGlmOwogICAgICBJ bml0aWFsaXplX1VzZXJfRGF0YSAoRGF0YSk7CiAgIGVuZCBJbml0aWFsaXplOwoKICAgLS0tLS0t LS0tLS0tLS0KICAgLS0gU2V0X05hbWUgLS0KICAgLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVy ZSBTZXRfTmFtZSAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgTmFtZSA6IFN0 cmluZykgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7 IE5hbWUgOiBpbiBTdHJpbmcpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0 a19wbG90X2RhdGFfc2V0X25hbWUiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmpl Y3QgKERhdGEpLCBOYW1lICYgQVNDSUkuTlVMKTsKICAgZW5kIFNldF9OYW1lOwoKICAgLS0tLS0t LS0tLS0KICAgLS0gUGFpbnQgLS0KICAgLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBQYWludCAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgaXMKICAgICAgcHJvY2VkdXJlIElu dGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJ bnRlcm5hbCwgImd0a19wbG90X2RhdGFfcGFpbnQiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwg KEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIFBhaW50OwoKICAgLS0tLS0tLS0tLS0tLS0tLS0K ICAgLS0gRHJhd19Qb2ludHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBE cmF3X1BvaW50cyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgTiA6IEdpbnQp IGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBOIDog R2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9k cmF3X3BvaW50cyIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSks IE4pOwogICBlbmQgRHJhd19Qb2ludHM7CgogICAtLS0tLS0tLS0tLS0tLS0tLQogICAtLSBEcmF3 X1N5bWJvbCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIERyYXdfU3ltYm9s CiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFgsIFkgOiBHZG91Ymxl KQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsg WCwgWSA6IEdkb3VibGUpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19w bG90X2RhdGFfZHJhd19zeW1ib2wiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmpl Y3QgKERhdGEpLCBYLCBZKTsKICAgZW5kIERyYXdfU3ltYm9sOwoKICAgLS0tLS0tLS0tLS0tLS0t LQogICAtLSBTZXRfUG9pbnRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBT ZXRfUG9pbnRzCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAg IFggICAgOiBHZG91YmxlX0FycmF5X0FjY2VzczsKICAgICAgWSAgICA6IEdkb3VibGVfQXJyYXlf QWNjZXNzOwogICAgICBEeCAgIDogR2RvdWJsZV9BcnJheV9BY2Nlc3M7CiAgICAgIER5ICAgOiBH ZG91YmxlX0FycmF5X0FjY2VzcykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRh ICAgICAgIDogaW4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgWCAg ICAgICAgICA6IGluIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgIFkg ICAgICAgICAgOiBpbiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICBE eCAgICAgICAgIDogaW4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAg RHkgICAgICAgICA6IGluIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAg IE51bV9Qb2ludHMgOiBpbiBHaW50KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJndGtfcGxvdF9kYXRhX3NldF9wb2ludHMiKTsKICAgICAgWGEsIFlhLCBEeGEsIER5YSA6IFN5 c3RlbS5BZGRyZXNzIDo9IFN5c3RlbS5OdWxsX0FkZHJlc3M7CiAgIGJlZ2luCiAgICAgIGlmIFgg Lz0gbnVsbCB0aGVuCiAgICAgICAgIFhhIDo9IFggKFgnRmlyc3QpJ0FkZHJlc3M7CiAgICAgIGVu ZCBpZjsKCiAgICAgIGlmIFkgLz0gbnVsbCB0aGVuCiAgICAgICAgIFlhIDo9IFkgKFknRmlyc3Qp J0FkZHJlc3M7CiAgICAgIGVuZCBpZjsKCiAgICAgIGlmIER4IC89IG51bGwgdGhlbgogICAgICAg ICBEeGEgOj0gRHggKER4J0ZpcnN0KSdBZGRyZXNzOwogICAgICBlbmQgaWY7CgogICAgICBpZiBE eSAvPSBudWxsIHRoZW4KICAgICAgICAgRHlhIDo9IER5IChEeSdGaXJzdCknQWRkcmVzczsKICAg ICAgZW5kIGlmOwoKICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBYYSwgWWEsIER4 YSwgRHlhLCBYJ0xlbmd0aCk7CiAgIGVuZCBTZXRfUG9pbnRzOwoKICAgLS0tLS0tLS0tLS0tLS0t LQogICAtLSBHZXRfUG9pbnRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBH ZXRfUG9pbnRzCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAg IFggICAgOiBvdXQgUG9pbnRzX0FycmF5OwogICAgICBZICAgIDogb3V0IFBvaW50c19BcnJheTsK ICAgICAgRHggICA6IG91dCBQb2ludHNfQXJyYXk7CiAgICAgIER5ICAgOiBvdXQgUG9pbnRzX0Fy cmF5KQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgICAgICAgOiBpbiBTeXN0 ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICBYICAgICAgICAgIDogb3V0IFN5 c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgIFkgICAgICAgICAgOiBvdXQg U3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgRHggICAgICAgICA6IG91 dCBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICBEeSAgICAgICAgIDog b3V0IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgIE51bV9Qb2ludHMg OiBvdXQgR2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9nZXRfcG9pbnRzIik7CiAgICAgIE51bV9Qb2ludHMgOiBHaW50OwogICAgICBYMSwgWTEs IER4MSwgRHkxIDogU3lzdGVtLkFkZHJlc3M7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRf T2JqZWN0IChEYXRhKSwgWDEsIFkxLCBEeDEsIER5MSwgTnVtX1BvaW50cyk7CiAgICAgIFggIDo9 IChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChYMSksICBOdW1fUG9pbnRzID0+IE51bV9Qb2lu dHMpOwogICAgICBZICA6PSAoUG9pbnRzID0+IFRvX0RvdWJsZV9BcnJheSAoWTEpLCAgTnVtX1Bv aW50cyA9PiBOdW1fUG9pbnRzKTsKICAgICAgRHggOj0gKFBvaW50cyA9PiBUb19Eb3VibGVfQXJy YXkgKER4MSksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgICAgIER5IDo9IChQb2ludHMg PT4gVG9fRG91YmxlX0FycmF5IChEeTEpLCBOdW1fUG9pbnRzID0+IE51bV9Qb2ludHMpOwogICBl bmQgR2V0X1BvaW50czsKCiAgIC0tLS0tLS0tLS0tCiAgIC0tIFNldF9YIC0tCiAgIC0tLS0tLS0t LS0tCgogICBwcm9jZWR1cmUgU2V0X1gKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRh X1JlY29yZDsgWCA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKQogICBpcwogICAgICBwcm9jZWR1cmUg SW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgWCA6IFN5c3RlbS5BZGRyZXNzKTsKICAg ICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF94Iik7CiAg IGJlZ2luCiAgICAgIHByYWdtYSBBc3NlcnQgKEdldF9OdW1wb2ludHMgKERhdGEpID0gWCdMZW5n dGgpOwogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFggKFgnRmlyc3QpJ0FkZHJl c3MpOwogICBlbmQgU2V0X1g7CgogICAtLS0tLS0tLS0tLQogICAtLSBTZXRfWSAtLQogICAtLS0t LS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9ZCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQ7IFkgOiBHZG91YmxlX0FycmF5X0FjY2VzcykKICAgaXMKICAgICAgcHJvY2Vk dXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IFkgOiBTeXN0ZW0uQWRkcmVzcyk7 CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfeSIp OwogICBiZWdpbgogICAgICBwcmFnbWEgQXNzZXJ0IChHZXRfTnVtcG9pbnRzIChEYXRhKSA9IFkn TGVuZ3RoKTsKICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBZIChZJ0ZpcnN0KSdB ZGRyZXNzKTsKICAgZW5kIFNldF9ZOwoKICAgLS0tLS0tLS0tLS0KICAgLS0gU2V0X1ogLS0KICAg LS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfWgogICAgIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkOyBaIDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpCiAgIGlzCiAgICAgIHBy b2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBaIDogU3lzdGVtLkFkZHJl c3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0 X3oiKTsKICAgYmVnaW4KICAgICAgcHJhZ21hIEFzc2VydCAoR2V0X051bXBvaW50cyAoRGF0YSkg PSBaJ0xlbmd0aCk7CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgWiAoWidGaXJz dCknQWRkcmVzcyk7CiAgIGVuZCBTZXRfWjsKCiAgIC0tLS0tLS0tLS0tCiAgIC0tIFNldF9BIC0t CiAgIC0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0EKICAgICAoRGF0YSA6IGFjY2VzcyBH dGtfUGxvdF9EYXRhX1JlY29yZDsgQSA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKQogICBpcwogICAg ICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgQSA6IFN5c3RlbS5B ZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRh X3NldF9hIik7CiAgIGJlZ2luCiAgICAgIHByYWdtYSBBc3NlcnQgKEdldF9OdW1wb2ludHMgKERh dGEpID0gQSdMZW5ndGgpOwogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIEEgKEEn Rmlyc3QpJ0FkZHJlc3MpOwogICBlbmQgU2V0X0E7CgogICAtLS0tLS0tLS0tLS0KICAgLS0gU2V0 X0R4IC0tCiAgIC0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9EeAogICAgIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBEeCA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKQog ICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgRHgg OiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3Rr X3Bsb3RfZGF0YV9zZXRfZHgiKTsKICAgYmVnaW4KICAgICAgcHJhZ21hIEFzc2VydCAoR2V0X051 bXBvaW50cyAoRGF0YSkgPSBEeCdMZW5ndGgpOwogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAo RGF0YSksIER4IChEeCdGaXJzdCknQWRkcmVzcyk7CiAgIGVuZCBTZXRfRHg7CgogICAtLS0tLS0t LS0tLS0KICAgLS0gU2V0X0R5IC0tCiAgIC0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9E eQogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBEeSA6IEdkb3VibGVf QXJyYXlfQWNjZXNzKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0 ZW0uQWRkcmVzczsgRHkgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMs IEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfZHkiKTsKICAgYmVnaW4KICAgICAgcHJhZ21h IEFzc2VydCAoR2V0X051bXBvaW50cyAoRGF0YSkgPSBEeSdMZW5ndGgpOwogICAgICBJbnRlcm5h bCAoR2V0X09iamVjdCAoRGF0YSksIER5IChEeSdGaXJzdCknQWRkcmVzcyk7CiAgIGVuZCBTZXRf RHk7CgogICAtLS0tLS0tLS0tLS0KICAgLS0gU2V0X0R6IC0tCiAgIC0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIFNldF9EegogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3Jk OyBEeiA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJu YWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgRHogOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHBy YWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfZHoiKTsKICAgYmVn aW4KICAgICAgcHJhZ21hIEFzc2VydCAoR2V0X051bXBvaW50cyAoRGF0YSkgPSBEeidMZW5ndGgp OwogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIER6IChEeidGaXJzdCknQWRkcmVz cyk7CiAgIGVuZCBTZXRfRHo7CgogICAtLS0tLS0tLS0tLS0KICAgLS0gU2V0X0RhIC0tCiAgIC0t LS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9EYQogICAgIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkOyBEYSA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKQogICBpcwogICAgICBw cm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgRGEgOiBTeXN0ZW0uQWRk cmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9z ZXRfZGEiKTsKICAgYmVnaW4KICAgICAgcHJhZ21hIEFzc2VydCAoR2V0X051bXBvaW50cyAoRGF0 YSkgPSBEYSdMZW5ndGgpOwogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIERhIChE YSdGaXJzdCknQWRkcmVzcyk7CiAgIGVuZCBTZXRfRGE7CgogICAtLS0tLS0tLS0tLQogICAtLSBH ZXRfWCAtLQogICAtLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X1ggKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJyYXkgaXMKICAgICAgZnVuY3Rp b24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgTnVtX1BvaW50cyA6IFN5c3RlbS5B ZGRyZXNzKQogICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBv cnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfeCIpOwoKICAgICAgTnVtX1BvaW50 cyA6IGFsaWFzZWQgR2ludDsKICAgICAgUyA6IFN5c3RlbS5BZGRyZXNzIDo9IEludGVybmFsIChH ZXRfT2JqZWN0IChEYXRhKSwgTnVtX1BvaW50cydBZGRyZXNzKTsKICAgYmVnaW4KICAgICAgcmV0 dXJuIChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChTKSwgTnVtX1BvaW50cyA9PiBOdW1fUG9p bnRzKTsKICAgZW5kIEdldF9YOwoKICAgLS0tLS0tLS0tLS0KICAgLS0gR2V0X1kgLS0KICAgLS0t LS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9ZIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFf UmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5IGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChE YXRhIDogU3lzdGVtLkFkZHJlc3M7IE51bV9Qb2ludHMgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAg ICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5h bCwgImd0a19wbG90X2RhdGFfZ2V0X3kiKTsKCiAgICAgIE51bV9Qb2ludHMgOiBhbGlhc2VkIEdp bnQ7CiAgICAgIFMgOiBTeXN0ZW0uQWRkcmVzcyA6PSBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0 YSksIE51bV9Qb2ludHMnQWRkcmVzcyk7CiAgIGJlZ2luCiAgICAgIHJldHVybiAoUG9pbnRzID0+ IFRvX0RvdWJsZV9BcnJheSAoUyksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBH ZXRfWTsKCiAgIC0tLS0tLS0tLS0tCiAgIC0tIEdldF9aIC0tCiAgIC0tLS0tLS0tLS0tCgogICBm dW5jdGlvbiBHZXRfWiAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJu IFBvaW50c19BcnJheSBpcwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5B ZGRyZXNzOyBOdW1fUG9pbnRzIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgIHJldHVybiBTeXN0 ZW0uQWRkcmVzczsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9k YXRhX2dldF96Iik7CgogICAgICBOdW1fUG9pbnRzIDogYWxpYXNlZCBHaW50OwogICAgICBTIDog U3lzdGVtLkFkZHJlc3MgOj0gSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBOdW1fUG9pbnRz J0FkZHJlc3MpOwogICBiZWdpbgogICAgICByZXR1cm4gKFBvaW50cyA9PiBUb19Eb3VibGVfQXJy YXkgKFMpLCBOdW1fUG9pbnRzID0+IE51bV9Qb2ludHMpOwogICBlbmQgR2V0X1o7CgogICAtLS0t LS0tLS0tLQogICAtLSBHZXRfQSAtLQogICAtLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X0Eg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJyYXkg aXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgTnVtX1Bv aW50cyA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAg ICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfYSIpOwoK ICAgICAgTnVtX1BvaW50cyA6IGFsaWFzZWQgR2ludDsKICAgICAgUyA6IFN5c3RlbS5BZGRyZXNz IDo9IEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTnVtX1BvaW50cydBZGRyZXNzKTsKICAg YmVnaW4KICAgICAgcmV0dXJuIChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChTKSwgTnVtX1Bv aW50cyA9PiBOdW1fUG9pbnRzKTsKICAgZW5kIEdldF9BOwoKICAgLS0tLS0tLS0tLS0tCiAgIC0t IEdldF9EeCAtLQogICAtLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9EeCAoRGF0YSA6IGFj Y2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheSBpcwogICAgICBm dW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBOdW1fUG9pbnRzIDogU3lz dGVtLkFkZHJlc3MpCiAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9keCIpOwoKICAgICAgTnVt X1BvaW50cyA6IGFsaWFzZWQgR2ludDsKICAgICAgUyA6IFN5c3RlbS5BZGRyZXNzIDo9IEludGVy bmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTnVtX1BvaW50cydBZGRyZXNzKTsKICAgYmVnaW4KICAg ICAgcmV0dXJuIChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChTKSwgTnVtX1BvaW50cyA9PiBO dW1fUG9pbnRzKTsKICAgZW5kIEdldF9EeDsKCiAgIC0tLS0tLS0tLS0tLQogICAtLSBHZXRfRHkg LS0KICAgLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRfRHkgKERhdGEgOiBhY2Nlc3MgR3Rr X1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJyYXkgaXMKICAgICAgZnVuY3Rpb24g SW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgTnVtX1BvaW50cyA6IFN5c3RlbS5BZGRy ZXNzKQogICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfZHkiKTsKCiAgICAgIE51bV9Qb2ludHMg OiBhbGlhc2VkIEdpbnQ7CiAgICAgIFMgOiBTeXN0ZW0uQWRkcmVzcyA6PSBJbnRlcm5hbCAoR2V0 X09iamVjdCAoRGF0YSksIE51bV9Qb2ludHMnQWRkcmVzcyk7CiAgIGJlZ2luCiAgICAgIHJldHVy biAoUG9pbnRzID0+IFRvX0RvdWJsZV9BcnJheSAoUyksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50 cyk7CiAgIGVuZCBHZXRfRHk7CgogICAtLS0tLS0tLS0tLS0KICAgLS0gR2V0X0R6IC0tCiAgIC0t LS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X0R6IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0Rh dGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5IGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFs IChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IE51bV9Qb2ludHMgOiBTeXN0ZW0uQWRkcmVzcykKICAg ICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRl cm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2R6Iik7CgogICAgICBOdW1fUG9pbnRzIDogYWxpYXNl ZCBHaW50OwogICAgICBTIDogU3lzdGVtLkFkZHJlc3MgOj0gSW50ZXJuYWwgKEdldF9PYmplY3Qg KERhdGEpLCBOdW1fUG9pbnRzJ0FkZHJlc3MpOwogICBiZWdpbgogICAgICByZXR1cm4gKFBvaW50 cyA9PiBUb19Eb3VibGVfQXJyYXkgKFMpLCBOdW1fUG9pbnRzID0+IE51bV9Qb2ludHMpOwogICBl bmQgR2V0X0R6OwoKICAgLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9EYSAtLQogICAtLS0tLS0tLS0t LS0KCiAgIGZ1bmN0aW9uIEdldF9EYSAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQpIHJldHVybiBQb2ludHNfQXJyYXkgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEg OiBTeXN0ZW0uQWRkcmVzczsgTnVtX1BvaW50cyA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICBy ZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAi Z3RrX3Bsb3RfZGF0YV9nZXRfZGEiKTsKCiAgICAgIE51bV9Qb2ludHMgOiBhbGlhc2VkIEdpbnQ7 CiAgICAgIFMgOiBTeXN0ZW0uQWRkcmVzcyA6PSBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSks IE51bV9Qb2ludHMnQWRkcmVzcyk7CiAgIGJlZ2luCiAgICAgIHJldHVybiAoUG9pbnRzID0+IFRv X0RvdWJsZV9BcnJheSAoUyksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBHZXRf RGE7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9OdW1wb2ludHMgLS0KICAgLS0t LS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9OdW1wb2ludHMgKERhdGEgOiBhY2Nl c3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IE51bSA6IEdpbnQpIGlzCiAgICAgIHByb2NlZHVyZSBJ bnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBOdW0gOiBHaW50KTsKICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9udW1wb2ludHMiKTsKICAg YmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBOdW0pOwogICBlbmQgU2V0 X051bXBvaW50czsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X051bXBvaW50cyAt LQogICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRfTnVtcG9pbnRzIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gR2ludCBpcwogICAgICBmdW5j dGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2ludDsKICAgICAg cHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9udW1wb2ludHMi KTsKICAgYmVnaW4KICAgICAgcmV0dXJuIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAg IGVuZCBHZXRfTnVtcG9pbnRzOwoKICAgLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTZXRfTGFiZWxz IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfTGFiZWxzCiAgICAgKERh dGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIExhYmVscyA6IEd0a2FkYS5U eXBlcy5DaGFyc19QdHJfQXJyYXkpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0 YSA6IFN5c3RlbS5BZGRyZXNzOyBMYWJlbHMgOiBDaGFyc19QdHJfQXJyYXkpOwogICAgICBwcmFn bWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2xhYmVscyIpOwogICBi ZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIExhYmVscyk7CiAgIGVuZCBT ZXRfTGFiZWxzOwoKICAgLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZXRfTGFiZWxzIC0tCiAgIC0t LS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9MYWJlbHMgKERhdGEgOiBhY2Nlc3MgR3Rr X1Bsb3RfRGF0YV9SZWNvcmQpCiAgICAgIHJldHVybiBHdGthZGEuVHlwZXMuQ2hhcnNfUHRyX0Fy cmF5CiAgIGlzCiAgICAgIHR5cGUgU3RyX0FycmF5IGlzIGFycmF5IChOYXR1cmFsKSBvZiBDaGFy c19QdHI7CiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3MpIHJl dHVybiBTdHJfQXJyYXk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bs b3RfZGF0YV9nZXRfbGFiZWxzIik7CgogICAgICBOIDogY29uc3RhbnQgc2l6ZV90IDo9IHNpemVf dCAoR2V0X051bXBvaW50cyAoRGF0YSkpOwogICBiZWdpbgogICAgICByZXR1cm4gQ2hhcnNfUHRy X0FycmF5CiAgICAgICAgKEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSkoMCAuLiBJbnRlZ2Vy IChOKSAtIDEpKTsKICAgZW5kIEdldF9MYWJlbHM7CgogICAtLS0tLS0tLS0tLS0tLS0tLQogICAt LSBTaG93X0xhYmVscyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNob3df TGFiZWxzCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFNob3cgOiBC b29sZWFuKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRk cmVzczsgU2hvdyA6IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0 a19wbG90X2RhdGFfc2hvd19sYWJlbHMiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9P YmplY3QgKERhdGEpLCBCb29sZWFuJ1BvcyAoU2hvdykpOwogICBlbmQgU2hvd19MYWJlbHM7Cgog ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gTGFiZWxzX1NldF9BdHRyaWJ1dGVz IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIExhYmVsc19T ZXRfQXR0cmlidXRlcwogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwog ICAgICBGb250IDogU3RyaW5nOwogICAgICBIZWlnaHQgOiBHaW50OwogICAgICBBbmdsZSAgOiBH aW50OwogICAgICBGb3JlZ3JvdW5kIDogR2RrLkNvbG9yLkdka19Db2xvcjsKICAgICAgQmFja2dy b3VuZCA6IEdkay5Db2xvci5HZGtfQ29sb3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5h bAogICAgICAgIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIEZvbnQgOiBTdHJpbmc7 CiAgICAgICAgIEhlaWdodCwgQW5nbGUgOiBHaW50OwogICAgICAgICBGb3JlZ3JvdW5kLCBCYWNr Z3JvdW5kIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5h bCwgImd0a19wbG90X2RhdGFfbGFiZWxzX3NldF9hdHRyaWJ1dGVzIik7CgogICAgICBGIDogYWxp YXNlZCBHZGtfQ29sb3IgOj0gRm9yZWdyb3VuZDsKICAgICAgQiA6IGFsaWFzZWQgR2RrX0NvbG9y IDo9IEJhY2tncm91bmQ7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRh KSwgRm9udCAmIEFTQ0lJLk5VTCwgSGVpZ2h0LCBBbmdsZSwKICAgICAgICAgICAgICAgIEYnQWRk cmVzcywgQidBZGRyZXNzKTsKICAgZW5kIExhYmVsc19TZXRfQXR0cmlidXRlczsKCiAgIC0tLS0t LS0tLS0tLS0tLS0KICAgLS0gU2V0X1N5bWJvbCAtLQogICAtLS0tLS0tLS0tLS0tLS0tCgogICBw cm9jZWR1cmUgU2V0X1N5bWJvbAogICAgIChEYXRhICAgICAgICAgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQ7CiAgICAgIFRoZV9UeXBlICAgICA6IFBsb3RfU3ltYm9sX1R5cGU7CiAgICAg IFN0eWxlICAgICAgICA6IFBsb3RfU3ltYm9sX1N0eWxlOwogICAgICBTaXplICAgICAgICAgOiBH aW50OwogICAgICBMaW5lX1dpZHRoICAgOiBHZmxvYXQ7CiAgICAgIENvbG9yICAgICAgICA6IEdk ay5Db2xvci5HZGtfQ29sb3I7CiAgICAgIEJvcmRlcl9Db2xvciA6IEdkay5Db2xvci5HZGtfQ29s b3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbAogICAgICAgIChEYXRhICAgICAgICAg ICAgICAgICAgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgVGhlX1R5cGUsIFN0eWxlLCBTaXpl IDogR2ludDsKICAgICAgICAgTGluZV9XaWR0aCAgICAgICAgICAgIDogR2Zsb2F0OwogICAgICAg ICBDb2xvciwgQm9yZGVyX0NvbG9yICAgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJ bXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfc3ltYm9sIik7CiAgICAgIEMg OiBhbGlhc2VkIEdka19Db2xvciA6PSBDb2xvcjsKICAgICAgQiA6IGFsaWFzZWQgR2RrX0NvbG9y IDo9IEJvcmRlcl9Db2xvcjsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERh dGEpLCBQbG90X1N5bWJvbF9UeXBlJ1BvcyAoVGhlX1R5cGUpLAogICAgICAgICAgICAgICAgUGxv dF9TeW1ib2xfU3R5bGUnUG9zIChTdHlsZSksIFNpemUsIExpbmVfV2lkdGgsCiAgICAgICAgICAg ICAgICBDJ0FkZHJlc3MsIEInQWRkcmVzcyk7CiAgIGVuZCBTZXRfU3ltYm9sOwoKICAgLS0tLS0t LS0tLS0tLS0tLQogICAtLSBHZXRfU3ltYm9sIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgIHBy b2NlZHVyZSBHZXRfU3ltYm9sCiAgICAgKERhdGEgICAgICAgICA6IGFjY2VzcyBHdGtfUGxvdF9E YXRhX1JlY29yZDsKICAgICAgVGhlX1R5cGUgICAgIDogb3V0IFBsb3RfU3ltYm9sX1R5cGU7CiAg ICAgIFN0eWxlICAgICAgICA6IG91dCBQbG90X1N5bWJvbF9TdHlsZTsKICAgICAgU2l6ZSAgICAg ICAgIDogb3V0IEdpbnQ7CiAgICAgIExpbmVfV2lkdGggICA6IG91dCBHaW50OwogICAgICBDb2xv ciAgICAgICAgOiBvdXQgR2RrLkNvbG9yLkdka19Db2xvcjsKICAgICAgQm9yZGVyX0NvbG9yIDog b3V0IEdkay5Db2xvci5HZGtfQ29sb3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbAog ICAgICAgIChEYXRhICAgICAgICAgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgVGhlX1R5cGUg ICAgIDogb3V0IFBsb3RfU3ltYm9sX1R5cGU7CiAgICAgICAgIFN0eWxlICAgICAgICA6IG91dCBQ bG90X1N5bWJvbF9TdHlsZTsKICAgICAgICAgU2l6ZSAgICAgICAgIDogb3V0IEdpbnQ7CiAgICAg ICAgIExpbmVfV2lkdGggICA6IG91dCBHaW50OwogICAgICAgICBDb2xvciAgICAgICAgOiBTeXN0 ZW0uQWRkcmVzczsKICAgICAgICAgQm9yZGVyX0NvbG9yIDogU3lzdGVtLkFkZHJlc3MpOwogICAg ICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X3N5bWJvbCIp OwogICAgICBDLCBCIDogYWxpYXNlZCBHZGtfQ29sb3I7CiAgIGJlZ2luCiAgICAgIEludGVybmFs IChHZXRfT2JqZWN0IChEYXRhKSwgVGhlX1R5cGUsIFN0eWxlLCBTaXplLCBMaW5lX1dpZHRoLAog ICAgICAgICAgICAgICAgQydBZGRyZXNzLCBCJ0FkZHJlc3MpOwogICAgICBDb2xvciA6PSBDOwog ICAgICBCb3JkZXJfQ29sb3IgOj0gQjsKICAgZW5kIEdldF9TeW1ib2w7CgogICAtLS0tLS0tLS0t LS0tLS0tLS0tCiAgIC0tIFNldF9Db25uZWN0b3IgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQoK ICAgcHJvY2VkdXJlIFNldF9Db25uZWN0b3IKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9E YXRhX1JlY29yZDsgQ29ubmVjdG9yIDogUGxvdF9Db25uZWN0b3IpCiAgIGlzCiAgICAgIHByb2Nl ZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBDb25uZWN0b3IgOiBHaW50KTsK ICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9jb25u ZWN0b3IiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBQbG90 X0Nvbm5lY3RvcidQb3MgKENvbm5lY3RvcikpOwogICBlbmQgU2V0X0Nvbm5lY3RvcjsKCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X0Nvbm5lY3RvciAtLQogICAtLS0tLS0tLS0tLS0t LS0tLS0tCgogICBmdW5jdGlvbiBHZXRfQ29ubmVjdG9yIChEYXRhIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gUGxvdF9Db25uZWN0b3IKICAgaXMKICAgICAgZnVu Y3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEdpbnQ7CiAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfY29ubmVjdG9y Iik7CiAgIGJlZ2luCiAgICAgIHJldHVybiBQbG90X0Nvbm5lY3RvcidWYWwgKEludGVybmFsIChH ZXRfT2JqZWN0IChEYXRhKSkpOwogICBlbmQgR2V0X0Nvbm5lY3RvcjsKCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgLS0gU2V0X0xpbmVfQXR0cmlidXRlcyAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0xpbmVfQXR0cmlidXRlcwogICAgIChE YXRhICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgU3R5bGUgOiBQbG90X0xp bmVfU3R5bGU7CiAgICAgIFdpZHRoIDogR2Zsb2F0OwogICAgICBDb2xvciA6IEdkay5Db2xvci5H ZGtfQ29sb3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbAogICAgICAgIChEYXRhICA6 IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBTdHlsZSA6IEdpbnQ7CiAgICAgICAgIFdpZHRoIDog R2Zsb2F0OwogICAgICAgICBDb2xvciA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIElt cG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9saW5lX2F0dHJpYnV0ZXMiKTsK ICAgICAgQyA6IGFsaWFzZWQgR2RrX0NvbG9yIDo9IENvbG9yOwogICBiZWdpbgogICAgICBJbnRl cm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFBsb3RfTGluZV9TdHlsZSdQb3MgKFN0eWxlKSwgV2lk dGgsCiAgICAgICAgICAgICAgICBDJ0FkZHJlc3MpOwogICBlbmQgU2V0X0xpbmVfQXR0cmlidXRl czsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X0xpbmVfQXR0cmlidXRl cyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgR2V0X0xpbmVf QXR0cmlidXRlcwogICAgIChEYXRhICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAg ICAgU3R5bGUgOiBvdXQgUGxvdF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IG91dCBHZmxvYXQ7 CiAgICAgIENvbG9yIDogb3V0IEdkay5Db2xvci5HZGtfQ29sb3IpCiAgIGlzCiAgICAgIHByb2Nl ZHVyZSBJbnRlcm5hbAogICAgICAgIChEYXRhICA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBT dHlsZSA6IG91dCBQbG90X0xpbmVfU3R5bGU7CiAgICAgICAgIFdpZHRoIDogb3V0IEdmbG9hdDsK ICAgICAgICAgQ29sb3IgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMs IEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfbGluZV9hdHRyaWJ1dGVzIik7CiAgICAgIEMg OiBhbGlhc2VkIEdka19Db2xvcjsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3Qg KERhdGEpLCBTdHlsZSwgV2lkdGgsIEMnQWRkcmVzcyk7CiAgICAgIENvbG9yIDo9IEM7CiAgIGVu ZCBHZXRfTGluZV9BdHRyaWJ1dGVzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBT ZXRfWF9BdHRyaWJ1dGVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVy ZSBTZXRfWF9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVj b3JkOwogICAgICBTdHlsZSA6IFBsb3RfTGluZV9TdHlsZTsKICAgICAgV2lkdGggOiBHZmxvYXQ7 CiAgICAgIENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcikKICAgaXMKICAgICAgcHJvY2VkdXJl IEludGVybmFsCiAgICAgICAgKERhdGEgIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIFN0eWxl IDogR2ludDsKICAgICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAgICAgIENvbG9yIDogU3lzdGVt LkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2Rh dGFfc2V0X3hfYXR0cmlidXRlcyIpOwogICAgICBDIDogYWxpYXNlZCBHZGtfQ29sb3IgOj0gQ29s b3I7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgUGxvdF9MaW5l X1N0eWxlJ1BvcyAoU3R5bGUpLCBXaWR0aCwKICAgICAgICAgICAgICAgIEMnQWRkcmVzcyk7CiAg IGVuZCBTZXRfWF9BdHRyaWJ1dGVzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBT ZXRfWV9BdHRyaWJ1dGVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVy ZSBTZXRfWV9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVj b3JkOwogICAgICBTdHlsZSA6IFBsb3RfTGluZV9TdHlsZTsKICAgICAgV2lkdGggOiBHZmxvYXQ7 CiAgICAgIENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcikKICAgaXMKICAgICAgcHJvY2VkdXJl IEludGVybmFsCiAgICAgICAgKERhdGEgIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIFN0eWxl IDogR2ludDsKICAgICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAgICAgIENvbG9yIDogU3lzdGVt LkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2Rh dGFfc2V0X3lfYXR0cmlidXRlcyIpOwogICAgICBDIDogYWxpYXNlZCBHZGtfQ29sb3IgOj0gQ29s b3I7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgUGxvdF9MaW5l X1N0eWxlJ1BvcyAoU3R5bGUpLCBXaWR0aCwKICAgICAgICAgICAgICAgIEMnQWRkcmVzcyk7CiAg IGVuZCBTZXRfWV9BdHRyaWJ1dGVzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBT ZXRfWl9BdHRyaWJ1dGVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVy ZSBTZXRfWl9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVj b3JkOwogICAgICBTdHlsZSA6IFBsb3RfTGluZV9TdHlsZTsKICAgICAgV2lkdGggOiBHZmxvYXQ7 CiAgICAgIENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcikKICAgaXMKICAgICAgcHJvY2VkdXJl IEludGVybmFsCiAgICAgICAgKERhdGEgIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIFN0eWxl IDogR2ludDsKICAgICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAgICAgIENvbG9yIDogU3lzdGVt LkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2Rh dGFfc2V0X3pfYXR0cmlidXRlcyIpOwogICAgICBDIDogYWxpYXNlZCBHZGtfQ29sb3IgOj0gQ29s b3I7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgUGxvdF9MaW5l X1N0eWxlJ1BvcyAoU3R5bGUpLCBXaWR0aCwKICAgICAgICAgICAgICAgIEMnQWRkcmVzcyk7CiAg IGVuZCBTZXRfWl9BdHRyaWJ1dGVzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTaG93 X1hlcnJiYXJzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTaG93X1hl cnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSBpcwogICAgICBwcm9j ZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBv cnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zaG93X3hlcnJiYXJzIik7CiAgIGJlZ2lu CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBTaG93X1hlcnJiYXJz OwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTaG93X1llcnJiYXJzIC0tCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTaG93X1llcnJiYXJzIChEYXRhIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkKSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEg OiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3Rr X3Bsb3RfZGF0YV9zaG93X3llcnJiYXJzIik7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRf T2JqZWN0IChEYXRhKSk7CiAgIGVuZCBTaG93X1llcnJiYXJzOwoKICAgLS0tLS0tLS0tLS0tLS0t LS0tLQogICAtLSBTaG93X1plcnJiYXJzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHBy b2NlZHVyZSBTaG93X1plcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3Jk KSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAg ICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zaG93X3plcnJi YXJzIik7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVu ZCBTaG93X1plcnJiYXJzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBIaWRlX1hlcnJi YXJzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBIaWRlX1hlcnJiYXJz IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSBpcwogICAgICBwcm9jZWR1cmUg SW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMs IEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9oaWRlX3hlcnJiYXJzIik7CiAgIGJlZ2luCiAgICAg IEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBIaWRlX1hlcnJiYXJzOwoKICAg LS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBIaWRlX1llcnJiYXJzIC0tCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0KCiAgIHByb2NlZHVyZSBIaWRlX1llcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkKSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0 ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9oaWRlX3llcnJiYXJzIik7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0 IChEYXRhKSk7CiAgIGVuZCBIaWRlX1llcnJiYXJzOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAtLSBIaWRlX1plcnJiYXJzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVy ZSBIaWRlX1plcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSBpcwog ICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHBy YWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9oaWRlX3plcnJiYXJzIik7 CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBIaWRl X1plcnJiYXJzOwoKICAgLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEZpbGxfQXJlYSAtLQogICAtLS0t LS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBGaWxsX0FyZWEgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQ7IEZpbGwgOiBCb29sZWFuKSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJu YWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgRmlsbCA6IEdpbnQpOwogICAgICBwcmFnbWEgSW1w b3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZmlsbF9hcmVhIik7CiAgIGJlZ2luCiAg ICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgQm9vbGVhbidQb3MgKEZpbGwpKTsKICAg ZW5kIEZpbGxfQXJlYTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEFyZWFfSXNfRmls bGVkIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBBcmVhX0lzX0ZpbGxl ZCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkKICAgICAgcmV0dXJuIEJvb2xl YW4KICAgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcykg cmV0dXJuIEdpbnQ7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9hcmVhX2lzX2ZpbGxlZCIpOwogICBiZWdpbgogICAgICByZXR1cm4gQm9vbGVhbidWYWwg KEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSkpOwogICBlbmQgQXJlYV9Jc19GaWxsZWQ7Cgog ICAtLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9MZWdlbmQgLS0KICAgLS0tLS0tLS0tLS0tLS0t LQoKICAgcHJvY2VkdXJlIFNldF9MZWdlbmQgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9S ZWNvcmQ7IExlZ2VuZCA6IFN0cmluZykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChE YXRhIDogU3lzdGVtLkFkZHJlc3M7IExlZ2VuZCA6IFN0cmluZyk7CiAgICAgIHByYWdtYSBJbXBv cnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfbGVnZW5kIik7CiAgIGJlZ2luCiAg ICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTGVnZW5kICYgQVNDSUkuTlVMKTsKICAg ZW5kIFNldF9MZWdlbmQ7CgogICAtLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTaG93X0xlZ2VuZCAt LQogICAtLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNob3dfTGVnZW5kIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwg KERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFs LCAiZ3RrX3Bsb3RfZGF0YV9zaG93X2xlZ2VuZCIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAo R2V0X09iamVjdCAoRGF0YSkpOwogICBlbmQgU2hvd19MZWdlbmQ7CgogICAtLS0tLS0tLS0tLS0t LS0tLQogICAtLSBIaWRlX0xlZ2VuZCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2Vk dXJlIEhpZGVfTGVnZW5kIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSBpcwog ICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHBy YWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9oaWRlX2xlZ2VuZCIpOwog ICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpOwogICBlbmQgSGlkZV9M ZWdlbmQ7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTZXRfTGVnZW5kX1By ZWNpc2lvbiAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNl dF9MZWdlbmRfUHJlY2lzaW9uCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQ7IFByZWNpc2lvbiA6IEdpbnQpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0 YSA6IFN5c3RlbS5BZGRyZXNzOyBQcmVjaXNpb24gOiBHaW50KTsKICAgICAgcHJhZ21hIEltcG9y dCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9sZWdlbmRfcHJlY2lzaW9uIik7CiAg IGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgUHJlY2lzaW9uKTsKICAg ZW5kIFNldF9MZWdlbmRfUHJlY2lzaW9uOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAgLS0gR2V0X0xlZ2VuZF9QcmVjaXNpb24gLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCiAgIGZ1bmN0aW9uIEdldF9MZWdlbmRfUHJlY2lzaW9uIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gR2ludAogICBpcwogICAgICBmdW5jdGlvbiBJ bnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2ludDsKICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9sZWdlbmRfcHJlY2lzaW9u Iik7CiAgIGJlZ2luCiAgICAgIHJldHVybiBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpOwog ICBlbmQgR2V0X0xlZ2VuZF9QcmVjaXNpb247CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAtLSBTZXRfR3JhZGllbnRfTWFzayAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIFNldF9HcmFkaWVudF9NYXNrCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQ7IE1hc2sgOiBQbG90X0dyYWRpZW50KQogICBpcwogICAgICBwcm9jZWR1cmUg SW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgTWFzayA6IEdpbnQpOwogICAgICBwcmFn bWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2dyYWRpZW50X21hc2si KTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBQbG90X0dyYWRp ZW50J1BvcyAoTWFzaykpOwogICBlbmQgU2V0X0dyYWRpZW50X01hc2s7CgogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAtLSBHZXRfR3JhZGllbnRfTWFzayAtLQogICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X0dyYWRpZW50X01hc2sgKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQpCiAgICAgIHJldHVybiBQbG90X0dyYWRpZW50CiAgIGlzCiAg ICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBHaW50 OwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2dy YWRpZW50X21hc2siKTsKICAgYmVnaW4KICAgICAgcmV0dXJuIFBsb3RfR3JhZGllbnQnVmFsIChJ bnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSkpKTsKICAgZW5kIEdldF9HcmFkaWVudF9NYXNrOwoK ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR3JhZGllbnRfU2V0X1Zpc2libGUg LS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBHcmFkaWVudF9T ZXRfVmlzaWJsZQogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBWaXNp YmxlIDogQm9vbGVhbikKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lz dGVtLkFkZHJlc3M7IFZpc2libGUgOiBHaW50KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50 ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dyYWRpZW50X3NldF92aXNpYmxlIik7CiAgIGJlZ2luCiAg ICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgQm9vbGVhbidQb3MgKFZpc2libGUpKTsK ICAgZW5kIEdyYWRpZW50X1NldF9WaXNpYmxlOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAtLSBHcmFkaWVudF9WaXNpYmxlIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1 bmN0aW9uIEdyYWRpZW50X1Zpc2libGUgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQpCiAgICAgIHJldHVybiBCb29sZWFuCiAgIGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChE YXRhIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBHaW50OwogICAgICBwcmFnbWEgSW1wb3J0IChD LCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ3JhZGllbnRfdmlzaWJsZSIpOwogICBiZWdpbgog ICAgICByZXR1cm4gQm9vbGVhbidWYWwgKEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSkpOwog ICBlbmQgR3JhZGllbnRfVmlzaWJsZTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg LS0gU2V0X0dyYWRpZW50X0NvbG9ycyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgog ICBwcm9jZWR1cmUgU2V0X0dyYWRpZW50X0NvbG9ycwogICAgIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkOwogICAgICBNaW4sIE1heCA6IEdkay5Db2xvci5HZGtfQ29sb3IpCiAg IGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSwgTWluLCBNYXggOiBTeXN0ZW0uQWRk cmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9z ZXRfZ3JhZGllbnRfY29sb3JzIik7CiAgICAgIE1pIDogYWxpYXNlZCBHZGtfQ29sb3IgOj0gTWlu OwogICAgICBNYSA6IGFsaWFzZWQgR2RrX0NvbG9yIDo9IE1heDsKICAgYmVnaW4KICAgICAgSW50 ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBNaSdBZGRyZXNzLCBNYSdBZGRyZXNzKTsKICAgZW5k IFNldF9HcmFkaWVudF9Db2xvcnM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0t IEdldF9HcmFkaWVudF9Db2xvcnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIEdldF9HcmFkaWVudF9Db2xvcnMKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZDsKICAgICAgTWluLCBNYXggOiBvdXQgR2RrLkNvbG9yLkdka19Db2xvcikK ICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhLCBNaW4sIE1heCA6IFN5c3RlbS5B ZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRh X2dldF9ncmFkaWVudF9jb2xvcnMiKTsKICAgICAgTWksIE1hIDogYWxpYXNlZCBHZGtfQ29sb3I7 CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTWknQWRkcmVzcywg TWEnQWRkcmVzcyk7CiAgICAgIE1pbiA6PSBNaTsKICAgICAgTWF4IDo9IE1hOwogICBlbmQgR2V0 X0dyYWRpZW50X0NvbG9yczsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTZXRfR3JhZGll bnQgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0dyYWRpZW50CiAg ICAgKERhdGEgICAgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBNaW4sIE1h eCA6IEdkb3VibGU7CiAgICAgIE5sZXZlbHMgIDogR2ludCkKICAgaXMKICAgICAgcHJvY2VkdXJl IEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IE1pbiwgTWF4IDogR2RvdWJsZTsgTiA6 IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFf c2V0X2dyYWRpZW50Iik7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRh KSwgTWluLCBNYXgsIE5sZXZlbHMpOwogICBlbmQgU2V0X0dyYWRpZW50OwoKICAgLS0tLS0tLS0t LS0tLS0tLS0tCiAgIC0tIEdldF9HcmFkaWVudCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0KCiAg IHByb2NlZHVyZSBHZXRfR3JhZGllbnQKICAgICAoRGF0YSAgICAgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQ7CiAgICAgIE1pbiwgTWF4IDogb3V0IEdkb3VibGU7CiAgICAgIE5sZXZlbHMg IDogb3V0IEdpbnQpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3Rl bS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgIE1pbiwgTWF4IDogb3V0IEdkb3Vi bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgTiA6IG91dCBHaW50KTsKICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9ncmFkaWVudCIpOwogICBi ZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE1pbiwgTWF4LCBObGV2ZWxz KTsKICAgZW5kIEdldF9HcmFkaWVudDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAt LSBHZXRfR3JhZGllbnRfTGV2ZWwgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBw cm9jZWR1cmUgR2V0X0dyYWRpZW50X0xldmVsCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkOwogICAgICBMZXZlbCA6IEdkb3VibGU7CiAgICAgIENvbG9yIDogb3V0IEdk ay5Db2xvci5HZGtfQ29sb3IpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6 IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgIExldmVsIDogR2RvdWJs ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciA6IFN5c3RlbS5BZGRyZXNzKTsKICAg ICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9ncmFkaWVu dF9sZXZlbCIpOwogICAgICBDIDogYWxpYXNlZCBHZGtfQ29sb3I7CiAgIGJlZ2luCiAgICAgIElu dGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTGV2ZWwsIEMnQWRkcmVzcyk7CiAgICAgIENvbG9y IDo9IEM7CiAgIGVuZCBHZXRfR3JhZGllbnRfTGV2ZWw7CgogICAtLS0tLS0tLS0tLS0tLQogICAt LSBTZXRfTGluayAtLQogICAtLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9MaW5rCiAg ICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIExpbmsgOiBTeXN0 ZW0uQWRkcmVzcykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhLCBMaW5rIDog U3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19w bG90X2RhdGFfc2V0X2xpbmsiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3Qg KERhdGEpLCBMaW5rKTsKICAgZW5kIFNldF9MaW5rOwoKICAgLS0tLS0tLS0tLS0tLS0KICAgLS0g R2V0X0xpbmsgLS0KICAgLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9MaW5rIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gU3lzdGVtLkFkZHJl c3MKICAgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcykg cmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwg Imd0a19wbG90X2RhdGFfZ2V0X2xpbmsiKTsKICAgYmVnaW4KICAgICAgcmV0dXJuIEludGVybmFs IChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBHZXRfTGluazsKCiAgIC0tLS0tLS0tLS0tLS0t LS0tCiAgIC0tIFJlbW92ZV9MaW5rIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1 cmUgUmVtb3ZlX0xpbmsgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIGlzCiAg ICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3JlbW92ZV9saW5rIik7CiAg IGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBSZW1vdmVf TGluazsKZW5kIEd0ay5FeHRyYS5QbG90X0RhdGE7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGduYXRidWcv Z3RrLWV4dHJhLXBsb3RfZGF0YS5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAw MAAwMDAwMDA1NTcxMAAwNzU1MTEwNzYzMgAwMTU3MTcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9v bGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICBDb3B5cmlnaHQgKEMpIDIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAg ICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0g TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0K LS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg bm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIg ZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3Ug bGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhl Y3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3Vs dGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52 YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxl ICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tICBUaGlzIHBhY2thZ2UgZGVmaW5lcyB0 aGUgcm9vdCBvZiB0aGUgcGxvdCBoaWVyYXJjaHkuIEl0IGRlZmluZXMgc2V2ZXJhbAotLSAgZGlz cGxheSBzdHJhdGVnaWVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2hvdyBzY2llbnRpZmljIGRhdGEg b24gdGhlCi0tICBzY3JlZW4gKHNlZSB0aGUgY2hpbGRyZW4gZm9yIDNELCBwb2xhciwgYmFycywu Li4pCi0tCi0tICBBbGwgY29vcmRpbmF0ZXMgYXJlIGluIHBlcmNlbnQgb2YgdGhlIHRvdGFsIHNp emUgYWxsb2NhdGVzIGZvciB0aGUgZGF0YQotLSAgc2V0IChpZSB0aGUgYWN0dWFsIHBvc2l0aW9u IGlzICh4ICogd2lkdGgsIHkgKiBoZWlnaHQpLCB3aGVyZSAoeCwgeSkgaXMKLS0gIHRoZSB2YWx1 ZSBzdG9yZWQgaW4gdGhlIGRhdGEgc2V0IGFuZCAod2lkdGgsIGhlaWdodCkgaXRzIGFsbG9jYXRl ZCBzY3JlZW4KLS0gIHNpemUuCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj5ndGsr ZXh0cmEgMC45OS4xNDxjX3ZlcnNpb24+Cgp3aXRoIEdsaWI7IHVzZSBHbGliOwp3aXRoIEd0ay5X aWRnZXQ7CndpdGggR3RrYWRhLlR5cGVzOwp3aXRoIEdkay5Db2xvcjsKd2l0aCBVbmNoZWNrZWRf Q29udmVyc2lvbjsKCnBhY2thZ2UgR3RrLkV4dHJhLlBsb3RfRGF0YSBpcwoKICAgdHlwZSBHdGtf UGxvdF9EYXRhX1JlY29yZCBpcyBuZXcgR3RrLldpZGdldC5HdGtfV2lkZ2V0X1JlY29yZCB3aXRo IHByaXZhdGU7CiAgIHR5cGUgR3RrX1Bsb3RfRGF0YSBpcyBhY2Nlc3MgYWxsIEd0a19QbG90X0Rh dGFfUmVjb3JkJ0NsYXNzOwogICAtLSAgQSBzZXQgb2YgdmFsdWVzIHRoYXQgY2FuIGJlIHJlcHJl c2VudGVkIG9uIHRoZSBzY3JlZW4uIFRoZXJlIGFyZQogICAtLSAgc2V2ZXJhbCBzdHJhdGVnaWVz IHRvIHNldCB0aGUgdmFsdWVzLCBlaXRoZXIgZXhwbGljaXRlbHkgaW4geW91cgogICAtLSAgYXBw bGljYXRpb24sIG9yIGJ5IGhhdmluZyB0aGVtIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGEg ZnVuY3Rpb24uCgogICAtLS0tLS0tLS0tLQogICAtLSBUeXBlcyAtLQogICAtLS0tLS0tLS0tLQoK ICAgdHlwZSBOb19SYW5nZV9HZG91YmxlX0FycmF5IGlzIGFycmF5IChOYXR1cmFsKSBvZiBHZG91 YmxlOwogICAtLSAgQW4gYXJyYXkgb2YgdmFsdWVzLgogICAtLSAgVGhpcyBpcyB1c2VkIHRvIHJl cHJlc2VudCB0aGUgZGF0YSB2YWx1ZXMgZGlzcGxheWVkIGluIHRoZSBwbG90LgogICAtLSAgVGhp cyBhcnJheSBkb2VzIG5vdCBoYXZlIGFueSByYW5nZSBpbmZvcm1hdGlvbiAoc28gdGhhdCBpdCBj YW4gYmUKICAgLS0gIGVhc2lseSByZXR1cm5lZCBmcm9tIGEgQyBmdW5jdGlvbiwgd2l0aG91dCBy ZXF1aXJpbmcgYW4gZXh0cmEKICAgLS0gIGNvcHkgb2YgdGhlIHRhYmxlKS4gWW91IGNhbiBub3Qg dXNlICdSYW5nZSBvbiB0aGlzIGFycmF5LgoKICAgdHlwZSBOb19SYW5nZV9HZG91YmxlX0FycmF5 X0FjY2VzcyBpcyBhY2Nlc3MgYWxsIE5vX1JhbmdlX0dkb3VibGVfQXJyYXk7CiAgIC0tICBBbiBh Y2Nlc3MgdG8gYSBmbGF0IGFycmF5LgoKICAgdHlwZSBHZG91YmxlX0FycmF5X0FjY2VzcyBpcyBh Y2Nlc3MgYWxsIEdsaWIuR2RvdWJsZV9BcnJheTsKICAgLS0gIFRoZSByZWFzb24gd2UgdXNlIHRo aXMgdHlwZSBpbiB0aGUgZnVuY3Rpb25zIGJlbG93IGlzIGJlY2F1c2UKICAgLS0gIGd0aystZXh0 cmEgZG9lcyBub3Qga2VlcCBhIGNvcHkgb2YgdGhlIGFycmF5cywgYnV0IHBvaW50cyB0byB0aGUg b25lCiAgIC0tICBnaXZlbiBpbiBhcmd1bWVudC4gVGh1cywgdGhlIEFkYSBhcnJheXMgc2hvdWxk IG5vdCBiZSBhbGxvY2F0ZWQgb24gdGhlCiAgIC0tICBzdGFjaywgb3IgYXQgbGVhc3QgdGhleSBz aG91bGQgYmUgYXQgbGlicmFyeSBsZXZlbC4gVXNpbmcgdGhpcyAnQWNjZXNzCiAgIC0tICB3aWxs IGZvcmNlIHRoZSBjb21waWxlciB0byBkbyB0aGUgY2hlY2sgZm9yIHVzLgoKICAgdHlwZSBQb2lu dHNfQXJyYXkgaXMgcmVjb3JkCiAgICAgIFBvaW50cyAgICAgOiBOb19SYW5nZV9HZG91YmxlX0Fy cmF5X0FjY2VzczsKICAgICAgTnVtX1BvaW50cyA6IEdpbnQgOj0gMDsKICAgZW5kIHJlY29yZDsK ICAgLS0gIFRoZSBwb2ludHMgYXJlIGluZGV4ZWQgZnJvbSAwIHRvIE51bV9Qb2ludHMtMS4KICAg LS0gIE5vdGUgdGhhdCB5b3UgY2FuJ3QgdXNlICdSYW5nZSwgJ0ZpcnN0IG9yICdMYXN0IG9uIFBv aW50cy4KCgogICB0eXBlIFBsb3RfQ29ubmVjdG9yIGlzIChDb25uZWN0X05vbmUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tICBObyBjb25uZWN0aW9uCgogICAgICAgICAgICAgICAgICAg ICAgICAgICBDb25uZWN0X1N0cmFpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAtLSAg c3RyYWlnaHQgbGluZQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdF9TcGxpbmUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tICBzcGxpbmUgb3IgQmV6aWVyIGN1cnZlCgog ICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0X0h2X1N0ZXAsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tICBIb3Jpem9udGFsIHRoZW4gdmVydGljYWwKCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIENvbm5lY3RfVmhfU3RlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0gIFZlcnRpY2FsIHRoZW4gaG9yaXpvbnRhbAoKICAgICAgICAgICAgICAgICAgICAgICAgICAg Q29ubmVjdF9NaWRkbGVfU3RlcAogICAgICAgICAgICAgICAgICAgICAgICAgICAtLSAgU3BsaXQg aW4gdGhlIG1pZGRsZQogICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAtLSAgVGhlIHR5 cGUgb2YgY29ubmVjdGlvbiBiZXR3ZWVuIHR3byBhZGphY2VudCBwb2ludHMgaW4gYSBncmFwaC4K CiAgIHR5cGUgUGxvdF9HcmFkaWVudCBpcyBuZXcgSW50ZWdlcjsKICAgLS0gIEluZGljYXRlIHdo aWNoIGNvbG9yIGNvbXBvbmVudHMgdmFyeSBhbG9uZyB0aGUgZ3JhZGllbnQKCiAgIEdyYWRpZW50 X0ggOiBjb25zdGFudCBQbG90X0dyYWRpZW50OyAtLSAgSHVlCiAgIEdyYWRpZW50X1YgOiBjb25z dGFudCBQbG90X0dyYWRpZW50OyAtLSAgVmFsdWUKICAgR3JhZGllbnRfUyA6IGNvbnN0YW50IFBs b3RfR3JhZGllbnQ7IC0tICBTYXR1cmF0aW9uCgogICB0eXBlIFBsb3RfU3ltYm9sX1R5cGUgaXMg KFN5bWJvbF9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9TcXVhcmUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX0NpcmNsZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTeW1ib2xfVXBfVHJpYW5nbGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3ltYm9sX0Rvd25fVHJpYW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3ltYm9sX1JpZ2h0X1RyaWFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5 bWJvbF9MZWZ0X1RyaWFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9E aWFtb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9QbHVzLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9Dcm9zcywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTeW1ib2xfU3RhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xf RG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9JbXB1bHNlKTsKICAgLS0g IFR5cGUgb2Ygc3ltYm9sIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBwb2ludHMgaW4gYSBncmFwaC4K CiAgIHR5cGUgUGxvdF9TeW1ib2xfU3R5bGUgaXMgKFN5bWJvbF9FbXB0eSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3ltYm9sX0ZpbGxlZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3ltYm9sX09wYXF1ZSk7CiAgIC0tICBTdHlsZSB1c2VkIHRvIGRyYXcgdGhlIHBvaW50 cyBpbiBhIGdyYXBoLgoKICAgdHlwZSBQbG90X0xpbmVfU3R5bGUgaXMgKExpbmVfTm9uZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVfU29saWQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaW5lX0RvdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVfRGFz aGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9Eb3RfRGFzaCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpbmVfRG90X0RvdF9EYXNoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGluZV9Eb3RfRGFzaF9EYXNoKTsKICAgLS0gIExpbmVzIHVzZWQgdG8gY29ubmVj dCB0d28gYWRqYWNlbnQgcG9pbnRzIGluIGEgZ3JhcGguCgogICAtLS0tLS0tLS0tLS0tLS0tLS0t LQogICAtLSBQbG90IGZ1bmN0aW9ucyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAg UGxvdCBmdW5jdGlvbnMgc2hvdWxkIGdlbmVyYXRlIGEgdW5pcXVlIFkgdmFsdWUgZ2l2ZW4gYSBw YXJhbWV0ZXIuCiAgIC0tICBUaGVzZSBjYW4gYmUgdXNlZCBmb3IgaW5zdGFuY2UgdG8gcmVwcmVz ZW50IGV4YWN0bHkgbWF0aGVtYXRpY2FsCiAgIC0tICBmdW5jdGlvbnMuCiAgIC0tICBOb3RlIHRo YXQgZHVlIHRvIHRoZSBDIGludGVyZmFjZSwgdGhlIHN1YnByb2dyYW1zIGluIEd0ay5FeHRyYS5Q bG90IGFuZAogICAtLSAgaW4gdGhpcyBwYWNrYWdlIGV4cGVjdCBmdW5jdGlvbnMgdGhhdCB0YWtl IGEgU3lzdGVtLkFkZHJlc3MgYXMgYQogICAtLSAgcGFyYW1ldGVyLiBIb3dldmVyLCBzaW5jZSBp dCBpcyBtdWNoIG1vcmUgY29udmVuaWVudCBpbiB5b3VyIGFwcGxpY2F0aW9uCiAgIC0tICB0byBn ZXQgYSBHdGtfUGxvdF9SZWNvcmQgZGlyZWN0bHksIEd0a0FkYSBpbmNsdWRlcyBhIGdlbmVyaWMg ZnVuY3Rpb24KICAgLS0gIHRoYXQgYXV0b21hdGljYWxseSBkb2VzIHRoZSBjb252ZXJzaW9uIGZv ciB5b3UgKHNlZQogICAtLSAgR3RrLlBsb3QuR2VuZXJpY19QbG90X0Z1bmN0aW9uKS4KCiAgIHR5 cGUgUGxvdF9GdW5jdGlvbiBpcyBhY2Nlc3MgZnVuY3Rpb24KICAgICAoUGxvdCAgOiBTeXN0ZW0u QWRkcmVzczsKICAgICAgU2V0ICAgOiBHdGtfUGxvdF9EYXRhOwogICAgICBYICAgICA6IEdkb3Vi bGU7CiAgICAgIEVycm9yIDogYWNjZXNzIEdib29sZWFuKQogICAgIHJldHVybiBHZG91YmxlOwog ICAtLSAgRnVuY3Rpb24gdXNlZCBmb3IgcGxvdHRpbmcuCiAgIC0tICBJdCBzaG91bGQgcmV0dXJu IHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggWCBpbiBpdHMgZ3JhcGgsIGFuZCBzZXQKICAgLS0g IEVycm9yIHRvIFRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNhbGN1bGF0aW5nIHRo ZSB2YWx1ZS4KCiAgIHByYWdtYSBDb252ZW50aW9uIChDLCBQbG90X0Z1bmN0aW9uKTsKCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gQ3JlYXRpbmcgYSBEYXRhIHNldCAtLQogICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgR3RrX05ldyAoRGF0YSA6IG91 dCBHdGtfUGxvdF9EYXRhOyBGdW5jIDogUGxvdF9GdW5jdGlvbiA6PSBudWxsKTsKICAgLS0gIENy ZWF0ZXMgYSBuZXcgZGF0YSBzZXQuIEl0cyB2YWx1ZXMgY2FuIGVpdGhlciBiZSBnZW5lcmF0ZWQg YXV0b21hdGljYWxseQogICAtLSAgZnJvbSBGdW5jLCBvciB3aWxsIGhhdmUgdG8gYmUgc2V0IGV4 cGxpY2l0ZWx5IHVzaW5nIHRoZSBvdGhlcgogICAtLSAgc3VicHJvZ3JhbXMgaW4gdGhpcyBwYWNr YWdlLgoKICAgcHJvY2VkdXJlIEluaXRpYWxpemUKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZCdDbGFzczsgRnVuYyA6IFBsb3RfRnVuY3Rpb24gOj0gbnVsbCk7CiAgIC0t ICBJbnRlcm5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KICAgLS0gIFNlZSB0aGUgc2VjdGlv biAiQ3JlYXRpbmcgeW91ciBvd24gd2lkZ2V0cyIgaW4gdGhlIGRvY3VtZW50YXRpb24uCgogICBm dW5jdGlvbiBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSBp bnRlcm5hbCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBHdGtfUGxvdF9EYXRhLgoKICAgcHJvY2Vk dXJlIFNldF9OYW1lIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBOYW1lIDog U3RyaW5nKTsKICAgLS0gIFNldCB0aGUgbmFtZSB1c2VkIGludGVybmFsbHkgZm9yIHRoYXQgZGF0 YXNldC4KICAgLS0gIFRoaXMgbmFtZSBkb2VzIG5vdCBhcHBlYXIgYW55d2hlcmUgb24gdGhlIHNj cmVlbiwgYnV0IGl0IGlzIGVhc2llciB0bwogICAtLSAgZmluZCB0aGUgZGF0YXNldCBhZnRlcndh cmQgYnkgdXNpbmcgdGhpcyBuYW1lLgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBEcmF3 aW5nIGEgc2V0IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIEFsdGhvdWdoIGEgc2V0 IGlzIGJhc2ljYWxseSBhIGxpc3Qgb2YgdmFsdWVzLCBpdCBpcyBjbG9zZWx5IGFzc29jaWF0ZWQK ICAgLS0gIHdpdGggaXRzIHJlcHJlc2VudGF0aW9uIG9uIHRoZSBzY3JlZW4gKHNlZSB0aGUgY2hp bGRyZW4gb2YgR3RrX1Bsb3RfRGF0YQogICAtLSAgZm9yIHZhcmlvdXMgcG9zc2libGUgcmVwcmVz ZW50YXRpb25zKS4KICAgLS0gIFRoZSBHdGsuRXh0cmEgcGFja2FnZXMgYXJlIGRlc2lnbmVkIHNv IHRoYXQgdGhlIGRyYXdpbmcgY2FuIGJlIGRvbmUKICAgLS0gIGVpdGhlciB0byB0aGUgc2NyZWVu ICh0aHJvdWdoIGEgR2RrIGFkYXB0ZXIpLCB0byBhIHBvc3RzY3JpcHQgZmlsZSBmb3IKICAgLS0g IGVhc3kgcHJpbnRpbmcsIG9yIHRvIGFueSBvdGhlciBtZWRpYS4KCiAgIHByb2NlZHVyZSBQYWlu dCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCk7CiAgIC0tICBFbWl0cyB0aGUg ImRyYXdfZGF0YSIgc2lnbmFsIHRvIHJlcXVlc3QgYSByZWRyYXdpbmcgb2YgdGhlIGRhdGEgc2V0 LgoKICAgcHJvY2VkdXJlIERyYXdfUG9pbnRzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFf UmVjb3JkOyBOIDogR2ludCk7CiAgIC0tICBEcmF3IGF0IG1vc3QgTiB2YWx1ZXMgb2YgdGhlIERh dGEgc2V0IG9uIHRoZSBzY3JlZW4uIElmIE4gaXMgZ3JlYXRlcgogICAtLSAgdGhhbiB0aGUgYWN0 dWFsIG51bWJlciBvZiB2YWx1ZXMgaW4gRGF0YSwgdGhlbiB0aGV5IGFyZSBhbGwgZGlzcGxheWVk LgoKICAgcHJvY2VkdXJlIERyYXdfU3ltYm9sIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFf UmVjb3JkOyBYLCBZIDogR2RvdWJsZSk7CiAgIC0tICBEcmF3IHRoZSBjdXJyZW50IHN5bWJvbCAo c2VlIFNldF9TeW1ib2wpIGF0IHNwZWNpZmljIGNvb3JkaW5hdGVzIG9uCiAgIC0tICB0aGUgc2Ny ZWVuLgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBNYW5pcHVsYXRpbmcgdmFs dWVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfUG9p bnRzCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFggICAg OiBHZG91YmxlX0FycmF5X0FjY2VzczsKICAgICAgWSAgICA6IEdkb3VibGVfQXJyYXlfQWNjZXNz OwogICAgICBEeCAgIDogR2RvdWJsZV9BcnJheV9BY2Nlc3M7CiAgICAgIER5ICAgOiBHZG91Ymxl X0FycmF5X0FjY2Vzcyk7CiAgIC0tICBTZXQgc29tZSBleHBsaWNpdCBwb2ludHMgaW4gdGhlIHNl dC4KICAgLS0gIE5vdGUgdGhhdCB0aGUgc2V0IG11c3Qgbm90IGJlIGFzc29jaWF0ZWQgd2l0aCBh IGZ1bmN0aW9uLCBvciB0aGUgcG9pbnRzCiAgIC0tICB3aWxsIHNpbXBseSBiZSBpZ25vcmVkLgog ICAtLSAgQWxsIG9mIHRoZSBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCwgdGhlIGJl aGF2aW9yIGlzIHVuZGVmaW5lZAogICAtLSAgb3RoZXJ3aXNlLgogICAtLSAgWCBhbmQgWSBhcmUg dGhlIGxpc3Qgb2YgY29vcmRpbmF0ZXMgb2YgdGhlIHBvaW50cy4KICAgLS0gIER4IGFuZCBEeSBh cmUgdGhlIGxpc3Qgb2Ygc2l6ZSAocHJlY2lzaW9uKSBvZiB0aGVzZSBwb2ludHMuIEEgYmlnZ2Vy CiAgIC0tICBzeW1ib2wgd2lsbCBiZSBkaXNwbGF5ZWQgZm9yIHRoZSBwb2ludCB3aG9zZSAoRHgs IER5KSB2YWx1ZSBpcyBiaWdnZXIuCgogICBwcm9jZWR1cmUgR2V0X1BvaW50cwogICAgIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBYICAgIDogb3V0IFBvaW50c19B cnJheTsKICAgICAgWSAgICA6IG91dCBQb2ludHNfQXJyYXk7CiAgICAgIER4ICAgOiBvdXQgUG9p bnRzX0FycmF5OwogICAgICBEeSAgIDogb3V0IFBvaW50c19BcnJheSk7CiAgIC0tICBSZXR1cm4g dGhlIHZhbHVlIG9mIHRoZSBwb2ludHMgaW4gdGhlIHNldC4KICAgLS0gIE51bGwtbGVuZ3RoIGFy cmF5cyBhcmUgcmV0dXJuZWQgaWYgdGhlIHNldCBpcyBhc3NvY2lhdGVkIHdpdGggYQogICAtLSAg ZnVuY3Rpb24sIHNpbmNlIG5vIGV4cGxpY2l0IHBvaW50IGhhcyBiZWVuIHNldC4KICAgLS0gIFNl ZSBTZXRfUG9pbnRzIGZvciBhIGRlZmluaXRpb24gb2YgWCwgWSwgRHggYW5kIER5LgoKICAgcHJv Y2VkdXJlIFNldF9YCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFgg OiBHZG91YmxlX0FycmF5X0FjY2Vzcyk7CiAgIHByb2NlZHVyZSBTZXRfWQogICAgIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBZIDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpOwog ICBwcm9jZWR1cmUgU2V0X1oKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29y ZDsgWiA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAgcHJvY2VkdXJlIFNldF9BCiAgICAgKERh dGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IEEgOiBHZG91YmxlX0FycmF5X0FjY2Vz cyk7CiAgIC0tICBTZXQgdGhlIHZhbHVlcyBmb3Igb25lIHNwZWNpZmljIGNvb3JkaW5hdGUgaW4g dGhlIHNldC4KICAgLS0gIFRoZSBhcnJheSBtdXN0IGhhdmUgYSBsZW5ndGggb2YgR2V0X051bXBv aW50cyAoaWYgR3RrQWRhIHdhcwogICAtLSAgY29tcGlsZWQgd2l0aCBhc3NlcnRpb25zIGVuYWJs ZWQsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiB0aGUKICAgLS0gIGxlbmd0aCBhcmUg ZGlmZmVyZW50KS4KICAgLS0gIE5vIGNvcHkgb2YgdGhlIGFycmF5IGlzIG1hZGUgZm9yIGVmZmlj aWVuY3kgcmVhc29ucywgdGh1cyBtb2RpZnlpbmcKICAgLS0gIHRoZSBhcnJheSBjb250ZW50IGxh dGVyIG9uIHdpbGwgYWxzbyBtb2RpZnkgdGhlIHBsb3QuCiAgIC0tCiAgIC0tICAiQSIgaXMgdXNl ZCB0byBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBzeW1ib2xzLiBXaGVuIHBsb3R0aW5nIGJveGVz IGluCiAgIC0tICB0d28gZGltZW5zaW9ucywgIloiIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgc2l6 ZSBvZiB0aGUgYm94LgoKICAgcHJvY2VkdXJlIFNldF9EeAogICAgIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOyBEeCA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAgcHJvY2Vk dXJlIFNldF9EeQogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBEeSA6 IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAgcHJvY2VkdXJlIFNldF9EegogICAgIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBEeiA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsK ICAgLS0gIFNldCB0aGUgcHJlY2lzaW9uIG9mIHRoZSBwb2ludHMgaW4gdGhlIHNldC4gQSBiaWdn ZXIgc3ltYm9sIGlzIGRpc3BsYXllZAogICAtLSAgZm9yIHRoZSBwb2ludHMgd2hvc2UgKER4LCBE eSwgRHopIGlzIGJpZ2dlci4KICAgLS0gIFRoZSBhcnJheSBtdXN0IGhhdmUgYSBsZW5ndGggb2Yg R2V0X051bXBvaW50cyAoaWYgR3RrQWRhIHdhcwogICAtLSAgY29tcGlsZWQgd2l0aCBhc3NlcnRp b25zIGVuYWJsZWQsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiB0aGUKICAgLS0gIGxl bmd0aCBhcmUgZGlmZmVyZW50KS4KICAgLS0gIE5vIGNvcHkgb2YgdGhlIGFycmF5IGlzIG1hZGUg Zm9yIGVmZmljaWVuY3kgcmVhc29ucywgdGh1cyBtb2RpZnlpbmcKICAgLS0gIHRoZSBhcnJheSBj b250ZW50IGxhdGVyIG9uIHdpbGwgYWxzbyBtb2RpZnkgdGhlIHBsb3QuCgogICBwcm9jZWR1cmUg U2V0X0RhCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IERhIDogR2Rv dWJsZV9BcnJheV9BY2Nlc3MpOwogICAtLSAgU3BlY2lmaWVzIHRoZSBjb2xvcnMgdG8gdXNlIGZv ciB0aGUgcG9pbnRzLgogICAtLSAgVGhlIGNvbG9yIG9mIHRoZSBzeW1ib2xzIGlzIGRldGVtaW5l ZCB1c2luZyB0aGUgZ3JhZGllbnQuIHRoZSBncmFkaWVudAogICAtLSAgaGFzIChtaW4sIG1heCkg dmFsdWVzLCBhbmQgY29ycmVzcG9uZGluZyBjb2xvcnMuIFRoZSBzeW1ib2wncyBjb2xvciBpcwog ICAtLSAgaW50ZXJwb2xhdGVkIGJldHdlZW4gdGhlc2UgdmFsdWVzIHVzaW5nIGh1ZS9zYXR1cmF0 aW9uL3ZhbHVlIGRlcGVuZGluZwogICAtLSAgb24gdGhlIGdyYWRpZW50X21hc2suCgogICBmdW5j dGlvbiBHZXRfWCAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQ b2ludHNfQXJyYXk7CiAgIGZ1bmN0aW9uIEdldF9ZICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9E YXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheTsKICAgZnVuY3Rpb24gR2V0X1ogIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5OwogICBm dW5jdGlvbiBHZXRfQSAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVy biBQb2ludHNfQXJyYXk7CiAgIGZ1bmN0aW9uIEdldF9EeCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheTsKICAgZnVuY3Rpb24gR2V0X0R5IChE YXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5Owog ICBmdW5jdGlvbiBHZXRfRHogKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJl dHVybiBQb2ludHNfQXJyYXk7CiAgIGZ1bmN0aW9uIEdldF9EYSAoRGF0YSA6IGFjY2VzcyBHdGtf UGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheTsKICAgLS0gIFJldHVybiB0aGUg Y29vcmRpbmF0ZXMgZm9yIHRoZSBwb2ludHMgaW4gdGhlIHNldC4KICAgLS0gIFRoaXMgaXMgYSBk aXJlY3QgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIEMgYXJyYXksIHRodXMgbW9kaWZ5aW5nIHRo aXMKICAgLS0gIGFycmF5J3MgY29udGVudHMgYWxzbyBtb2RpZmllcyB0aGUgZ3JhcGguCiAgIC0t ICBTZWUgdGhlIGNvcnJlc3BvbmRpbmcgU2V0XyogZnVuY3Rpb25zIGZvciBhIGRlZmluaXRpb24g b2YgdGhlCiAgIC0tICBjb29yZGluYXRlcwoKICAgcHJvY2VkdXJlIFNldF9OdW1wb2ludHMgKERh dGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IE51bSA6IEdpbnQpOwogICAtLSAgU2V0 IHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgc2hvdWxkIGJlIGV4cGVjdGVkIGluIHRoZSBncmFw aC4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgcmVzaXplIGFs bCB0aGUgaW50ZXJuYWwgc3RydWN0dXJlLAogICAtLSAgaXQganVzdCBpbmRpY2F0ZXMgd2hhdCBz aXplIHRoZSBwYXJhbWV0ZXJzIHRvIFNldF9YLCBTZXRfWSwuLi4gc2hvdWxkCiAgIC0tICBoYXZl LgoKICAgZnVuY3Rpb24gR2V0X051bXBvaW50cyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRh X1JlY29yZCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIG51bWJlciBvZiBwb2ludHMg ZXhwZWN0ZWQgaW4gdGhlIGdyYXBoLgoKICAgLS0tLS0tLS0tLS0tCiAgIC0tIExhYmVscyAtLQog ICAtLS0tLS0tLS0tLS0KICAgLS0gIEVhY2ggcG9pbnQgaW4gdGhlIGRhdGEgc2V0IGNhbiBiZSBh c3NvY2lhdGVkIHdpdGggYSBsYWJlbCB0aGF0IGRlc2NyaWJlcwogICAtLSAgaXQuIFRoaXMgaXMg b25seSByZWxldmFudCBmb3IgZGF0YSBzZXRzIHdoZXJlIHlvdSBleHBsaWNpdGVseSBnaXZlCiAg IC0tICB2YWx1ZXMsIG5vdCB3aGVuIHRoZSB2YWx1ZXMgYXJlIGdlbmVyYXRlZCBieSBhIGZ1bmN0 aW9uLgoKICAgcHJvY2VkdXJlIFNldF9MYWJlbHMKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZDsKICAgICAgTGFiZWxzIDogR3RrYWRhLlR5cGVzLkNoYXJzX1B0cl9BcnJh eSk7CiAgIC0tICBTZXQgdGhlIGxhYmVscyBhc3NvY2lhdGVkIHdoaWNoIGVhY2ggcG9pbnQgaW4g dGhlIGNhbnZhcy4KICAgLS0gIFRoZXJlIG11c3QgYmUgYXQgbGVhc3QgR2V0X051bXBvaW50cyBl bGVtZW50cyBpbiBMYWJlbHMsIG9yIHRoZQogICAtLSAgYmVoYXZpb3IgaXMgdW5kZWZpbmVkCgog ICBmdW5jdGlvbiBHZXRfTGFiZWxzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3Jk KQogICAgICByZXR1cm4gR3RrYWRhLlR5cGVzLkNoYXJzX1B0cl9BcnJheTsKICAgLS0gIFJldHVy biB0aGUgbGFiZWxzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9pbnRzIGluIHRoZSBkYXRhIHNldC4K ICAgLS0gIE5vdGUgdGhhdCB0aGlzIHJldHVybnMgYSAqY29weSogb2YgdGhlIGFjdHVhbCBhcnJh eSwgYW5kIHRodXMgbWlnaHQKICAgLS0gIGJlIGV4cGVuc2l2ZSB0byBjYWxsLgoKICAgcHJvY2Vk dXJlIFNob3dfTGFiZWxzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBTaG93 IDogQm9vbGVhbik7CiAgIC0tICBJbmRpY2F0ZSB3aGV0aGVyIHRoZSBsYWJlbHMgc2hvdWxkIGJl IGRpc3BsYXllZCBuZXh0IHRvIGVhY2ggcG9pbnQgaW4KICAgLS0gIHRoZSBkYXRhIHNldC4gVGhp cyBoYXMgbm8gZWZmZWN0IGlmIG5vIGxhYmVscyB3ZXJlIHNwZWNpZmllZC4KCiAgIHByb2NlZHVy ZSBMYWJlbHNfU2V0X0F0dHJpYnV0ZXMKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRh X1JlY29yZDsKICAgICAgRm9udCA6IFN0cmluZzsKICAgICAgSGVpZ2h0IDogR2ludDsKICAgICAg QW5nbGUgIDogR2ludDsKICAgICAgRm9yZWdyb3VuZCA6IEdkay5Db2xvci5HZGtfQ29sb3I7CiAg ICAgIEJhY2tncm91bmQgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0gIFNldCB0aGUgcHJv cGVydGllcyBvZiB0aGUgbGFiZWxzCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg IC0tIFN5bWJvbHMgYW5kIENvbm5lY3RvcnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICAtLSAgRWFjaCBwb2ludCB0aGF0IGlzIGV4cGxpY2l0ZWx5IHNldCBpbiB0aGUgZGF0 YSBzZXQgdGhyb3VnaCB0aGUKICAgLS0gIFNldF9YLCBTZXRfWSwuLi4gc3VicHJvZ3JhbXMgaXMg dmlzdWFsbHkgYXNzb2NpYXRlZCB3aXRoIGEgc3ltYm9sLiBUaGVyZQogICAtLSAgYXJlIHNldmVy YWwgcmVwcmVzZW50YXRpb25zIGZvciB0aGUgc3ltYm9scy4KICAgLS0KICAgLS0gIEFsbCB0aGVz ZSBzeW1ib2xzIGFyZSB0aGVuIGNvbm5lY3RlZCBieSBhIGxpbmUsIGEgY3VydmUgb3IgYW55IG90 aGVyCiAgIC0tICBsaW5rLiBUaGVzZSBhcmUgY2FsbGVkIGNvbm5lY3RvcnMuCiAgIC0tCiAgIC0t ICBFYWNoIHN5bWJvbCwgaW4gYWRkaXRpb24gdG8gYmVpbmcgY29ubmVjdGVkIHRvIHRoZSBuZXh0 IG9uZSB3aXRoIGEKICAgLS0gIGNvbm5lY3RvciwgY2FuIGFsc28gYmUgbGlua2VkIHRvIHRoZSBh eGlzIFg9MCwgWT0wIG9yIFo9MCBzbyB0aGF0IGl0IGlzCiAgIC0tICBlYXNpZXIgdG8gcmVhZCBp dHMgY29vcmRpbmF0ZXMuIFRoZXNlIGFyZSBjYWxsZWQgZXJyYmFycywgYW5kIHRoZXkgbXVzdAog ICAtLSAgYmUgZXhwbGljaXRlbHkgc2hvd24uCgogICBwcm9jZWR1cmUgU2V0X1N5bWJvbAogICAg IChEYXRhICAgICAgICAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFRoZV9U eXBlICAgICA6IFBsb3RfU3ltYm9sX1R5cGU7CiAgICAgIFN0eWxlICAgICAgICA6IFBsb3RfU3lt Ym9sX1N0eWxlOwogICAgICBTaXplICAgICAgICAgOiBHaW50OwogICAgICBMaW5lX1dpZHRoICAg OiBHZmxvYXQ7CiAgICAgIENvbG9yICAgICAgICA6IEdkay5Db2xvci5HZGtfQ29sb3I7CiAgICAg IEJvcmRlcl9Db2xvciA6IEdkay5Db2xvci5HZGtfQ29sb3IpOwogICAtLSAgU2V0IHRoZSB2aXN1 YWwgYXNwZWN0IG9mIHRoZSBzeW1ib2xzLgoKICAgcHJvY2VkdXJlIEdldF9TeW1ib2wKICAgICAo RGF0YSAgICAgICAgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBUaGVfVHlw ZSAgICAgOiBvdXQgUGxvdF9TeW1ib2xfVHlwZTsKICAgICAgU3R5bGUgICAgICAgIDogb3V0IFBs b3RfU3ltYm9sX1N0eWxlOwogICAgICBTaXplICAgICAgICAgOiBvdXQgR2ludDsKICAgICAgTGlu ZV9XaWR0aCAgIDogb3V0IEdpbnQ7CiAgICAgIENvbG9yICAgICAgICA6IG91dCBHZGsuQ29sb3Iu R2RrX0NvbG9yOwogICAgICBCb3JkZXJfQ29sb3IgOiBvdXQgR2RrLkNvbG9yLkdka19Db2xvcik7 CiAgIC0tICBSZXR1cm4gdGhlIHZpc3VhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHN5bWJvbHMu CgogICBwcm9jZWR1cmUgU2V0X0Nvbm5lY3RvcgogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkOyBDb25uZWN0b3IgOiBQbG90X0Nvbm5lY3Rvcik7CiAgIC0tICBTZXQgdGhl IHN0eWxlIG9mIHRoZSBjb25uZWN0b3JzLgoKICAgZnVuY3Rpb24gR2V0X0Nvbm5lY3RvciAoRGF0 YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkKICAgICAgcmV0dXJuIFBsb3RfQ29ubmVj dG9yOwogICAtLSAgUmV0dXJuIHRoZSBjb25uZWN0b3Igc3R5bGUgdXNlZCBmb3IgdGhlIGRhdGEg c2V0LgoKICAgcHJvY2VkdXJlIFNldF9MaW5lX0F0dHJpYnV0ZXMKICAgICAoRGF0YSAgOiBhY2Nl c3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxlIDogUGxvdF9MaW5lX1N0eWxlOwog ICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29sb3IgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsK ICAgLS0gIFNldCB0aGUgbGluZSBzdHlsZSB1c2VkIGZvciB0aGUgY29ubmVjdG9ycy4KCiAgIHBy b2NlZHVyZSBHZXRfTGluZV9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6IG91dCBQbG90X0xpbmVfU3R5bGU7CiAgICAgIFdp ZHRoIDogb3V0IEdmbG9hdDsKICAgICAgQ29sb3IgOiBvdXQgR2RrLkNvbG9yLkdka19Db2xvcik7 CiAgIC0tICBSZXR1cm4gdGhlIGxpbmUgYXR0cmlidXRlcyB1c2VkIGZvciB0aGUgY29ubmVjdG9y cy4KCiAgIHByb2NlZHVyZSBTZXRfWF9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6IFBsb3RfTGluZV9TdHlsZTsKICAgICAg V2lkdGggOiBHZmxvYXQ7CiAgICAgIENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcik7CiAgIC0t ICBTZXQgdGhlIHN0eWxlIG9mIHRoZSBsaW5lcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHN5bWJvbHMg dG8gdGhlIFggYXhpcy4KCiAgIHByb2NlZHVyZSBTZXRfWV9BdHRyaWJ1dGVzCiAgICAgKERhdGEg IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6IFBsb3RfTGluZV9T dHlsZTsKICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAgIENvbG9yIDogR2RrLkNvbG9yLkdka19D b2xvcik7CiAgIC0tICBTZXQgdGhlIHN0eWxlIG9mIHRoZSBsaW5lcyB1c2VkIHRvIGNvbm5lY3Qg dGhlIHN5bWJvbHMgdG8gdGhlIFkgYXhpcy4KCiAgIHByb2NlZHVyZSBTZXRfWl9BdHRyaWJ1dGVz CiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6 IFBsb3RfTGluZV9TdHlsZTsKICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAgIENvbG9yIDogR2Rr LkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBTZXQgdGhlIHN0eWxlIG9mIHRoZSBsaW5lcyB1c2Vk IHRvIGNvbm5lY3QgdGhlIHN5bWJvbHMgdG8gdGhlIFogYXhpcy4KCiAgIHByb2NlZHVyZSBTaG93 X1hlcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKTsKICAgcHJvY2Vk dXJlIFNob3dfWWVycmJhcnMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwog ICBwcm9jZWR1cmUgU2hvd19aZXJyYmFycyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCk7CiAgIC0tICBJbmRpY2F0ZSB0aGF0IGVhY2ggc3ltYm9sIHNob3VsZCBiZSBjb25uZWN0 ZWQgdG8gdGhlIHZhcmlvdXMgYXhpcwoKICAgcHJvY2VkdXJlIEhpZGVfWGVycmJhcnMgKERhdGEg OiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwogICBwcm9jZWR1cmUgSGlkZV9ZZXJyYmFy cyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCk7CiAgIHByb2NlZHVyZSBIaWRl X1plcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKTsKICAgLS0gIElu ZGljYXRlIHRoZSB0aGUgc3ltYm9sIHNob3VsZCBub3QgYmUgY29ubmVjdGVkIHRvIHRoZSBheGlz LgoKICAgcHJvY2VkdXJlIEZpbGxfQXJlYSAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZDsgRmlsbCA6IEJvb2xlYW4pOwogICAtLSAgSW5kaWNhdGUgd2hldGhlciB0aGUgYXJlYSBi ZXR3ZWVuIHR3byBwb2ludHMgc2hvdWxkIGJlIGZpbGxlZCBvciBub3QuCgogICBmdW5jdGlvbiBB cmVhX0lzX0ZpbGxlZCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkKICAgICAg cmV0dXJuIEJvb2xlYW47CiAgIC0tICBJbmRpY2F0ZSB3aGV0aGVyIHRoZSBhcmVhIGJldHdlZW4g dHdvIHBvaW50cyBpcyBmaWxsZWQuCgogICAtLS0tLS0tLS0tLS0tCiAgIC0tIExlZ2VuZHMgLS0K ICAgLS0tLS0tLS0tLS0tLQogICAtLSAgSW4gYWRkaXRpb24gdG8gdGhlIGRyYXdpbmcgY29ycmVz cG9uZGluZyB0byB0aGUgZGF0YSBzZXQsIGl0IGlzIHBvc3NpYmxlCiAgIC0tICB0byBkaXNwbGF5 IGEgYm94IHRoYXQgY29udGFpbnMgYSBsZWdlbmQuIFRoaXMgaXMgcGFydGljdWxhcnkgdXNlZnVs IHdoZW4KICAgLS0gIG11bHRpcGxlIGRhdGEgc2V0cyBhcmUgZGlzcGxheWVkIG9uIHRoZSBzYW1l IHBsb3QuCgogICBwcm9jZWR1cmUgU2V0X0xlZ2VuZCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9E YXRhX1JlY29yZDsgTGVnZW5kIDogU3RyaW5nKTsKICAgLS0gIFNldCB0aGUgc3RyaW5nIHByaW50 ZWQgaW4gdGhlIGxlZ2VuZCBmb3IgdGhhdCBkYXRhIHNldC4KICAgLS0gIE5vdGUgdGhhdCBhbiBl bnRyeSBjYW4gZXhpc3QgaW4gdGhlIGxlZ2VuZCBldmVuIGlmIHRoZXJlIGlzIG5vIG5hbWUKICAg LS0gIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JhcGguCgogICBwcm9jZWR1cmUgU2hvd19MZWdlbmQg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwogICAtLSAgQW4gZW50cnkgd2ls bCBiZSBtYWRlIGluIHRoZSBwbG90J3MgbGVnZW5kIGZvciB0aGF0IGRhdGFzZXQuCgogICBwcm9j ZWR1cmUgSGlkZV9MZWdlbmQgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwog ICAtLSAgTm8gZW50cnkgd2lsbCBhcHBlYXIgaW4gdGhlIHBsb3QncyBsZWdlbmQgZm9yIHRoYXQg ZGF0YXNldC4KCiAgIHByb2NlZHVyZSBTZXRfTGVnZW5kX1ByZWNpc2lvbgogICAgIChEYXRhIDog YWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBQcmVjaXNpb24gOiBHaW50KTsKICAgLS0gIE51 bWJlciBvZiBkaWdpdHMgdG8gZGlzcGxheSB3aGVuIHRoZSBsZWdlbmRzIGlzIGFzc29jaWF0ZWQg d2l0aCB2YWx1ZXMsCiAgIC0tICBhcyBpcyB0aGUgY2FzZSBmb3IgZ3JhZGllbnRzLgoKICAgZnVu Y3Rpb24gR2V0X0xlZ2VuZF9QcmVjaXNpb24gKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9S ZWNvcmQpCiAgICAgIHJldHVybiBHaW50OwogICAtLSAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZGln aXRzIHVzZWQgZm9yIHZhbHVlcyBpbiB0aGUgbGVnZW5kCgogICAtLS0tLS0tLS0tLS0tLS0KICAg LS0gR3JhZGllbnRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLQogICAtLSAgVGhlIHN5bWJvbHMgZGlz cGxheWVkIGluIHRoZSBwbG90IGNhbiBiZSBhc3NpZ25lZCBzcGVjaWZpYyBjb2xvcnMuIEJ1dAog ICAtLSAgdGhleSBjYW4gYWxzbyBjb21wdXRlIHRoZWlyIG93biBjb2xvciBieSBwaWNraW5nIGl0 IGluIGEgZ3JhZGllbnQsCiAgIC0tICBkZXBlbmRpbmcgb24gdGhlIHZhbHVlLgoKICAgcHJvY2Vk dXJlIFNldF9HcmFkaWVudF9NYXNrCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9S ZWNvcmQ7IE1hc2sgOiBQbG90X0dyYWRpZW50KTsKICAgLS0gIEluZGljYXRlcyB3aGljaCBjb21w b25lbnQgb2YgdGhlIGNvbG9ycyB2YXJ5IGFsb25nIHRoZSBncmFkaWVudC4KCiAgIGZ1bmN0aW9u IEdldF9HcmFkaWVudF9NYXNrIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQog ICAgICByZXR1cm4gUGxvdF9HcmFkaWVudDsKICAgLS0gIFJldHVybiB0aGUgbWFzayB1c2VkIGZv ciB0aGUgZ3JhZGllbnQuCgogICBwcm9jZWR1cmUgR3JhZGllbnRfU2V0X1Zpc2libGUKICAgICAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgVmlzaWJsZSA6IEJvb2xlYW4pOwog ICAtLSAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGdyYWRpZW50IHNob3VsZCBiZSB2aXNpYmxlCgog ICBmdW5jdGlvbiBHcmFkaWVudF9WaXNpYmxlIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFf UmVjb3JkKQogICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFJldHVybiBUcnVlIGlmIHRoZSBn cmFkaWVudCBpcyBjdXJyZW50bHkgdmlzaWJsZQoKICAgcHJvY2VkdXJlIFNldF9HcmFkaWVudF9D b2xvcnMKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgTWlu LCBNYXggOiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0gIFNldCB0aGUgY29sb3JzIHRoYXQg ZGVmaW5lIHRoZSBncmFkaWVudC4gVGhlIGNvbG9ycyB3aWxsIHZhcnkgZnJvbQogICAtLSAgTWlu IHRvIE1heCBhbG9uZyB0aGUgY29tcG9uZW50cyBzcGVjaWZpZWQgaW4gU2V0X0dyYWRpZW50X01h c2suCgogICBwcm9jZWR1cmUgR2V0X0dyYWRpZW50X0NvbG9ycwogICAgIChEYXRhIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBNaW4sIE1heCA6IG91dCBHZGsuQ29sb3IuR2Rr X0NvbG9yKTsKICAgLS0gIFJldHVybiB0aGUgY29sb3JzIHRoYXQgZGVmaW5lIHRoZSByYW5nZQoK ICAgcHJvY2VkdXJlIFNldF9HcmFkaWVudAogICAgIChEYXRhICAgICA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZDsKICAgICAgTWluLCBNYXggOiBHZG91YmxlOwogICAgICBObGV2ZWxzICA6 IEdpbnQpOwogICAtLSAgRGVmaW5lIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBtaW5p bWFsIGNvbG9yIGFuZCB0aGUgbWF4aW1hbAogICAtLSAgY29sb3IuIEFueSB2YWx1ZSBpbiBiZXR3 ZWVuIHdpbGwgaGF2ZSBhIGNvbG9yIGNvbXB1dGVkIGluIGJldHdlZW4uCiAgIC0tICBObGV2ZWxz IGlzIHRoZSBudW1iZXIgb2YgdGlja3MgdG8gZGlzcGxheSBpbiB0aGUgZ3JhZGllbnQuCgogICBw cm9jZWR1cmUgR2V0X0dyYWRpZW50CiAgICAgKERhdGEgICAgIDogYWNjZXNzIEd0a19QbG90X0Rh dGFfUmVjb3JkOwogICAgICBNaW4sIE1heCA6IG91dCBHZG91YmxlOwogICAgICBObGV2ZWxzICA6 IG91dCBHaW50KTsKICAgLS0gIFJldHVybiB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUg bWluaW1hbCBhbmQgbWF4aW1hbCBjb2xvcnMuCgogICBwcm9jZWR1cmUgR2V0X0dyYWRpZW50X0xl dmVsCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBMZXZl bCA6IEdkb3VibGU7CiAgICAgIENvbG9yIDogb3V0IEdkay5Db2xvci5HZGtfQ29sb3IpOwogICAt LSAgUmV0dXJuIHRoZSBjb2xvciBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsZXZlbC4KICAg LS0gIFRoZSBjb2xvciBkZXBlbmRzIG9uIHRoZSBwYXJhbWV0ZXJzIHRvIFNldF9HcmFkaWVudCBh bmQKICAgLS0gIFNldF9HcmFkaWVudF9Db2xvcnMuCgogICAtLS0tLS0tLS0tLS0tLS0KICAgLS0g VXNlciBEYXRhIC0tCiAgIC0tLS0tLS0tLS0tLS0tLQogICAtLSAgSXQgaXMgcG9zc2libGUgdG8g YXNzb2NpYXRlZCB5b3VyIG93biB1c2VyIGRhdGEgd2l0aCBhIHBsb3QuIFRoaXMgaXMKICAgLS0g IHRoZSBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIEMgdmVyc2lvbiBvZiBndGtleHRyYS4gSG93 ZXZlciwgdGhlIGJlc3QKICAgLS0gIHdheSB0byBkbyB0aGlzIGluIEFkYSBpcyB0byBpbmhlcml0 IGZyb20gR3RrX1Bsb3RfRGF0YV9SZWNvcmQgKG9yIG9uZQogICAtLSAgb2YgaXRzIGNoaWxkcmVu KSwgYW5kIGFkZCB5b3VyIG93biBmaWVsZHMuCgogICBwcm9jZWR1cmUgU2V0X0xpbmsKICAgICAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgTGluayA6IFN5c3RlbS5B ZGRyZXNzKTsKICAgLS0gIEFzc29jaWF0ZSBzb21lIHVzZXIgZGF0YSB3aXRoIERhdGEuCiAgIC0t ICBJdCBpcyB0aGUgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIHVzZXIgdG8gZG8gc29tZSBjb252ZXJ0 IGNvbnZlcnNpb24gdG8KICAgLS0gIFN5c3RlbS5BZGRyZXNzLgoKICAgZnVuY3Rpb24gR2V0X0xp bmsgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpCiAgICAgIHJldHVybiBTeXN0 ZW0uQWRkcmVzczsKICAgLS0gIFJldHVybiB0aGUgdXNlciBkYXRhIGFzc29jaWF0ZWQgd2l0aCBE YXRhLCBvciBOdWxsX0FkZHJlc3MgaWYgdGhlcmUgaXMKICAgLS0gIG5vbmUuCgogICBwcm9jZWR1 cmUgUmVtb3ZlX0xpbmsgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwogICAt LSAgUmVtb3ZlIHRoZSB1c2VyIGRhdGEgYXNzb2NpYXRlZCB3aXRoIERhdGEuCgoKICAgLS0gIDxk b2NfaWdub3JlPgogICBmdW5jdGlvbiBUb19Eb3VibGVfQXJyYXkgaXMgbmV3IFVuY2hlY2tlZF9D b252ZXJzaW9uCiAgICAgKFN5c3RlbS5BZGRyZXNzLCBOb19SYW5nZV9HZG91YmxlX0FycmF5X0Fj Y2Vzcyk7CiAgIC0tICA8L2RvY19pZ25vcmU+Cgpwcml2YXRlCiAgIHR5cGUgR3RrX1Bsb3RfRGF0 YV9SZWNvcmQgaXMgbmV3IEd0ay5XaWRnZXQuR3RrX1dpZGdldF9SZWNvcmQgd2l0aAogICAgIG51 bGwgcmVjb3JkOwoKICAgR3JhZGllbnRfSCA6IGNvbnN0YW50IFBsb3RfR3JhZGllbnQgOj0gMTsK ICAgR3JhZGllbnRfViA6IGNvbnN0YW50IFBsb3RfR3JhZGllbnQgOj0gMjsKICAgR3JhZGllbnRf UyA6IGNvbnN0YW50IFBsb3RfR3JhZGllbnQgOj0gNDsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIEdl dF9UeXBlLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfdHlwZSIpOwplbmQgR3RrLkV4dHJhLlBsb3RfRGF0 YTsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABnbmF0YnVnL2d0ay1leHRyYS5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAx NzUxADAwMDAwMDAAMDAwMDAwMDQxNjAAMDc1NTExMDc2MzIAMDEzNzQzACAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc3BhegAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRo ZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBD aGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAg ICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0t Ci0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24s IGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5p dCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAg IC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2Ug IHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBo b3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1 dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4g ICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLSAgVGhpcyBpcyB0aGUg dG9wIGxldmVsIHBhY2thZ2Ugb2YgdGhlIEd0ay5FeHRyYSB3aWRnZXQgaGllcmFyY2h5LgotLSAg PC9kZXNjcmlwdGlvbj4KCnBhY2thZ2UgR3RrLkV4dHJhIGlzCmVuZCBHdGsuRXh0cmE7CgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnbmF0 YnVnL2d0ay5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAxNzUxADAw MDAwMDAAMDAwMDAwMjMyMzAAMDc1NTExMDc2MzIAMDEyNjIxACAwAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc3BhegAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1w IFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDEgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0 ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0t Ci0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAg IC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90 aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3Ig eW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0t IGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSBy ZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVy IGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUg ZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0t Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBwYWNrYWdlIHBy b3ZpZGVzIHNvbWUgYmFzaWMgR3RrKyBmdW5jdGlvbmFsaXRpZXMgc3VjaCBhcyBnZXR0aW5nIHRo ZQotLSAgdmVyc2lvbiBudW1iZXIuIFRoaXMgaXMgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIG9mIHRo ZSBHdGsgd2lkZ2V0IGhpZXJhcmNoeS4KLS0gIEZvciBnZW5lcmFsIEd0a0FkYSBpbml0aWFsaXph dGlvbnMsIEBweHJlZntQYWNrYWdlX0d0ay5NYWlufS4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Ci0t ICA8Y192ZXJzaW9uPjEuMi43PC9jX3ZlcnNpb24+Cgp3aXRoIEdsaWI7ICAgICAgICAgICAgICAg IHVzZSBHbGliOwp3aXRoIEdkazsgICAgICAgICAgICAgICAgIHVzZSBHZGs7CndpdGggU3lzdGVt OwoKcGFja2FnZSBHdGsgaXMKCiAgIHR5cGUgUm9vdF9UeXBlIGlzIHRhZ2dlZCBwcml2YXRlOwog ICAtLSAgVGhlIGJhc2UgdHlwZSBvZiB0aGUgaGllcmFyY2h5IGluIEd0a0FkYS4gSXQgYmFzaWNh bGx5IGdpdmVzIGFjY2VzcwogICAtLSAgdG8gYW4gdW5kZXJseWluZyBDIG9iamVjdC4gVGhpcyBp cyBub3QgYSBjb250cm9sbGVkIHR5cGUsIGZvciBlZmZpY2llbmN5CiAgIC0tICByZWFzb25zLCBh bmQgYmVjYXVzZSBndGsrIHRha2VzIGNhcmUgb2YgbWVtb3J5IG1hbmFnZW1lbnQgb24gaXRzIG93 bi4KCiAgIC0tICA8ZG9jX2lnbm9yZT4KICAgdHlwZSBSb290X1R5cGVfQWNjZXNzIGlzIGFjY2Vz cyBhbGwgUm9vdF9UeXBlJ0NsYXNzOwogICAtLSAgPC9kb2NfaWdub3JlPgoKICAgdHlwZSBHdGtf UmNfU3R5bGUgaXMgbmV3IEdkay5DX1Byb3h5OwogICAtLSAgVHlwZSB1c2VkIHRvIGhhbmRsZSBy ZXNvdXJjZSBzdHlsZXMuCiAgIC0tICBTZWUgcGFja2FnZSBHdGsuUmMgZm9yIG1vcmUgZGV0YWls cy4KCiAgIGZ1bmN0aW9uIE1ham9yX1ZlcnNpb24gcmV0dXJuIEd1aW50OwogICAtLSAgUmV0dXJu IHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciBmb3IgR3RrKy4KICAgLS0gIE5vdGUgdGhhdCB0aGlz IGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBmb3IgR3RrQWRhLgogICAtLSAgSWYgdGhl IHZlcnNpb24gaXMgMS4yLjYsIHJldHVybnMgMS4KCiAgIGZ1bmN0aW9uIE1pbm9yX1ZlcnNpb24g cmV0dXJuIEd1aW50OwogICAtLSAgUmV0dXJuIHRoZSBtaW5vciB2ZXJzaW9uIG51bWJlciBmb3Ig R3RrKy4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBh cyBmb3IgR3RrQWRhLgogICAtLSAgSWYgdGhlIHZlcnNpb24gaXMgMS4yLjYsIHJldHVybnMgMi4K CiAgIGZ1bmN0aW9uIE1pY3JvX1ZlcnNpb24gcmV0dXJuIEd1aW50OwogICAtLSAgUmV0dXJuIHRo ZSBtaWNybyB2ZXJzaW9uIG51bWJlciBmb3IgR3RrKy4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGlz IG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBmb3IgR3RrQWRhLgogICAtLSAgSWYgdGhlIHZl cnNpb24gaXMgMS4yLjYsIHJldHVybnMgNi4KCiAgIHR5cGUgR3RrX1R5cGUgaXMgbmV3IEd1aW50 OwogICAtLSAgVGhpcyB0eXBlIGRlc2NyaWJlcyBhbiBpbnRlcm5hbCB0eXBlIGluIEd0aysuCiAg IC0tICBZb3Ugc2hvdWxkbid0IGhhdmUgdG8gdXNlIGl0IGluIHlvdXIgb3duIGFwcGxpY2F0aW9u cywgaG93ZXZlciBpdCBtaWdodAogICAtLSAgYmUgdXNlZnVsIHNvbWV0aW1lcy4KICAgLS0gIEV2 ZXJ5IHdpZGdldCB0eXBlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIHZhbHVlLCBjcmVh dGVkCiAgIC0tICBkeW5hbWljYWxseSBhdCBydW4gdGltZSB0aGUgZmlyc3QgdGltZSB5b3UgaW5z dGFudGlhdGUgYSB3aWRnZXQgb2YgdGhhdAogICAtLSAgdHlwZSAodGh1cyBpZiB5b3UgaGF2ZSBu ZXZlciB1c2VkIGEgR3RrX0ZpbGVfU2VsZWN0aW9uLCBpdCB3b24ndCBoYXZlCiAgIC0tICBhbnkg R3RrX1R5cGUgYXNzb2NpYXRlZCB3aXRoIGl0KS4KICAgLS0gIFlvdSBjYW4gZ2V0IHRoZSBleGFj dCB0eXBlIHZhbHVlIGZvciBlYWNoIHR5cGUgYnkgdXNpbmcgdGhlIGZ1bmN0aW9ucwogICAtLSAg R2V0X1R5cGUgcHJvdmlkZWQgaW4gYWxsIHRoZSBwYWNrYWdlcyBpbiBHdGtBZGEuCiAgIC0tICBZ b3UgY2FuIGdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIGFuIGV4aXN0aW5nIHdpZGdldCBieSB1 c2luZyB0aGUKICAgLS0gIGZ1bmN0aW9uIEd0ay5PYmplY3QuR2V0X1R5cGUuCgogICBHdGtfVHlw ZV9JbnZhbGlkIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gMDsKICAgR3RrX1R5cGVfTm9uZSAgICA6 IGNvbnN0YW50IEd0a19UeXBlIDo9IDE7CiAgIEd0a19UeXBlX0NoYXIgICAgOiBjb25zdGFudCBH dGtfVHlwZSA6PSAyOwogICBHdGtfVHlwZV9VY2hhciAgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0g MzsKICAgR3RrX1R5cGVfQm9vbCAgICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDQ7CiAgIEd0a19U eXBlX0ludCAgICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSA1OwogICBHdGtfVHlwZV9VaW50ICAg IDogY29uc3RhbnQgR3RrX1R5cGUgOj0gNjsKICAgR3RrX1R5cGVfTG9uZyAgICA6IGNvbnN0YW50 IEd0a19UeXBlIDo9IDc7CiAgIEd0a19UeXBlX1Vsb25nICAgOiBjb25zdGFudCBHdGtfVHlwZSA6 PSA4OwogICBHdGtfVHlwZV9GbG9hdCAgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gOTsKICAgR3Rr X1R5cGVfRG91YmxlICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDEwOwogICBHdGtfVHlwZV9TdHJp bmcgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gMTE7ICAtLSAgTnVsbCB0ZXJtaW5hdGVkIHN0cmlu Zy4KICAgR3RrX1R5cGVfRW51bSAgICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDEyOwogICBHdGtf VHlwZV9GbGFncyAgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gMTM7CiAgIEd0a19UeXBlX0JveGVk ICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAxNDsKICAgR3RrX1R5cGVfUG9pbnRlciA6IGNvbnN0 YW50IEd0a19UeXBlIDo9IDE1OyAgLS0gIGEgZ2VuZXJhbCBwb2ludGVyIHR5cGUuCiAgIEd0a19U eXBlX09iamVjdCAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAyMTsgIC0tICBPbmUgb2YgdGhlIHdp ZGdldHMvb2JqZWN0cwoKICAgdHlwZSBHdGtfTm90ZWJvb2tfUGFnZSBpcyBuZXcgR2RrLkNfUHJv eHk7CiAgIC0tICBBIHBhZ2Ugb2YgdGhlIG5vdGVib29rLgogICAtLSAgSXQgY2FuIGNvbnRhaW4g YSBzaW5nbGUgY2hpbGQsIGFuZCBpcyBhbHNvIGFzc29jaWF0ZWQgd2l0aCBhIHRhYgogICAtLSAg bGFiZWwgdXNlZCB0byBzZWxlY3QgdGhhdCBwYWdlIGluIHRoZSBub3RlYm9vay4KCiAgIGZ1bmN0 aW9uIEd0a19UeXBlX0dka19FdmVudCByZXR1cm4gR3RrX1R5cGU7CiAgIC0tICBSZXR1cm4gdGhl IHR5cGUgY29ycmVzcG9uZGluZyB0byBhIEdka19FdmVudC4KICAgLS0gIE5vdGUgdGhhdCB0aGlz IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFmdGVyIEd0aysgaGFzIGJlZW4gaW5pdGlhbGl6ZWQu CgogICBmdW5jdGlvbiBUeXBlX05hbWUgKFR5cGVfTnVtIDogaW4gR3RrX1R5cGUpIHJldHVybiBT dHJpbmc7CiAgIC0tICBSZXR1cm4gdGhlIHR5cGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGEgR3Rr X1R5cGUuCiAgIC0tICBUaGlzIG1pZ2h0IGJlIHVzZWZ1bCBpbiBkZWJ1ZyBtZXNzYWdlcy4KCiAg IGZ1bmN0aW9uIFR5cGVfRnJvbV9OYW1lIChOYW1lIDogaW4gU3RyaW5nKSByZXR1cm4gR3RrX1R5 cGU7CiAgIC0tICBDb252ZXJ0IGEgc3RyaW5nIHRvIHRoZSBtYXRjaGluZyB0eXBlLgogICAtLSAg TmFtZSBzaG91bGQgYmUgdGhlIEMgd2lkZ2V0J3MgbmFtZSwgc3VjaCBhcyBHdGtTY3JvbGxiYXIg b3IgR3RrQnV0dG9uLAogICAtLSAgcmF0aGVyIHRoYW4gdGhlIEFkYSBuYW1lLgoKICAgZnVuY3Rp b24gSXNfQ3JlYXRlZCAoT2JqZWN0IDogaW4gUm9vdF9UeXBlJ0NsYXNzKSByZXR1cm4gQm9vbGVh bjsKICAgLS0gIFJldHVybiBUcnVlIGlmIHRoZSBhc3NvY2lhdGVkIEMgb2JqZWN0IGhhcyBiZWVu IGNyZWF0ZWQsIEZhbHNlIGlmIG5vCiAgIC0tICBDIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdpdGgg T2JqZWN0LgogICAtLSAgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGVzdGluZyB3aGV0aGVyIGFu IGFjY2VzcyB0eXBlIChmb3IgaW5zdGFuY2UKICAgLS0gIGFueSBvZiB0aGUgd2lkZ2V0cykgaXMg Im51bGwiLCBzaW5jZSB0aGlzIHJlbGF0ZXMgdG8gdGhlIHVuZGVybHlpbmcKICAgLS0gIEMgb2Jq ZWN0LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEludGVyZmFjaW5nIHdpdGgg QyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIFRoZSBmb2xsb3dpbmcgZnVu Y3Rpb25zIGFyZSBtYWRlIHB1YmxpYyBzbyB0aGF0IG9uZSBjYW4gZWFzaWx5IGNyZWF0ZQogICAt LSAgbmV3IHdpZGdldHMgb3V0c2lkZSB0aGUgR3RrIHBhY2thZ2UgaGllcmFyY2h5LgogICAtLSAg T25seSBleHBlcmllbmNlZCB1c2VycyBzaG91bGQgbWFrZSB1c2Ugb2YgdGhlc2UgZnVuY3Rpb25z LgoKICAgZnVuY3Rpb24gR2V0X09iamVjdCAoT2JqZWN0IDogYWNjZXNzIFJvb3RfVHlwZSdDbGFz cykgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAtLSAgQWNjZXNzIHRoZSB1bmRlcmx5aW5nIEMg cG9pbnRlci4KCiAgIHByb2NlZHVyZSBTZXRfT2JqZWN0CiAgICAgKE9iamVjdCA6IGFjY2VzcyBS b290X1R5cGUnQ2xhc3M7CiAgICAgIFZhbHVlICA6IGluICAgICBTeXN0ZW0uQWRkcmVzcyk7CiAg IC0tICBNb2RpZnkgdGhlIHVuZGVybHlpbmcgQyBwb2ludGVyLgoKICAgcHJvY2VkdXJlIEluaXRp YWxpemVfVXNlcl9EYXRhIChPYmogOiBhY2Nlc3MgUm9vdF9UeXBlJ0NsYXNzKTsKICAgLS0gIFNl dHMgYSB1c2VyIGRhdGEgZmllbGQgZm9yIHRoZSBDIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggT2Jq LgogICAtLSAgVGhpcyBmaWVsZCB3aWxsIGJlIHVzZWQgc28gdGhhdCBpdCBpcyBwb3NzaWJsZSwg a25vd2luZyBhCiAgIC0tICBDIG9iamVjdCwgdG8gZ2V0IHRoZSBmdWxsIGFkYSBvYmplY3QuCgog ICBmdW5jdGlvbiBHZXRfVXNlcl9EYXRhCiAgICAgKE9iaiAgOiBpbiBTeXN0ZW0uQWRkcmVzczsK ICAgICAgU3R1YiA6IGluIFJvb3RfVHlwZSdDbGFzcykgcmV0dXJuIFJvb3RfVHlwZV9BY2Nlc3M7 CiAgIC0tICBHZXQgdGhlIHVzZXIgZGF0YSB0aGF0IHdhcyBzZXQgYnkgR3RrQWRhLgogICAtLSAg SWYgdGhlIERhdGEgaXMgbm90IHNldCwgcmV0dXJuIGEgbmV3IGFjY2VzcyB0eXBlLCB0aGF0IHBv aW50cyB0bwogICAtLSAgYSBzdHJ1Y3R1cmUgd2l0aCB0aGUgc2FtZSB0YWcgYXMgU3R1Yi4KCiAg IGZ1bmN0aW9uIFVuY2hlY2tlZF9DYXN0CiAgICAgKE9iaiAgOiBhY2Nlc3MgUm9vdF9UeXBlJ0Ns YXNzOwogICAgICBTdHViIDogUm9vdF9UeXBlJ0NsYXNzKSByZXR1cm4gUm9vdF9UeXBlX0FjY2Vz czsKICAgLS0gIENhc3QgT2JqIGluIGFuIG9iamVjdCBvZiB0YWcgU3R1YidDbGFzcy4KICAgLS0g IFJldHVybiB0aGUgcmVzdWx0aW5nIG9iamVjdCBhbmQgZnJlZSB0aGUgbWVtb3J5IHBvaW50ZWQg YnkgT2JqLgoKICAgZnVuY3Rpb24gQ291bnRfQXJndW1lbnRzCiAgICAgKFRoZV9UeXBlIDogR3Rr X1R5cGU7IE5hbWUgOiBpbiBTdHJpbmcpIHJldHVybiBHdWludDsKICAgLS0gIFJldHVybiB0aGUg bnVtYmVyIG9mIGFyZ3VtZW50cyB1c2VkIGluIHRoZSBoYW5kbGVycyBmb3IgdGhlIHNpZ25hbC4K ICAgLS0gIE5vdGUgdGhhdCBpbiB0aGUgQ29ubmVjdCBmdW5jdGlvbnMsIHdlIGFsd2F5cyB0ZXN0 IHdoZXRoZXIgdGhlIHVzZXIKICAgLS0gIGhhcyBhc2tlZCBmb3IgKmF0IG1vc3QqIHRoZSBudW1i ZXIgb2YgYXJndW1lbnRzIGRlZmluZWQgYnkgZ3RrKyBmb3IgdGhlCiAgIC0tICBjYWxsYmFjay4g VGhpcyBpcyBiZWNhdXNlIGhhdmluZyBsZXNzIGFyZ3VtZW50IGlzIGF1dGhvcml6ZWQgKHRoZQog ICAtLSAgZXh0cmEgcGFyYW1ldGVycyBwYXNzZWQgYnkgZ3RrKyB3aWxsIHNpbXBseSBiZSBpZ25v cmVkKSwgd2hlcmVhcyBoYXZpbmcKICAgLS0gIG1vcmUgYXJndW1lbnRzIGlzIGltcG9zc2libGUg KHRoZXkgd291bGQgbmV2ZXIgYmUgc2V0KS4KICAgLS0gIE5vdGUgdGhhdCB3ZSBwcm92aWRlIHRo aXMgcHJvY2VkdXJlIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXJpdGllcy4KCiAgIGZ1bmN0aW9uIEFy Z3VtZW50X1R5cGUKICAgICAoVGhlX1R5cGUgOiBHdGtfVHlwZTsKICAgICAgTmFtZSAgICAgOiBp biBTdHJpbmc7CiAgICAgIE51bSAgICAgIDogaW4gR2ludCkgcmV0dXJuIEd0a19UeXBlOwogICAt LSAgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBudW0tdGggYXJndW1lbnQgZm9yIHRoZSBoYW5kbGVy cyBvZiBzaWduYWwgbmFtZS4KICAgLS0gIElmIE51bSBpcyBuZWdhdGl2ZSwgcmV0dXJuIHRoZSB0 eXBlIHJldHVybmVkIGJ5IHRoZSBoYW5kbGVycyBmb3IgdGhpcwogICAtLSAgc2lnbmFsLgogICAt LSAgTm90ZSB0aGF0IHdlIHByb3ZpZGUgdGhpcyBwcm9jZWR1cmUgaGVyZSB0byBhdm9pZCBjaXJj dWxhcml0aWVzLgoKcHJpdmF0ZQoKICAgdHlwZSBSb290X1R5cGUgaXMgdGFnZ2VkIHJlY29yZAog ICAgICBQdHIgOiBTeXN0ZW0uQWRkcmVzcyA6PSBTeXN0ZW0uTnVsbF9BZGRyZXNzOwogICBlbmQg cmVjb3JkOwoKICAgLS0gIDxkb2NfaWdub3JlPgoKICAgLS0gIE5vdGU6IHRoZSBmb2xsb3dpbmcg ZnVuY3Rpb25zIGFuZCB0eXBlcyBzaG91bGQgb25seSBiZSB1c2VkCiAgIC0tICBmb3IgaW50ZXJu YWwgdXNhZ2UsIG5vdCBpbiB0aGUgdXNlcidzIGFwcGxpY2F0aW9ucy4KICAgLS0gIElmIHlvdSB1 c2UgdHlwZSBpbmhlcml0YW5jZSBmb3IgbmV3IHdpZGdldHMsIHlvdSBzaG91bGQgbm90IG5lZWQK ICAgLS0gIHRoZXNlIGZ1bmN0aW9ucy4KCiAgIEd0a0FkYV9TdHJpbmcgOiBjb25zdGFudCBTdHJp bmcgOj0gIl9HdGtBZGEiICYgQVNDSUkuTlVMOwogICBHdGtBZGFfU3RyaW5nX1F1YXJrIDogR2xp Yi5HUXVhcmsgOj0gR2xpYi5Vbmtub3duX1F1YXJrOwogICAtLSAgVGhlIG5hbWUgZm9yIHRoZSB1 c2VyIGRhdGEgdGhhdCB3ZSBzZXQgaW4gdGhlIG9iamVjdHMuCiAgIC0tICBUaGUgUXVhcmsgdmVy c2lvbiBpcyB0byBzcGVlZCB1cCB0aGUgc3RyaW5nIGxvb2t1cCAodGhpcyBpcyBkb25lCiAgIC0t ICBvbmx5IG9uY2UpLgoKICAgZnVuY3Rpb24gQ29udmVyc2lvbl9GdW5jdGlvbgogICAgIChPYmog OiBTeXN0ZW0uQWRkcmVzczsgU3R1YiA6IFJvb3RfVHlwZSdDbGFzcykgcmV0dXJuIFJvb3RfVHlw ZV9BY2Nlc3M7CiAgIC0tICBUaGlzIGZ1bmN0aW9uIGhhcyB0byBjb252ZXJ0IGEgQyBvYmplY3Qg dG8gYW4gQWRhIG9iamVjdC4KICAgLS0gIEl0IHdpbGwgZmlyc3QgdHJ5IGFsbCB0aGUgcmVnaXN0 ZXJlZCBmdW5jdGlvbnMgKGluCiAgIC0tICBHdGsuVHlwZV9Db252ZXJzaW9uX0hvb2tzKSBhbmQg YnkgZGVmYXVsdCwgd2lsbCBjcmVhdGUgYSBTdHViJ0NsYXNzCiAgIC0tICBvYmplY3QsIG5vIG1h dHRlciB3aGF0IHRoZSByZWFsIEMgdHlwZSBpcy4KICAgLS0gIFN0dWIgaXMgdGhlIGV4cGVjdGVk IHR5cGUuCgogICAtLSAgPC9kb2NfaWdub3JlPgoKICAgcHJhZ21hIElubGluZSAoR2V0X09iamVj dCk7CiAgIHByYWdtYSBJbmxpbmUgKFNldF9PYmplY3QpOwoKICAgcHJhZ21hIEltcG9ydCAoQywg TWFqb3JfVmVyc2lvbiwgImFkYV9ndGtfbWFqb3JfdmVyc2lvbiIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBNaW5vcl9WZXJzaW9uLCAiYWRhX2d0a19taW5vcl92ZXJzaW9uIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIE1pY3JvX1ZlcnNpb24sICJhZGFfZ3RrX21pY3JvX3ZlcnNpb24iKTsKICAgcHJh Z21hIEltcG9ydCAoQywgR3RrX1R5cGVfR2RrX0V2ZW50LCAiYWRhX2d0a190eXBlX2dka19ldmVu dCIpOwplbmQgR3RrOwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnbmF0YnVnL2dsaWIuYWRzAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDEwMDY0NAAwMDAxNzUxADAwMDAwMDAAMDAwMDAwMTYyMDEAMDc1 NTExMDc2MzIAMDEyNzUxACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzdGFyICAAc3BhegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAg IEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAx OTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlv dCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0t IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4g ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0t Ci0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl ICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRl IGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdp dGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVu aXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1 dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRo aXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVy IHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJl ZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAg PGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGRlZmluaXRpb25zIGZv ciB0aGUgYmFzaWMgdHlwZXMgdXNlZCBpbiBHbGliLAotLSAgR2RrIGFuZCBHdGsuCi0tCi0tICA8 L2Rlc2NyaXB0aW9uPgoKd2l0aCBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbjsKd2l0aCBBZGEu VW5jaGVja2VkX0NvbnZlcnNpb247CndpdGggU3lzdGVtOwp3aXRoIEludGVyZmFjZXMuQzsKCnBh Y2thZ2UgR2xpYiBpcwogICBwcmFnbWEgUHJlZWxhYm9yYXRlOwoKICAgcGFja2FnZSBDIHJlbmFt ZXMgSW50ZXJmYWNlcy5DOwogICB1c2UgdHlwZSBDLmludDsKICAgdXNlIHR5cGUgQy51bnNpZ25l ZDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gVGhlIGJh c2ljIHR5cGVzIGRlZmluZWQgYnkgZ2xpYiAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgogICB0eXBlIEdzaG9ydCBpcyBuZXcgQy5zaG9ydDsKICAgdHlwZSBHbG9u ZyAgaXMgbmV3IEMubG9uZzsKICAgdHlwZSBHaW50ICAgaXMgbmV3IEMuaW50OwogICB0eXBlIEdj aGFyICBpcyBuZXcgQy5jaGFyOwogICB0eXBlIEdib29sZWFuIGlzIG5ldyBHaW50OwoKICAgdHlw ZSBHdXNob3J0IGlzIG5ldyBDLnVuc2lnbmVkX3Nob3J0OwogICB0eXBlIEd1bG9uZyAgaXMgbmV3 IEMudW5zaWduZWRfbG9uZzsKICAgdHlwZSBHdWludCAgIGlzIG5ldyBDLnVuc2lnbmVkOwogICB0 eXBlIEd1Y2hhciAgaXMgbmV3IEMudW5zaWduZWRfY2hhcjsKCiAgIHR5cGUgR2Zsb2F0ICBpcyBu ZXcgQy5DX2Zsb2F0OwogICB0eXBlIEdkb3VibGUgaXMgbmV3IEMuZG91YmxlOwoKICAgc3VidHlw ZSBHaW50OCAgaXMgR2ludCByYW5nZSAtKDIgKiogNykgLi4gKDIgKiogNyAtIDEpOwogICBzdWJ0 eXBlIEdpbnQxNiBpcyBHaW50IHJhbmdlIC0oMiAqKiAxNSkgLi4gKDIgKiogMTUgLSAxKTsKICAg c3VidHlwZSBHaW50MzIgaXMgR2ludCByYW5nZSAtKDIgKiogMzEpIC4uICgyICoqIDMxIC0gMSk7 CgogICBzdWJ0eXBlIEd1aW50OCAgaXMgR3VpbnQgcmFuZ2UgR3VpbnQnRmlyc3QgLi4gKDIgKiog OCAtIDEpOwogICBzdWJ0eXBlIEd1aW50MTYgaXMgR3VpbnQgcmFuZ2UgR3VpbnQnRmlyc3QgLi4g KDIgKiogMTYgLSAxKTsKICAgc3VidHlwZSBHdWludDMyIGlzIEd1aW50IHJhbmdlIEd1aW50J0Zp cnN0IC4uICgyICoqIDMyIC0gMSk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNv bWUgQXJyYXkgdHlwZXMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgdHlwZSBHYm9v bGVhbl9BcnJheSBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR2Jvb2xlYW47CiAgIHR5 cGUgR3Nob3J0X0FycmF5ICAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEdzaG9ydDsK ICAgdHlwZSBHbG9uZ19BcnJheSAgICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR2xv bmc7CiAgIHR5cGUgR2ludF9BcnJheSAgICAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9m IEdpbnQ7CiAgIHR5cGUgR3VpbnRfQXJyYXkgICAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4p IG9mIEd1aW50OwogICB0eXBlIEd1aW50MzJfQXJyYXkgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdl IDw+KSBvZiBHdWludDMyOwogICB0eXBlIEd1c2hvcnRfQXJyYXkgIGlzIGFycmF5IChOYXR1cmFs IHJhbmdlIDw+KSBvZiBHdXNob3J0OwogICB0eXBlIEd1bG9uZ19BcnJheSAgIGlzIGFycmF5IChO YXR1cmFsIHJhbmdlIDw+KSBvZiBHdWxvbmc7CiAgIHR5cGUgR2Zsb2F0X0FycmF5ICAgaXMgYXJy YXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEdmbG9hdDsKICAgdHlwZSBHdWNoYXJfQXJyYXkgICBp cyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR3VjaGFyOwogICB0eXBlIEdkb3VibGVfQXJy YXkgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHZG91YmxlOwoKICAgdHlwZSBCb29s ZWFuX0FycmF5ICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgQm9vbGVhbjsKCiAgIHR5 cGUgU2hvcnRfQXJyYXkgICAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEMuc2hvcnQ7 CiAgIHR5cGUgTG9uZ19BcnJheSAgICAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEMu bG9uZzsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gQ29udmVyc2lvbiBzZXJ2 aWNlcyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBUb19Cb29s ZWFuX0FycmF5IChBIDogaW4gR2Jvb2xlYW5fQXJyYXkpIHJldHVybiBCb29sZWFuX0FycmF5Owog ICAtLSAgQ29udmVydCBhIEMtc3R5bGUgYm9vbGVhbiBhcnJheSBpbnRvIGFuIEFkYS1zdHlsZSBh cnJheS4KCiAgIGZ1bmN0aW9uIFRvX0Jvb2xlYW4gKFZhbHVlIDogaW4gR2Jvb2xlYW4pIHJldHVy biBCb29sZWFuOwogICAtLSAgQ29udmVydCBhIEMgYm9vbGVhbiBpbnRvIGFuIEFkYSBib29sZWFu LgoKICAgZnVuY3Rpb24gVG9fQm9vbGVhbiAoVmFsdWUgOiBpbiBHaW50KSByZXR1cm4gQm9vbGVh bjsKICAgLS0gIENvbnZlcnQgYSBDIGludCBpbnRvIGFuIEFkYSBib29sZWFuLgoKICAgZnVuY3Rp b24gVG9fQm9vbGVhbiAoVmFsdWUgOiBpbiBHdWludCkgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBD b252ZXJ0IGEgQyB1aW50IGludG8gYW4gQWRhIGJvb2xlYW4uCgogICBmdW5jdGlvbiBUb19HYm9v bGVhbiAoQm9vbCA6IGluIEJvb2xlYW4pIHJldHVybiBHYm9vbGVhbjsKICAgLS0gIENvbnZlcnQg YW4gQWRhIGJvb2xlYW4gaW50byBhIEMgYm9vbGVhbi4KCiAgIGZ1bmN0aW9uIFRvX0dpbnQgKEJv b2wgOiBpbiBCb29sZWFuKSByZXR1cm4gR2ludDsKICAgLS0gIENvbnZlcnQgYW4gQWRhIGJvb2xl YW4gaW50byBhIEMgaW50LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU29tZSBB Y2Nlc3MgdHlwZXMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHR5cGUgR3VjaGFy X0FycmF5X0FjY2VzcyBpcyBhY2Nlc3MgR3VjaGFyX0FycmF5OwoKICAgdHlwZSBTdHJpbmdfUHRy IGlzIGFjY2VzcyBhbGwgU3RyaW5nOwoKICAgLS0gIDxkb2NfaWdub3JlPgogICBwcm9jZWR1cmUg RnJlZSBpcyBuZXcgQWRhLlVuY2hlY2tlZF9EZWFsbG9jYXRpb24KICAgICAoT2JqZWN0ID0+IEd1 Y2hhcl9BcnJheSwgTmFtZSA9PiBHdWNoYXJfQXJyYXlfQWNjZXNzKTsKCiAgIHByb2NlZHVyZSBG cmVlIGlzIG5ldyBBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbgogICAgIChPYmplY3QgPT4gU3Ry aW5nLCBOYW1lID0+IFN0cmluZ19QdHIpOwogICAtLSAgPC9kb2NfaWdub3JlPgoKICAgLS0gIDxk b2NfaWdub3JlPgogICB0eXBlIENfRHVtbXkgaXMgbGltaXRlZCBwcml2YXRlOwogICAtLSAgPC9k b2NfaWdub3JlPgoKICAgdHlwZSBDX1Byb3h5IGlzIGFjY2VzcyBDX0R1bW15OwogICAtLSAgR2Vu ZXJhbCBwcm94eSBmb3IgQyBzdHJ1Y3R1cmVzLgogICAtLSAgVGhpcyB0eXBlIGlzIHVzZWQgaW5z dGVhZCBvZiBTeXN0ZW0uQWRkcmVzcyBzbyB0aGF0IHRoZSB2YXJpYWJsZXMgYXJlCiAgIC0tICBh dXRvbWF0aWNhbGx5IGluaXRpYWxpemVkIHRvICdudWxsJy4KICAgLS0gIFRoZSB2YWx1ZSBwb2lu dGVkIHRvIGlzIGlycmVsZXZhbnQsIGFuZCBpbiBmYWN0IHNob3VsZCBub3QgYmUgYWNjZXNzZWQu CiAgIC0tICBJdCBoYXMgdGh1cyBiZWVuIG1hZGUgbGltaXRlZCBwcml2YXRlIHdpdGggbm8gc3Vi cHJvZ3JhbSB0byBhY2Nlc3MgaXQuCiAgIC0tICBDX1Byb3h5IGlzIGEgcHVibGljIHR5cGUgc28g dGhhdCBvbmUgY2FuIGNvbXBhcmUgZGlyZWN0bHkgdGhlIHZhbHVlCiAgIC0tICBvZiB0aGUgdmFy aWFibGVzIHdpdGggJ251bGwnLgoKICAgLS0gIDxkb2NfaWdub3JlPgogICBwcmFnbWEgQ29udmVu dGlvbiAoQywgQ19Qcm94eSk7CgogICBmdW5jdGlvbiBDb252ZXJ0IGlzIG5ldyBBZGEuVW5jaGVj a2VkX0NvbnZlcnNpb24gKFN5c3RlbS5BZGRyZXNzLCBDX1Byb3h5KTsKICAgZnVuY3Rpb24gQ29u dmVydCBpcyBuZXcgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uIChDX1Byb3h5LCBTeXN0ZW0uQWRk cmVzcyk7CiAgIC0tICBDb252ZXJ0cyBmcm9tIGEgU3lzdGVtLkFkZHJlc3MgcmV0dXJuZWQgYnkg YSBDIGZ1bmN0aW9uIHRvIGFuCiAgIC0tICBpbnRlcm5hbCBDX1Byb3h5LgoKICAgLS0gIDwvZG9j X2lnbm9yZT4KCiAgIC0tLS0tLS0tLS0tLQogICAtLSBRdWFya3MgLS0KICAgLS0tLS0tLS0tLS0t CgogICB0eXBlIEdRdWFyayBpcyBuZXcgR3VpbnQzMjsKICAgLS0gIFJlcHJlc2VudHMgYSBzdHJp bmcgaW50ZXJuYWxseSBpbiBHdGtBZGEuIE9uY2UgeW91IGtub3cgdGhlCiAgIC0tICBlcXVpdmFs ZW50IGZvciBhIHN0cmluZywgeW91IGNhbiBhbHdheXMgdXNlIGl0IGluc3RlYWQgb2YgdGhlIHN0 cmluZywKICAgLS0gIHdoaWNoIHByb3ZpZGVzIGEgZmFzdGVyIGFjY2VzcyBmb3IgYWxsIHRoZSBm dW5jdGlvbnMgdGhhdCB1c2UgaHRhYmxlcwogICAtLSAgaW4gR3RrQWRhLgogICAtLSAgVGhlcmUg aXMgYSBnbG9iYWwgaHRhYmxlIHRoYXQgY29udGFpbnMgYWxsIHRoZSBxdWFya3MgZGVmaW5lZCBp bgogICAtLSAgeW91ciBhcHBsaWNhdGlvbiBhbmQgR3RrQWRhIGl0c2VsZi4KCiAgIFVua25vd25f UXVhcmsgOiBjb25zdGFudCBHUXVhcmsgOj0gMDsKCiAgIGZ1bmN0aW9uIFF1YXJrX0Zyb21fU3Ry aW5nIChJZCA6IGluIFN0cmluZykgcmV0dXJuIEdRdWFyazsKICAgLS0gIFJldHVybiwgb3IgY3Jl YXRlIHRoZSBxdWFyayBhc3NvY2lhdGVkIHdpdGggdGhlIHN0cmluZy4KICAgLS0gIE5vdGUgdGhh dCBpZiB0aGUgcXVhcmsgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgYW4gZW50cnkgaXMgY3JlYXRl ZCBmb3IKICAgLS0gIGl0IGluIHRoZSBnbG9iYWwgaHRhYmxlIGZvciBxdWFya3MuCgogICBmdW5j dGlvbiBRdWFya19UcnlfU3RyaW5nIChJZCA6IGluIFN0cmluZykgcmV0dXJuIEdRdWFyazsKICAg LS0gIFJldHVybiB0aGUgcXVhcmsgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdHJpbmcsIGlmIGl0IGV4 aXN0cy4KICAgLS0gIElmIGl0IGRvZXMgbm90IGV4aXN0LCByZXR1cm4gVW5rbm93bl9RdWFyay4K CnByaXZhdGUKICAgdHlwZSBDX0R1bW15IGlzIG51bGwgcmVjb3JkOwogICAtLSAgVGhpcyBhcnJh eSBjYW4gY29udGFpbiBhbnl0aGluZywgc2luY2UgaXQgaXMgbmV2ZXIgdXNlZCBvbiB0aGUgQWRh IHNpZGUKICAgLS0gIGFueXdheS4KCmVuZCBHbGliOwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAGduYXRidWcvZ2RrLmFkcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAwMAAwMDAwMDAwNDY1MwAwNzU1MTEwNzYzMgAwMTI2MTEA IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAALS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUg YmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tl ciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAg ICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0g R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9u ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0K LS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVj aWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAg LS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0 byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5 IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3Zl cmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0 aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhl ICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1 YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0t Ci0tICBUaGlzIGlzIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSBvZiB0aGUgR2RrIGhpZXJhcmNoeS4K LS0gIEl0IHByb3ZpZGVzIHRoZSB0eXBlIGRlZmluaXRpb25zIHVzZWQgdG8gYWNjZXNzIHVuZGVy bHlpbmcgQyBzdHJ1Y3R1cmVzLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KCndpdGggR2xpYjsKCnBh Y2thZ2UgR2RrIGlzCiAgIHByYWdtYSBQcmVlbGFib3JhdGU7CgogICBzdWJ0eXBlIENfUHJveHkg aXMgR2xpYi5DX1Byb3h5OwogICB0eXBlIEdka19HQyBpcyBuZXcgQ19Qcm94eTsKICAgdHlwZSBH ZGtfV2luZG93IGlzIG5ldyBDX1Byb3h5OwogICBzdWJ0eXBlIEdka19EcmF3YWJsZSBpcyBHZGtf V2luZG93OwogICBzdWJ0eXBlIEdka19QaXhtYXAgaXMgR2RrX0RyYXdhYmxlOwogICBzdWJ0eXBl IEdka19CaXRtYXAgaXMgR2RrX0RyYXdhYmxlOwoKZW5kIEdkazsKAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAGduYXRidWcvZ3RrLXdpZGdldC5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAw NjQ0ADAwMDE3NTEAMDAwMDAwMAAwMDAwMDE1MTIwNQAwNzU1MTEwNzYzMgAwMTQxMDYAIDAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAALS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGlu ZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQg QXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0K LS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAg ICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRo IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs ICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4 Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0g dGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9k dWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2Vs ZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5 IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRv ZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0K LS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBM aWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBU aGlzIHdpZGdldCBpcyB0aGUgYmFzZSBvZiB0aGUgdHJlZSBmb3IgZGlzcGxheWFibGUgb2JqZWN0 cy4KLS0gIChBIGRpc3BsYXlhYmxlIG9iamVjdCBpcyBvbmUgd2hpY2ggdGFrZXMgdXAgc29tZSBh bW91bnQKLS0gIG9mIHNjcmVlbiByZWFsIGVzdGF0ZSkuIEl0IHByb3ZpZGVzIGEgY29tbW9uIGJh c2UgYW5kIGludGVyZmFjZQotLSAgd2hpY2ggYWN0dWFsIHdpZGdldHMgbXVzdCBhZGhlcmUgdG8u Ci0tCi0tICBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgc29tZSBzZXJ2aWNlcyB3aGljaCBtaWdodCBo YXZlIGJlZW4gbW9yZSBhcHByb3ByaWF0ZQotLSAgaW4gc29tZSBvdGhlciBwYWNrYWdlcywgYnV0 IGNvdWxkIG5vdCBiZWNhdXNlIG9mIGRlcGVuZGVuY3kgY2lyY3VsYXJpdGllcwotLSAgKHRoZXJl IGFyZSBmb3IgaW5zdGFuY2Ugc29tZSBmdW5jdGlvbnMgcmVsYXRpbmcgdG8gY29sb3JzIGFuZCBj b2xvcm1hcHMpLgotLSAgV2UgaGF2ZSB0cmllZCB0byByZWZlcmVuY2UgdGhlc2UgZnVuY3Rpb25z IGluIHRoZSBvdGhlciBwYWNrYWdlcyBhcyB3ZWxsLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0g IDxjX3ZlcnNpb24+MS4yLjY8L2NfdmVyc2lvbj4KCndpdGggR2RrLkNvbG9yOwp3aXRoIEdkay5F dmVudDsKd2l0aCBHZGsuQml0bWFwOwp3aXRoIEdkay5SZWN0YW5nbGU7CndpdGggR2RrLlR5cGVz Owp3aXRoIEdkay5WaXN1YWw7CndpdGggR2RrLldpbmRvdzsKd2l0aCBHdGsuQWNjZWxfR3JvdXA7 CndpdGggR3RrLkFkanVzdG1lbnQ7CndpdGggR3RrLkVudW1zOwp3aXRoIEd0ay5PYmplY3Q7Cndp dGggR3RrLlN0eWxlOwp3aXRoIEdsaWIuR2xpc3Q7CndpdGggR2xpYi5HU2xpc3Q7CndpdGggU3lz dGVtOwpwcmFnbWEgRWxhYm9yYXRlX0FsbCAoR2xpYi5HU2xpc3QpOwoKcGFja2FnZSBHdGsuV2lk Z2V0IGlzCgogICB0eXBlIEd0a19XaWRnZXRfUmVjb3JkIGlzIG5ldyBPYmplY3QuR3RrX09iamVj dF9SZWNvcmQgd2l0aCBwcml2YXRlOwogICB0eXBlIEd0a19XaWRnZXQgaXMgYWNjZXNzIGFsbCBH dGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKCiAgIHR5cGUgR3RrX1JlcXVpc2l0aW9uIGlzIHJlY29y ZAogICAgICBXaWR0aCAgOiBHaW50MTY7CiAgICAgIEhlaWdodCA6IEdpbnQxNjsKICAgZW5kIHJl Y29yZDsKICAgLS0gIEd0a19SZXF1aXNpdGlvbiBpcyB0aGUgZGVzaXJlZCBhbW91bnQgb2Ygc2Ny ZWVuIHJlYWwtZXN0YXRlIGEgd2lkZ2V0CiAgIC0tICByZXF1ZXN0cyB0byB0aGUgc2VydmVyLiBJ dHMgcmVhbCBhbGxvY2F0ZWQgc2l6ZSBtaWdodCBiZSBkaWZmZXJlbnQuCiAgIC0tICBTZWUgdGhl IHNlY3Rpb24gaW4gdGhlIEd0a0FkYSB1c2VyIGd1aWRlIG9uIGhvdyB0byBjcmVhdGUgbmV3IHdp ZGdldHMKICAgLS0gIGluIEFkYSwgYW5kIHRoZSBleGFtcGxlcy9iYXNlX3dpZGdldCBkaXJlY3Rv cnkgZm9yIGFuIGV4YW1wbGUgb24gaG93IHRvCiAgIC0tICB1c2UgdGhpcy4KICAgcHJhZ21hIFBh Y2sgKEd0a19SZXF1aXNpdGlvbik7CgogICB0eXBlIEd0a19SZXF1aXNpdGlvbl9BY2Nlc3MgaXMg YWNjZXNzIGFsbCBHdGtfUmVxdWlzaXRpb247CiAgIC0tICBUaGlzIHR5cGUgaXMgdXNlZCB0byBj cmVhdGUgbmV3IHdpZGdldHMuCgogICB0eXBlIEd0a19BbGxvY2F0aW9uIGlzIHJlY29yZAogICAg ICBYICAgICAgOiBHaW50MTY7CiAgICAgIFkgICAgICA6IEdpbnQxNjsKICAgICAgV2lkdGggIDog R3VpbnQxNjsKICAgICAgSGVpZ2h0IDogR3VpbnQxNjsKICAgZW5kIHJlY29yZDsKICAgLS0gIEd0 a19BbGxvY2F0aW9uIGluZGljYXRlcyBhIHNpemUgYW5kIHBvc2l0aW9uIGEgd2lkZ2V0IHdhcyBh bGxvY2F0ZWQuCiAgIC0tICBTZWUgdGhlIHNlY3Rpb24gaW4gdGhlIHVzZXIgZ3VpZGUgb24gaG93 IHRvIGNyZWF0ZSBuZXcgd2lkZ2V0cyBmb3IgbW9yZQogICAtLSAgaW5mb3JtYXRpb24uCiAgIHBy YWdtYSBQYWNrIChHdGtfQWxsb2NhdGlvbik7CgogICB0eXBlIEd0a19BbGxvY2F0aW9uX0FjY2Vz cyBpcyBhY2Nlc3MgYWxsIEd0a19BbGxvY2F0aW9uOwogICAtLSAgVGhpcyB0eXBlIGlzIHVzZWQg dG8gY3JlYXRlIG5ldyB3aWRnZXRzLgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAt LSBXaWRnZXRzJyBsaWZlIGN5Y2xlIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAg IHByb2NlZHVyZSBJbml0aWFsaXplX1dpZGdldCAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkJ0NsYXNzKTsKICAgLS0gIEludGVybmFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgog ICAtLSAgU2VlIHRoZSBzZWN0aW9uICJDcmVhdGluZyB5b3VyIG93biB3aWRnZXRzIiBpbiB0aGUg ZG9jdW1lbnRhdGlvbi4KCiAgIHByb2NlZHVyZSBEZXN0cm95X0NiIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLSAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg dXNlZCBhcyBhIGNhbGxiYWNrIHRvIGRlc3Ryb3kgYSB3aWRnZXQuCiAgIC0tICBBbGwgaXQgZG9l cyBpcyBjYWxsIERlc3Ryb3kgb24gaXRzIGFyZ3VtZW50LCBidXQgaXRzIHByb2ZpbGUgaXMKICAg LS0gIGNvbXBhdGlibGUgd2l0aCB0aGUgaGFuZGxlcnMgZm91bmQgaW4gR3RrLkhhbmRsZXJzLgoK ICAgcHJvY2VkdXJlIFVucGFyZW50IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3MpOwogICAtLSAgRGV0YWNoIHRoZSB3aWRnZXQgZnJvbSBpdHMgcGFyZW50LgogICAtLSAg QXMgYSBzaWRlIGVmZmVjdCwgdGhlIHdpZGdldCB3aWxsIGJlIGVyYXNlZCBmcm9tIHRoZSBzY3Jl ZW4uCiAgIC0tICBOb3RlIHRoYXQgV2lkZ2V0IHdpbGwgYmUgZGVzdHJveWVkIGlmIGl0cyByZWZl cmVuY2UgY291bnQgcmVhY2hlcyAwLgogICAtLSAgVGh1cywgaWYgeW91IHdhbnQgdG8gcmV1c2Ug aXQsIHlvdSBzaG91bGQgZmlyc3QgR3RrLk9iamVjdC5SZWYgaXQsCiAgIC0tICBiZWZvcmUgY2Fs bGluZyBVbnBhcmVudC4KCiAgIHByb2NlZHVyZSBTaG93IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQpOwogICAtLSAgU2NoZWR1bGUgdGhlIHdpZGdldCB0byBiZSBkaXNwbGF5ZWQg b24gdGhlIHNjcmVlbiB3aGVuIGl0cyBwYXJlbnQgaXMKICAgLS0gIGFsc28gc2hvd24gKGVtaXRz IHRoZSAic2hvdyIgc2lnbmFsKS4KICAgLS0gIElmIGl0cyBhbmNlc3RvcnMgYXJlIGFscmVhZHkg bWFwcGVkIHRvIHRoZSBzY3JlZW4sIHRoZW4gdGhlIHdpZGdldCBpcwogICAtLSAgaW1tZWRpYXRl bHkgZGlzcGxheWVkIHRocm91Z2ggYSBjYWxsIHRvIE1hcCBiZWxvdy4KCiAgIHByb2NlZHVyZSBT aG93X05vdyAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIFNob3cg dGhlIHdpZGdldC4KICAgLS0gIElmIGl0IGlzIGFuIHVubWFwcGVkIHRvcGxldmVsIHdpZGdldCwg d2FpdCBmb3IgaXQgdG8gYmUgbWFwcGVkLiBUaGlzCiAgIC0tICBjcmVhdGVzIGEgcmVjdXJzaXZl IG1haW5fbG9vcC4KCiAgIHByb2NlZHVyZSBIaWRlIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdl dF9SZWNvcmQpOwogICAtLSAgSGlkZSB0aGUgd2lkZ2V0IGZyb20gdGhlIHNjcmVlbiAoZW1pdHMg dGhlICJoaWRlIiBzaWduYWwpLgogICAtLSAgSWYgV2lkZ2V0IHdhcyB2aXNpYmxlLCBpdCBpcyBp bW1lZGlhdGVseSBoaWRkZW4uCiAgIC0tICBJZiBvbmUgb2YgaXRzIGFuY2VzdG9yIGlzIGxhdGVy IHNob3duIG9uIHRoZSBzY3JlZW4sIFdpZGdldCB3b24ndAogICAtLSAgYXBwZWFyLgoKICAgcHJv Y2VkdXJlIFNob3dfQWxsIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAt LSAgU2hvdyBXaWRnZXQgYW5kIGFsbCBpdHMgY2hpbGRyZW4gcmVjdXJzaXZlbHkuCgogICBwcm9j ZWR1cmUgSGlkZV9BbGwgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0t ICBIaWRlIFdpZGdldCBhbmQgYWxsIGl0cyBjaGlsZHJlbi4KICAgLS0gIE5vdGUgdGhhdCBpZiB5 b3Ugc2ltcGx5IHdhbnQgdG8gZGVsZXRlIFdpZGdldCBmcm9tIHRoZSBzY3JlZW4sIHlvdSBjYW4K ICAgLS0gIHNpbXBseSBjYWxsIHRoZSBIaWRlIHN1YnByb2dyYW0gb24gaXQuIFRoaXMgcHJvY2Vk dXJlIEhpZGVfQWxsIHNob3VsZAogICAtLSAgb25seSBiZSB1c2VkIGlmIHlvdSB3YW50IHRvIHVu c2NoZWR1bGUgYSB3aWRnZXQgdG8gYmUgZGlzcGxheWVkIGxhdGVyLAogICAtLSAgbm90IHRvIHJl bW92ZSBhbiBhY3R1YWwgd2lkZ2V0IGZyb20gdGhlIHNjcmVlbi4KCiAgIHByb2NlZHVyZSBNYXAg KFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBNYXAgYSB3aWRnZXQg dG8gdGhlIHNjcmVlbi4KICAgLS0gIEEgd2luZG93IGlzIGNyZWF0ZWQgZm9yIGl0IG9uIHRoZSBz Y3JlZW4gKHRocm91Z2ggYSBjYWxsIHRvIFJlYWxpemUpIGFuZAogICAtLSAgV2lkZ2V0IGlzIHRo ZW4gZHJhd24gb24gdGhlIHNjcmVlbiAoaWYgaXRzIGFuY2VzdG9ycyBhcmUgYWxzbyBtYXBwZWQp LgogICAtLSAgVGhpcyBmdW5jdGlvbiBpcyByZWN1cnNpdmUgYW5kIHdpbGwgYWxzbyBtYXAgYWxs IHRoZSBjaGlsZHJlbiBvZiBXaWRnZXQuCiAgIC0tCiAgIC0tICBJdCBpcyByZWNvbW1lbmRlZCB0 byB1c2UgdGhlIGhpZ2hlci1sZXZlbCBTaG93IGluc3RlYWQuCgogICBwcm9jZWR1cmUgVW5tYXAg KFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBVbm1hcCBhIHdpZGdl dCBmcm9tIHRoZSBzY3JlZW4uCiAgIC0tICBUaGlzIHJlc3VsdHMgaW4gdGhlIHdpZGdldCBiZWlu ZyBoaWRkZW4sIGJ1dCBub3QgZGVzdHJveWVkLiBJdCBjYW4gYmUKICAgLS0gIHNob3duIGFnYWlu IGFueSB0aW1lIHRocm91Z2ggYSBjYWxsIHRvIE1hcCAocHJvdmlkZWQgaXRzIGFuY2VzdG9ycyBh cmUKICAgLS0gIGFsc28gbWFwcGVkKS4KICAgLS0KICAgLS0gIEl0IGlzIHJlY29tbWVuZGVkIHRv IHVzZSB0aGUgaGlnaGVyLWxldmVsIEhpZGUgaW5zdGVhZC4KCiAgIHByb2NlZHVyZSBSZWFsaXpl IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgQ3JlYXRlIGEgd2lu ZG93IGZvciBXaWRnZXQgYW5kIGl0cyBhbmNlc3RvcnMgKGVtaXQgdGhlICJyZWFsaXplIiBzaWdu YWwpCiAgIC0tICBUaGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgd2lkZ2V0IHdpbGwgYXBwZWFy IG9uIHRoZSBzY3JlZW4sIGJ1dAogICAtLSAgcmVzb3VyY2VzIHN1Y2ggYXMgY29sb3JtYXBzLCBl dGMuIGJlY29tZSBhdmFpbGFibGUuCiAgIC0tICBTb21lIHJvdXRpbmVzIHJlcXVpcmUgdGhhdCB0 aGUgd2lkZ2V0IGlzIHJlYWxpemVkIGJlZm9yZSBhbnkgY2FsbC4KICAgLS0gIFlvdSBtdXN0IHNl dCB0aGUgRXZlbnRfTWFzayBiZWZvcmUgY2FsbGluZyB0aGlzIHJvdXRpbmUgaWYgeW91IHdhbnQg dG8KICAgLS0gIGNoYW5nZSBpdCBmcm9tIGl0cyBkZWZhdWx0IHZhbHVlLgoKICAgcHJvY2VkdXJl IFVucmVhbGl6ZSAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIEhp ZGUgdGhlIHdpZGdldCBmcm9tIHRoZSBzY3JlZW4gYW5kIGRlbGV0ZXMgdGhlIGFzc29jaWF0ZWQg d2luZG93LgogICAtLSAgVGhpcyBkb2VzIG5vdCBkZXN0cm95IHRoZSB3aWRnZXQgaXRzZWxmLCBv bmx5IGl0cyBzZXJ2ZXItc2lkZQogICAtLSAgcmVzb3VyY2VzLgoKICAgZ2VuZXJpYwogICAgICB0 eXBlIFdpZGdldF9UeXBlIGlzIG5ldyBHdGtfV2lkZ2V0X1JlY29yZCB3aXRoIHByaXZhdGU7CiAg ICAgIHdpdGggcHJvY2VkdXJlIFJlYWxpemVfUHJvYyAoV2lkZ2V0IDogYWNjZXNzIFdpZGdldF9U eXBlJ0NsYXNzKTsKICAgcGFja2FnZSBSZWFsaXplX0hhbmRsaW5nIGlzCgogICAgICBwcm9jZWR1 cmUgU2V0X1JlYWxpemUgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcyk7 CiAgICAgIC0tICBTZXQgdGhlIHJlYWxpemUgaGFuZGxlciBhdCB0aGUgbG93IGxldmVsLgogICAg ICAtLSAgVGhpcyBpcyBuZWVkZWQgdG8gcmVwbGFjZSB0aGUgZGVmYXVsdCByZWFsaXplIGluIG5l dyB3aWRnZXRzLgoKICAgZW5kIFJlYWxpemVfSGFuZGxpbmc7CgogICBmdW5jdGlvbiBHZXRfVHlw ZSByZXR1cm4gR3RrLkd0a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSBpbnRlcm5hbCB2YWx1ZSBh c3NvY2lhdGVkIHdpdGggYSBHdGtfV2lkZ2V0LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAtLSBEcmF3aW5nIGEgd2lkZ2V0IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHBy b2NlZHVyZSBRdWV1ZV9EcmF3IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwog ICAtLSAgQWRkIGEgZHJhd2luZyByZXF1ZXN0IHRvIHRoZSBldmVudCBxdWV1ZSBmb3IgdGhlIHdo b2xlIHdpZGdldC4KICAgLS0gIFRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjYWxsaW5nIERy YXcgZGlyZWN0bHksIHNpbmNlIEd0a0FkYSBncm91cHMKICAgLS0gIGRyYXdpbmcgcmVxdWVzdHMg YXMgbXVjaCBhcyBwb3NzaWJsZSB0byBzcGVlZCB1cCB0aGUgZHJhd2luZyBwcm9jZXNzLgogICAt LSAgVGhlIGFjdHVhbCBkcmF3aW5nIHdpbGwgdGFrZSBwbGFjZSBhcyBzb29uIGFzIEd0a0FkYSBp cyBub3QgYnVzeQogICAtLSAgcHJvY2Vzc2luZyBvdGhlciBldmVudHMsIGJ1dCBiZWZvcmUgaWRs ZSBldmVudHMuCgogICBwcm9jZWR1cmUgUXVldWVfRHJhd19BcmVhCiAgICAgKFdpZGdldCA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgWCAgICAgIDogR2ludDsKICAgICAgWSAgICAg IDogR2ludDsKICAgICAgV2lkdGggIDogR2ludDsKICAgICAgSGVpZ2h0IDogR2ludCk7CiAgIC0t ICBBZGQgYSBkcmF3aW5nIHJlcXVlc3QgdG8gdGhlIGV2ZW50IHF1ZXVlIGZvciBwYXJ0IG9mIHRo ZSB3aWRnZXQuCiAgIC0tICBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYXQgY2FsbGluZyBEcmF3 IGRpcmVjdGx5IChzZWUgUXVldWVfRHJhdykuCgogICBwcm9jZWR1cmUgUXVldWVfQ2xlYXIgKFdp ZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBBZGQgYSBjbGVhciByZXF1 ZXN0IHRvIHRoZSBldmVudCBxdWV1ZSBmb3IgdGhlIHdob2xlIHdpZGdldC4KICAgLS0gIFRoaXMg aXMgYWRkZWQgdG8gdGhlIHNhbWUgbGlzdCBhcyBmb3IgUXVldWVfRHJhdywgYW5kIHRodXMgaXMg Y29hbGVzY2VkCiAgIC0tICBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpdGggb3RoZXIgZHJhd2luZyBy ZXF1ZXN0cy4KCiAgIHByb2NlZHVyZSBRdWV1ZV9DbGVhcl9BcmVhCiAgICAgKFdpZGdldCA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgWCAgICAgIDogR2ludDsKICAgICAgWSAgICAg IDogR2ludDsKICAgICAgV2lkdGggIDogR2ludDsKICAgICAgSGVpZ2h0IDogR2ludCk7CiAgIC0t ICBBZGQgYSBjbGVhciByZXF1ZXN0IHRvIHRoZSBldmVudCBxdWV1ZSBmb3IgcGFydCBvZiB0aGUg d2lkZ2V0LgogICAtLSAgVGhpcyBpcyBhZGRlZCB0byB0aGUgc2FtZSBsaXN0IGFzIGZvciBRdWV1 ZV9EcmF3LCBhbmQgdGh1cyBpcyBjb2FsZXNjZWQKICAgLS0gIGFzIG11Y2ggYXMgcG9zc2libGUg d2l0aCBvdGhlciBkcmF3aW5nIHJlcXVlc3RzLgoKICAgcHJvY2VkdXJlIFF1ZXVlX1Jlc2l6ZSAo V2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIFF1ZXVlIGRyYXdpbmcg cmVxdWVzdHMgYWZ0ZXIgYSByZXNpemluZyBvZiB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBjbGVh cnMgdGhlIHdpZGdldCwgYW5kIGl0cyBwYXJlbnQgaWYgYW55LCBzbyB0aGF0IGV2ZXJ5dGhpbmcg aXMKICAgLS0gIGNvcnJlY3RseSByZWRyYXduLgogICAtLSAgWW91IHNob3VsZCBub3QgaGF2ZSB0 byBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkuCgogICBwcm9jZWR1cmUgRHJhdwogICAgIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIEFyZWEgICA6IGluIEdkay5S ZWN0YW5nbGUuR2RrX1JlY3RhbmdsZSA6PSBHZGsuUmVjdGFuZ2xlLkZ1bGxfQXJlYSk7CiAgIC0t ICBFbWl0IGEgImRyYXciIHNpZ25hbCBmb3IgYSBzcGVjaWZpYyBhcmVhIG9mIHRoZSB3aWRnZXQu CiAgIC0tICBUaGUgdmlzdWFsIGFzcGVjdCBtaWdodCBiZSBkaWZmZXJlbnQgd2hldGhlciB0aGUg d2lkZ2V0IGhhcyB0aGUgZm9jdXMKICAgLS0gIG9yIG5vdC4KCiAgIHByb2NlZHVyZSBEcmF3X0Zv Y3VzIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgRW1pdCBhICJk cmF3X2ZvY3VzIiBzaWduYWwgZm9yIHRoZSB3aWRnZXQuCiAgIC0tICBUaGUgd2lkZ2V0IHdpbGwg YmUgcGFpbnRlZCBhcyBpdCBhcHBlYXJzIHdoZW4gaXQgaGFzIHRoZSBmb2N1cy4KCiAgIHByb2Nl ZHVyZSBEcmF3X0RlZmF1bHQgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAg IC0tICBFbWl0IGEgImRyYXdfZGVmYXVsdCIgc2lnbmFsIGZvciB0aGUgd2lkZ2V0LgogICAtLSAg VGhlIHdpZGdldCB3aWxsIGJlIHBhaW50ZWQgYXMgaXQgYXBwZWFycyB3aGVuIGl0IGRvZXNuJ3Qg aGF2ZSB0aGUgZm9jdXMuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTaXplIGFu ZCBwb3NpdGlvbiAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNp emVfUmVxdWVzdAogICAgIChXaWRnZXQgICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsK ICAgICAgUmVxdWlzaXRpb24gOiBpbiBvdXQgR3RrX1JlcXVpc2l0aW9uKTsKICAgLS0gIEVtaXQg YSAic2l6ZV9yZXF1ZXN0IiBldmVudCBmb3IgdGhlIHdpZGdldAoKICAgcHJvY2VkdXJlIFNpemVf QWxsb2NhdGUKICAgICAoV2lkZ2V0ICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAg ICAgQWxsb2NhdGlvbiA6IGluIG91dCBHdGtfQWxsb2NhdGlvbik7CiAgIC0tICBFbWl0IGEgInNp emVfYWxsb2NhdGUiIGV2ZW50IGZvciB0aGUgd2lkZ2V0LgogICAtLSAgQWxsb2NhdGlvbidzaXpl IGlzIGZpcnN0IGNvbnN0cmFpbmVkIHRvIGEgcmFuZ2UgYmV0d2VlbiAxeDEgYW5kCiAgIC0tICAz Mjc2N3gzMjc2Ny4KICAgLS0gIEEgY2xlYXIgYW5kIGRyYXcgcmVxdWVzdCBpcyBhbHNvIHF1ZXVl ZCBpZiByZXF1aXJlZC4KCiAgIGZ1bmN0aW9uIEdldF9DaGlsZF9SZXF1aXNpdGlvbgogICAgIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHdGtfUmVxdWlzaXRpb247 CiAgIC0tICBSZXR1cm4gdGhlIHNpemUgcmVxdWVzdHMgYnkgdGhlIHdpZGdldC4KICAgLS0gIFRo aXMgaXMgdGhlIGlkZWFsIHNpemUgZm9yIHRoZSB3aWRnZXQsIG5vdCBuZWNlc3NhcmlseSBpdHMg YWN0dWFsIHNpemUuCiAgIC0tICBTZWUgdGhlIHVzZXIgZ3VpZGUncyBzZWN0aW9uIG9uIGhvdyB0 byBjcmVhdGUgbmV3IHdpZGdldHMgZm9yIG1vcmUKICAgLS0gIGluZm9ybWF0aW9uIG9uIHRoZSBz aXplIHJlcXVpc2l0aW9uIGFuZCBhbGxvY2F0aW9uLgoKICAgcHJvY2VkdXJlIFNldF9VUG9zaXRp b24KICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBYLCBZICAg OiBpbiBHaW50KTsKICAgLS0gIE1vZGlmeSB0aGUgcG9zaXRpb24gb2YgdGhlIHdpZGdldC4KICAg LS0gIFRoaXMgc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgdG9wbGV2ZWwgd2lkZ2V0cyAod2luZG93 cyBhbmQgZGlhbG9ncyksCiAgIC0tICBzaW5jZSBvdGhlciB3aWRnZXRzJyBwb3NpdGlvbnMgYXJl IGhhbmRsZWQgYnkgdGhlaXIgcGFyZW50LgoKICAgcHJvY2VkdXJlIFNldF9VU2l6ZQogICAgIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFdpZHRoLCBIZWlnaHQgOiBp biBHaW50KTsKICAgLS0gIE1vZGlmeSB0aGUgc2l6ZSBvZiB0aGUgd2lkZ2V0LgogICAtLSAgVGhp cyBzZXRzIGFuIGFic29sdXRlIHNpemUgZm9yIHRoZSB3aWRnZXQsIG5vIG1hdHRlciB3aGF0IGl0 cyByZXF1ZXN0ZWQKICAgLS0gIHNpemUgd291bGQgYmUuIEZvciBHdGtfV2luZG93cywgeW91IHNo b3VsZCBjb25zaWRlciB1c2luZwogICAtLSAgU2V0X0RlZmF1bHRfU2l6ZSBpbnN0ZWFkLCB3aGlj aCBzZXRzIGEgbWluaW1hbCBzaXplLCBidXQgdXNlIHRoZQogICAtLSAgd2lkZ2V0J3MgcmVxdWVz dGVkIHNpemUgaWYgaXQgaXMgYmlnZ2VyLgogICAtLSAgSWYgV2lkdGggb3IgSGVpZ2h0IGlzIG5l Z2F0aXZlLCB0aGV5IGFyZSBpZ25vcmVkLCBhbmQgdGhlIHdpZGdldCdzCiAgIC0tICBkZWZhdWx0 IHdpZHRoIGlzIGtlcHQuCgogICBmdW5jdGlvbiBHZXRfQWxsb2NhdGlvbl9XaWR0aAogICAgIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHdWludDsKICAgLS0gIFJl dHVybiB0aGUgY3VycmVudCB3aWR0aCBvZiB0aGUgd2lkZ2V0LgoKICAgZnVuY3Rpb24gR2V0X0Fs bG9jYXRpb25fSGVpZ2h0CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkg cmV0dXJuIEd1aW50OwogICAtLSAgUmV0dXJuIHRoZSBjdXJyZW50IGhlaWdodCBvZiB0aGUgd2lk Z2V0LgoKICAgZnVuY3Rpb24gR2V0X0FsbG9jYXRpb25fWCAoV2lkZ2V0IDogYWNjZXNzIEd0a19X aWRnZXRfUmVjb3JkKSByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgY3VycmVudCBwb3Np dGlvbiBvZiB0aGUgd2lkZ2V0LCByZWxhdGl2ZSB0byBpdHMgcGFyZW50LgoKICAgZnVuY3Rpb24g R2V0X0FsbG9jYXRpb25fWSAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKSByZXR1 cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgd2lkZ2V0 LCByZWxhdGl2ZSB0byBpdHMgcGFyZW50LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEFj Y2VsZXJhdG9ycyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBBZGRfQWNj ZWxlcmF0b3IKICAgICAoV2lkZ2V0ICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwog ICAgICBBY2NlbF9TaWduYWwgOiBpbiBTdHJpbmc7CiAgICAgIEFjY2VsX0dyb3VwICA6IGluIEd0 ay5BY2NlbF9Hcm91cC5HdGtfQWNjZWxfR3JvdXA7CiAgICAgIEFjY2VsX0tleSAgICA6IGluIEdk ay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgICA6IGluIEdkay5UeXBlcy5H ZGtfTW9kaWZpZXJfVHlwZTsKICAgICAgQWNjZWxfRmxhZ3MgIDogaW4gR3RrLkFjY2VsX0dyb3Vw Lkd0a19BY2NlbF9GbGFncyk7CiAgIC0tICBBZGQgYSBuZXcgYWNjZWxlcmF0b3IgZm9yIHRoZSB3 aWRnZXQuCiAgIC0tICBUaGUgc2lnbmFsIEFjY2VsX1NpZ25hbCB3aWxsIGJlIHNlbnQgdG8gV2lk Z2V0IHdoZW4gdGhlIG1hdGNoaW5nCiAgIC0tICBrZXkgaXMgcHJlc3NlZCBhbmQgdGhlIHdpZGdl dCBoYXMgdGhlIGZvY3VzLgoKICAgcHJvY2VkdXJlIFJlbW92ZV9BY2NlbGVyYXRvcgogICAgIChX aWRnZXQgICAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIEFjY2VsX0dyb3Vw ICA6IGluIEd0ay5BY2NlbF9Hcm91cC5HdGtfQWNjZWxfR3JvdXA7CiAgICAgIEFjY2VsX0tleSAg ICA6IGluIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgICA6IGluIEdk ay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7CiAgIC0tICBSZW1vdmUgYW4gYWNjZWxlcmF0b3Ig Zm9yIHRoZSB3aWRnZXQuCgogICBwcm9jZWR1cmUgUmVtb3ZlX0FjY2VsZXJhdG9ycwogICAgIChX aWRnZXQgICAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIEFjY2VsX1NpZ25h bCA6IGluIFN0cmluZzsKICAgICAgVmlzaWJsZV9Pbmx5IDogaW4gQm9vbGVhbiA6PSBUcnVlKTsK ICAgLS0gIFJlbW92ZSBhbGwgdGhlIGFjY2VsZXJhdG9ycyBmb3IgdGhlIHdpZGdldCB0aGF0IGVt aXRzIHRoZSBBY2NlbF9TaWduYWwKICAgLS0gIHNpZ25hbCB3aGVuIHRoZSBrZXkgaXMgcHJlc3Nl ZC4KICAgLS0gIFZpc2libGVfT25seSBpcyBjdXJyZW50bHkgdW51c2VkIGluIHRoZSBjb2RlIG9m IGd0aysuCgogICBmdW5jdGlvbiBBY2NlbGVyYXRvcl9TaWduYWwKICAgICAoV2lkZ2V0ICAgICAg IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBY2NlbF9Hcm91cCAgOiBpbiBHdGsu QWNjZWxfR3JvdXAuR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAgOiBpbiBHZGsu VHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9Nb2RzICAgOiBpbiBHZGsuVHlwZXMuR2Rr X01vZGlmaWVyX1R5cGUpIHJldHVybiBHdWludDsKICAgLS0gIFJldHVybiB0aGUgc2lnbmFsIGlk IG9mIHRoZSBzaWduYWwgZW1pdHRlZCB3aGVuIEFjY2VsX0tleSBpcyBwcmVzc2VkCiAgIC0tICBp bnNpZGUgdGhlIHdpZGdldC4KCiAgIHByb2NlZHVyZSBMb2NrX0FjY2VsZXJhdG9ycyAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIExvY2sgdGhlIGFjY2VsZXJhdG9y cyBmb3IgdGhlIHdpZGdldC4KICAgLS0gIE5vIG5ldyBhY2NlbGVyYXRvciBjYW4gYmUgYWRkZWQg dG8gV2lkZ2V0ICh0aGUgZGVmYXVsdCBiZWhhdmlvciBpcwogICAtLSAgdGhhdCB0aGUgdXNlciBj YW4gZHluYW1pY2FsbHkgY3JlYXRlIG5ldyBhY2NlbGVyYXRvcnMsIGZvciBpbnN0YW5jZQogICAt LSAgYnkgcHJlc3NpbmcgYSBub3QteWV0IGFzc2lnbmVkIGtleSBvbiBhbnkgbWVudSBpdGVtLgog ICAtLSAgSWYgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiBvbiB0aGUgbWVudV9pdGVtLCB0aGlzIGJl aGF2aW9yIHdpbGwgbm90CiAgIC0tICBsb25nZXIgYmUgYWN0aXZhdGVkLgoKICAgcHJvY2VkdXJl IFVubG9ja19BY2NlbGVyYXRvcnMgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7 CiAgIC0tICBVbmxvY2sgdGhlIGFjY2VsZXJhdG9ycyBmb3IgdGhlIHdpZGdldC4KICAgLS0gIEl0 IGlzIG5vdyBwb3NzaWJsZSB0byBhZGQgbmV3IGFjY2VsZXJhdG9ycyB0byB0aGUgd2lkZ2V0LgoK ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgRXZlbnRzIGFuZCBzaWduYWxzIC0t CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEV2ZW50CiAgICAgKFdp ZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgICAgRXZlbnQgIDogR2Rr LkV2ZW50Lkdka19FdmVudCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBFbWl0IGEgc2lnbmFsIG9uIHRo ZSB3aWRnZXQuCiAgIC0tICBUaGUgZXhhY3Qgc2lnbmFsIGRlcGVuZHMgb24gdGhlIGV2ZW50IHR5 cGUgKGkuZS4gaWYgdGhlIHR5cGUgaXMKICAgLS0gIEdka19CdXR0b25fUHJlc3MsIHRoZW4gYSAi YnV0dG9uX3ByZXNzIiBzaWduYWwgaXMgZW1pdHRlZCkuCgogICBwcm9jZWR1cmUgQWN0aXZhdGUg KFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBFbWl0IGFuIGFjdGl2 YXRlIHNpZ25hbCBvbiB0aGUgd2lkZ2V0LgogICAtLSAgVGhlIGV4YWN0IHNpZ25hbCBlbWl0dGVk IGRlcGVuZHMgb24gdGhlIHdpZGdldCB0eXBlIChpLmUuIGZvciBhCiAgIC0tICBHdGtfQnV0dG9u IHRoaXMgZW1pdHMgYSAiY2xpY2tlZCIgc2lnbmFsLCBmb3IgYSBHdGtfRWRpdGFibGUgdGhpcyBl bWl0cwogICAtLSAgdGhlICJhY3RpdmF0ZSIgc2lnbmFsLCAuLi4pLgoKICAgcHJvY2VkdXJlIEdy YWJfRm9jdXMgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBFbWl0 IHRoZSAiZ3JhYl9mb2N1cyIgc2lnbmFsIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBpcyBz ZW50IHdoZW4gdGhlIHdpZGdldCBnZXRzIHRoZSBmb2N1cy4gSXRzIHZpc3VhbCBhc3BlY3QgbWln aHQKICAgLS0gIGNoYW5nZS4KICAgLS0gIFRoZSAiQ2FuX0ZvY3VzIiBmbGFnIG11c3QgaGF2ZSBi ZWVuIHNldCBmaXJzdC4KCiAgIHByb2NlZHVyZSBTZXRfRXZlbnRzCiAgICAgKFdpZGdldCA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgRXZlbnRzIDogaW4gICAgIEdkay5UeXBlcy5H ZGtfRXZlbnRfTWFzayk7CiAgIC0tICBTZXRzIHRoZSBldmVudCBtYXNrIGZvciB0aGUgd2lkZ2V0 LgogICAtLSAgV2lkZ2V0IHNob3VsZCBub3QgaGF2ZSBiZWVuIHJlYWxpemVkIGJlZm9yZSwgb3Ig bm90aGluZyBpcyBkb25lLgogICAtLSAgVGhpcyBpcyB0aGUgb25seSB3YXkgeW91IGNhbiBleHBs aWNpdGx5IGdldCBtb3VzZSBvciBrZXlib2FyZHMgZXZlbnRzIG9uCiAgIC0tICB3aWRnZXRzIHRo YXQgZG8gbm90IGF1dG9tYXRpY2FsbHkgZ2V0IHRoZW0sIGFzIGZvciBpbnN0YW5jZSBpbiBhCiAg IC0tICBHdGtfRHJhd2luZ19BcmVhLgoKICAgZnVuY3Rpb24gR2V0X0V2ZW50cwogICAgIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHZGsuVHlwZXMuR2RrX0V2ZW50 X01hc2s7CiAgIC0tICBHZXQgdGhlIGV2ZW50IG1hc2sgZm9yIHRoZSB3aWRnZXQuCiAgIC0tICBU aGlzIGluZGljYXRlcyB0aGUgbGlzdCBvZiBldmVudHMgdGhhdCB0aGUgd2lkZ2V0IHJlY2VpdmVz LgoKICAgcHJvY2VkdXJlIEFkZF9FdmVudHMKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkOwogICAgICBFdmVudHMgOiBpbiAgICAgR2RrLlR5cGVzLkdka19FdmVudF9NYXNr KTsKICAgLS0gIEFkZCBzb21lIGV2ZW50cyB0byB0aGUgY3VycmVudCBldmVudCBtYXNrIG9mIHRo ZSB3aWRnZXQuCgogICBwcm9jZWR1cmUgU2V0X0V4dGVuc2lvbl9FdmVudHMKICAgICAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBNb2RlICAgOiBpbiAgICAgR2RrLlR5 cGVzLkdka19FeHRlbnNpb25fTW9kZSk7CiAgIC0tICBTZXQgdGhlIGV4dGVuc2lvbiBldmVudCBt YXNrIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBpcyB1c2VkIHRvIGFjdGl2YXRlIHNvbWUg c3BlY2lhbCBpbnB1dCBtb2RlcyBmb3Igb3RoZXIgZGV2aWNlcyB0aGFuCiAgIC0tICBrZXlib2Fy ZCBhbmQgbW91c2UuCgogICBmdW5jdGlvbiBHZXRfRXh0ZW5zaW9uX0V2ZW50cwogICAgIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHZGsuVHlwZXMuR2RrX0V4dGVu c2lvbl9Nb2RlOwogICAtLSAgUmV0dXJuIHRoZSBjdXJyZW50IGV4dGVuc2lvbiBldmVudHMgbWFz ay4KCiAgIGZ1bmN0aW9uIERlZmF1bHRfTW90aW9uX05vdGlmeV9FdmVudAogICAgIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgICAgIEV2ZW50ICA6IEdkay5FdmVu dC5HZGtfRXZlbnQpIHJldHVybiBHaW50OwogICAtLSAgQWNjZXNzIHRvIHRoZSBzdGFuZGFyZCBk ZWZhdWx0IGNhbGxiYWNrIGZvciBtb3Rpb24gZXZlbnRzOgogICAtLSAgVGhpcyBpcyBtYWlubHkg dXNlZCBmb3IgcnVsZXJzIGluIEd0ay5SdWxlciAoU2VlIHRoZSBleGFtcGxlIGluCiAgIC0tICB0 ZXN0Z3RrLCB3aXRoIGNyZWF0ZV9ydWxlcnMuYWRiKQoKICAgZnVuY3Rpb24gSGFzX0RlZmF1bHRf TW90aW9uX05vdGlmeV9IYW5kbGVyCiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZCdDbGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBSZXR1cm4gVHJ1ZSBpZiBXaWRnZXQg aGFzIGEgZGVmYXVsdCBoYW5kbGVyIGZvciBtb3Rpb25fbm90aWZ5IGV2ZW50cy4KICAgLS0gIE5v dGUgdGhhdCB0aGUgZnVuY3Rpb24gRGVmYXVsdF9Nb3Rpb25fTm90aWZ5X0V2ZW50IHNob3VsZCBu b3QgYmUgY2FsbGVkCiAgIC0tICBpZiB0aGlzIG9uZSByZXR1cm5zIEZhbHNlLCBzaW5jZSBpdCB3 b3VsZCBjcmVhdGUgYSBzZWdtZW50YXRpb24gZmF1bHQuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICAtLSBDb2xvcnMgYW5kIGNvbG9ybWFwcyAtLQogICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X0NvbG9ybWFwCiAgICAgKFdpZGdldCA6IGFjY2Vz cyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29sb3JtYXA7CiAgIC0t ICBSZXR1cm4gdGhlIGNvbG9ybWFwIHVzZWQgZm9yIHRoZSB3aWRnZXQuIFRoaXMgd2lsbCBnZW5l cmFsbHkgYmUgdGhlCiAgIC0tICBzYW1lIG9uZSBmb3IgYWxsIHdpZGdldHMsIGJ1dCBtaWdodCBi ZSBkaWZmZXJlbnQgaWYgZm9yIGluc3RhbmNlIGEKICAgLS0gIEd0a19EcmF3aW5nX0FyZWEgbmVl ZHMgdG8gZGlzcGxheSBzb21lIGRpZmZlcmVudCBjb2xvcnMgb24gYSBzY3JlZW4KICAgLS0gIHRo YXQgb25seSBoYXMgYSBsaW1pdGVkIGFtb3VudCBvZiBjb2xvcnMuCgogICBmdW5jdGlvbiBHZXRf VmlzdWFsCiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0dXJuIEdk ay5WaXN1YWwuR2RrX1Zpc3VhbDsKICAgLS0gIEdldCB0aGUgdmlzdWFsIHVzZWQgZm9yIHRoZSB3 aWRnZXQuCiAgIC0tICBJLmUuIHRoZSBzdHJ1Y3R1cmUgdGhhdCBpbmRpY2F0ZXMgdGhlIGRlcHRo IG9mIHRoZSB3aWRnZXQgKG51bWJlciBvZgogICAtLSAgYml0cyBwZXIgcGl4ZWwpLCBhbmQgc29t ZSBpbmZvcm1hdGlvbiB1c2VkIGludGVybmFsbHkgYnkgR3RrQWRhIHRvCiAgIC0tICBoYW5kbGUg Y29sb3JzIGFuZCBjb2xvcm1hcHMuCgogICBwcm9jZWR1cmUgU2V0X0NvbG9ybWFwCiAgICAgKFdp ZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQ21hcCA6IEdkay5Db2xvci5H ZGtfQ29sb3JtYXApOwogICAtLSAgTW9kaWZ5IHRoZSBjb2xvcm1hcCBvZiB0aGUgd2lkZ2V0Lgog ICAtLSAgVGhlIHdpZGdldCBtdXN0IG5vdCBoYXZlIGJlZW4gcmVhbGl6ZWQuCgogICBwcm9jZWR1 cmUgU2V0X1Zpc3VhbAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAg ICAgIFZpc3VhbCA6IEdkay5WaXN1YWwuR2RrX1Zpc3VhbCk7CiAgIC0tICBNb2RpZnkgdGhlIHZp c3VhbCBvZiB0aGUgd2lkZ2V0LgogICAtLSAgVGhlIHdpZGdldCBtdXN0IG5vdCBoYXZlIGJlZW4g cmVhbGl6ZWQuCgogICBwcm9jZWR1cmUgUHVzaF9Db2xvcm1hcCAoQ21hcCA6IEdkay5Db2xvci5H ZGtfQ29sb3JtYXApOwogICAtLSAgTW9kaWZ5IHRlbXBvcmFyaWx5IHRoZSBkZWZhdWx0IGNvbG9y bWFwIHNldCBmb3IgbmV3bHkgY3JlYXRlZCB3aWRnZXRzLgogICAtLSAgWW91IHNob3VsZCB1c2Ug dGhpcyBpbiBwYWlyIHdpdGggUG9wX0NvbG9ybWFwIGJlbG93IChQdXNoIHRoZSBuZXcgdmFsdWUs CiAgIC0tICBjcmVhdGUgdGhlIHdpZGdldCwgYW5kIHBvcCB0aGUgdmFsdWUpLgoKICAgcHJvY2Vk dXJlIFBvcF9Db2xvcm1hcDsKICAgLS0gIFNlZSBQdXNoX0NvbG9ybWFwIGZvciBtb3JlIGluZm9y bWF0aW9uLgoKICAgcHJvY2VkdXJlIFB1c2hfVmlzdWFsIChWaXN1YWwgOiBHZGsuVmlzdWFsLkdk a19WaXN1YWwpOwogICAtLSAgTW9kaWZ5IHRlbXBvcmFyaWx5IHRoZSBkZWZhdWx0IHZpc3VhbCBz ZXQgZm9yIG5ld2x5IGNyZWF0ZWQgd2lkZ2V0cy4KICAgLS0gIFlvdSBzaG91bGQgdXNlIHRoaXMg aW4gcGFpciB3aXRoIFBvcF9Db2xvcm1hcCBiZWxvdyAoUHVzaCB0aGUgbmV3IHZhbHVlLAogICAt LSAgY3JlYXRlIHRoZSB3aWRnZXQsIGFuZCBwb3AgdGhlIHZhbHVlKS4KCiAgIHByb2NlZHVyZSBQ b3BfVmlzdWFsOwogICAtLSAgU2VlIFB1c2hfVmlzdWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgoK ICAgZnVuY3Rpb24gR2V0X0RlZmF1bHRfQ29sb3JtYXAgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29s b3JtYXA7CiAgIC0tICBSZXR1cm4gdGhlIGRlZmF1bHQgY29sb3JtYXAgdXNlZCB3aGVuIGEgd2lk Z2V0IGlzIGNyZWF0ZWQuCgogICBwcm9jZWR1cmUgU2V0X0RlZmF1bHRfQ29sb3JtYXAgKENtYXAg OiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwKTsKICAgLS0gIE1vZGlmeSBwZXJtYW5lbnRseSB0aGUg ZGVmYXVsdCBjb2xvcm1hcCB1c2VkIHdoZW4gYSB3aWRnZXQgaXMgY3JlYXRlZC4KICAgLS0gIElm IHlvdSBvbmx5IHdhbnQgdG8gbW9kaWZ5IHRoaXMgY29sb3JtYXAgdGVtcG9yYXJpbHkgZm9yIGEg ZmV3IHdpZGdldHMsCiAgIC0tICB5b3Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIFB1c2hfQ29sb3Jt YXAgYW5kIFBvcF9Db2xvcm1hcCBpbnN0ZWFkLgoKICAgZnVuY3Rpb24gR2V0X0RlZmF1bHRfVmlz dWFsIHJldHVybiBHZGsuVmlzdWFsLkdka19WaXN1YWw7CiAgIC0tICBSZXR1cm4gdGhlIGRlZmF1 bHQgdmlzdWFsIHVzZWQgd2hlbiBhIG5ldyB3aWRnZXQgaXMgY3JlYXRlZC4KCiAgIHByb2NlZHVy ZSBTZXRfRGVmYXVsdF9WaXN1YWwgKFZpc3VhbCA6IEdkay5WaXN1YWwuR2RrX1Zpc3VhbCk7CiAg IC0tICBNb2RpZnkgcGVybWFuZW50bHkgdGhlIGRlZmF1bHQgdmlzdWFsIHVzZWQgd2hlbiBhIHdp ZGdldCBpcyBjcmVhdGVkLgogICAtLSAgSWYgeW91IG9ubHkgd2FudCB0byBtb2RpZnkgdGhpcyB2 aXN1YWwgdGVtcG9yYXJpbHkgZm9yIGEgZmV3IHdpZGdldHMsCiAgIC0tICB5b3Ugc2hvdWxkIGNv bnNpZGVyIHVzaW5nIFB1c2hfVmlzdWFsIGFuZCBQb3BfVmlzdWFsIGluc3RlYWQuCgogICAtLS0t LS0tLS0tLS0KICAgLS0gU3R5bGVzIC0tCiAgIC0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFB1 c2hfU3R5bGUgKFN0eWxlIDogR3RrLlN0eWxlLkd0a19TdHlsZSk7CiAgIC0tICBDaGFuZ2UgdGhl IGRlZmF1bHQgdmFsdWVzIGZvciBzdHlsZXMuCiAgIC0tICBUaGlzIGlzIGdlbmVyYWxseSB1c2Vk IGp1c3QgYmVmb3JlIGNyZWF0aW5nIGEgd2lkZ2V0LiBZb3Ugc2hvdWxkIHVzZQogICAtLSAgdGhp cyBwcm9jZWR1cmUgaW4gcGFpciB3aXRoIFBvcF9TdHlsZSAoUHVzaCB0aGUgbmV3IHZhbHVlLCBj cmVhdGUgdGhlCiAgIC0tICB3aWRnZXQgdGhlbiBwb3AgdGhlIHZhbHVlKQoKICAgcHJvY2VkdXJl IFBvcF9TdHlsZTsKICAgLS0gIFJlc3RvcmUgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBzdHlsZXMu CiAgIC0tICBUaGlzIGlzIGdlbmVyYWxseSB1c2VkIGp1c3QgYWZ0ZXIgY3JlYXRpbmcgYSB3aWRn ZXQuIFlvdSBzaG91bGQgdXNlCiAgIC0tICB0aGlzIHByb2NlZHVyZSBpbiBwYWlyIHdpdGggUHVz aF9TdHlsZSAoUHVzaCB0aGUgbmV3IHZhbHVlLCBjcmVhdGUgdGhlCiAgIC0tICB3aWRnZXQgdGhl biBwb3AgdGhlIHZhbHVlKQoKICAgcHJvY2VkdXJlIFNldF9TdHlsZQogICAgIChXaWRnZXQgOiBh Y2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFN0eWxlICA6IEd0ay5TdHlsZS5HdGtfU3R5 bGUpOwogICAtLSAgU2V0IHRoZSBzdHlsZSBmb3IgYSBnaXZlbiB3aWRnZXQuCgogICBmdW5jdGlv biBHZXRfU3R5bGUgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkKICAgICByZXR1 cm4gR3RrLlN0eWxlLkd0a19TdHlsZTsKICAgLS0gIFJldHVybiB0aGUgc3R5bGUgb2YgYSBnaXZl biB3aWRnZXQuCgogICBwcm9jZWR1cmUgTW9kaWZ5X1N0eWxlCiAgICAgKFdpZGdldCA6IGFjY2Vz cyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgU3R5bGUgIDogR3RrX1JjX1N0eWxlKTsKICAgLS0g IE1vZGlmeSB0aGUgZGVmYXVsdCBzdHlsZSBvZiBhIHdpZGdldC4KCiAgIHByb2NlZHVyZSBTZXRf RGVmYXVsdF9TdHlsZSAoU3R5bGUgOiBHdGsuU3R5bGUuR3RrX1N0eWxlKTsKICAgLS0gIFNldCB0 aGUgZGVmYXVsdCBnbG9iYWwgc3R5bGUuCgogICBmdW5jdGlvbiBHZXRfRGVmYXVsdF9TdHlsZSBy ZXR1cm4gR3RrLlN0eWxlLkd0a19TdHlsZTsKICAgLS0gIEdldCB0aGUgZGVmYXVsdCBnbG9iYWwg c3R5bGUuCgogICBwcm9jZWR1cmUgU2V0X1JjX1N0eWxlIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQpOwogICAtLSAgUmVzdG9yZSB0aGUgZGVmYXVsdCBzdHlsZSBvZiBhIHdpZGdl dC4KICAgLS0gIFRoZSBkZWZhdWx0IHN0eWxlIGlzIGdpdmVuIGJ5IHRoZSBjb25maWd1cmF0aW9u IGZpbGUgaW5pdGlhbGx5IHBhcnNlZAogICAtLSAgYnkgR3RrQWRhLgoKICAgcHJvY2VkdXJlIEVu c3VyZV9TdHlsZSAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIE1h a2Ugc3VyZSB0aGF0IHRoZSB3aWRnZXQgaGFzIGEgc3R5bGUgYXNzb2NpYXRlZCB0byBpdC4KICAg LS0gIEVpdGhlciB0aGUgZGVmYXVsdCBvbmUgYXMgc2V0IGJ5IFNldF9SY19TdHlsZSBhYm92ZSBv ciBvbmUgc2V0IGJ5IHRoZQogICAtLSAgdXNlciB3aXRoIFNldF9TdHlsZS4KCiAgIHByb2NlZHVy ZSBSZXN0b3JlX0RlZmF1bHRfU3R5bGUgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCk7CiAgIC0tICBSZXN0b3JlIHRoZSBkZWZhdWx0IHN0eWxlIHRoYXQgd2FzIHNldCBmb3IgdGhl IHdpZGdldC4KICAgLS0gIFRoZSBkZWZhdWx0IHN0eWxlIGlzIHRoZSBmaXJzdCBvbmUgdGhhdCB3 YXMgc2V0IGVpdGhlciBieSBhIGNhbGwKICAgLS0gIHRvIFNldF9TdHlsZSBvciBTZXRfUmNfU3R5 bGUuCgogICBwcm9jZWR1cmUgUmVzZXRfUmNfU3R5bGVzIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQpOwogICAtLSAgUmVzdG9yZSB0aGUgUmMgc3R5bGUgcmVjdXJzaXZlbHkgZm9y IHdpZGdldCBhbmQgaXRzIGNoaWxkcmVuLgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBX aWRnZXRzJyB0cmVlIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRf TmFtZQogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIE5hbWUg ICA6IGluIFN0cmluZyk7CiAgIC0tICBTZXQgdGhlIG5hbWUgZm9yIHRoZSB3aWRnZXQuCiAgIC0t ICBUaGlzIG5hbWUgaXMgdXNlZCBwdXJlbHkgaW50ZXJuYWxseSB0byBpZGVudGlmeSB0aGUgd2lk Z2V0LCBhbmQgZG9lcyBub3QKICAgLS0gIGdpdmUgYW55IHZpc3VhbCBjbHVlLgoKICAgZnVuY3Rp b24gR2V0X05hbWUgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0dXJuIFN0 cmluZzsKICAgLS0gIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgd2lkZ2V0IGlmIGl0IHdhcyBzZXQg YnkgU2V0X05hbWUuCiAgIC0tICBSZXR1cm4gdGhlIG5hbWUgb2YgaXRzIGNsYXNzIG90aGVyd2lz ZS4KCiAgIHByb2NlZHVyZSBTZXRfUGFyZW50CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lk Z2V0X1JlY29yZDsKICAgICAgUGFyZW50IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz KTsKICAgLS0gIE1vZGlmeSB0aGUgcGFyZW50IGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBp cyBub3QgdGhlIHJlY29tbWVuZGVkIHdheSB0byBkbyB0aGlzLCB5b3Ugc2hvdWxkIHVzZQogICAt LSAgR3RrLkNvbnRhaW5lci5BZGQgb3IgR3RrLkJveC5QYWNrX1N0YXJ0IGluc3RlYWQuCgogICBw cm9jZWR1cmUgU2V0X1BhcmVudF9XaW5kb3cKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkOwogICAgICBXaW5kb3cgOiBHZGsuV2luZG93Lkdka19XaW5kb3cpOwogICAtLSAg U2V0IHRoZSBwYXJlbnQgd2luZG93IGZvciB0aGUgYWN0dWFsIEdka19XaW5kb3cgb2YgdGhlIHdp ZGdldC4gVGhpcyBzZXRzCiAgIC0tICB1cCByZXF1aXJlZCBpbnRlcm5hbCBmaWVsZHMsIGFuZCBz aG91bGQgYmUgdXNlZCBvbmx5IHdoZW4geW91IGltcGxlbWVudAogICAtLSAgeW91ciBvd24gY29u dGFpbmVyLCBhcyBvcHBvc2VkIHRvIHVzaW5nIG9uZSBvZiB0aGUgc3RhbmRhcmQgY29udGFpbmVy cy4KCiAgIGZ1bmN0aW9uIEdldF9QYXJlbnQgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZCkgcmV0dXJuIEd0a19XaWRnZXQ7CiAgIC0tICBSZXR1cm4gdGhlIHBhcmVudCBvZiB0aGUg d2lkZ2V0LCBvciBudWxsIGlmIFdpZGdldCBpcyBhIHRvcGxldmVsCiAgIC0tICB3aWRnZXQuCgog ICBmdW5jdGlvbiBHZXRfVG9wbGV2ZWwgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCkgcmV0dXJuIEd0a19XaWRnZXQ7CiAgIC0tICBSZXR1cm4gdGhlIHRvcGxldmVsIGFuY2VzdG9y IG9mIHRoZSB3aWRnZXQuCiAgIC0tICBUaGlzIGlzIHRoZSB3aW5kb3cgb3IgZGlhbG9nIGluIHdo aWNoIHRoZSB3aWRnZXQgaXMgaW5jbHVkZWQuCiAgIC0tICBUaGUgd2lkZ2V0IHJldHVybmVkIGRv ZXMgbm90IGhhdmUgYW55IHBhcmVudC4KCiAgIGZ1bmN0aW9uIEdldF9BbmNlc3RvcgogICAgIChX aWRnZXQgICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBbmNlc3Rvcl9U eXBlIDogaW4gR3RrX1R5cGUpIHJldHVybiBHdGtfV2lkZ2V0OwogICAtLSAgUmV0dXJuIHRoZSBj bG9zZXN0IGFuY2VzdG9yIG9mIFdpZGdldCB3aGljaCBpcyBvZiB0eXBlIEFuY2VzdG9yX1R5cGUu CiAgIC0tICBSZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBub25lLgoKICAgZnVuY3Rpb24gSXNfQW5j ZXN0b3IKICAgICAoV2lkZ2V0ICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIEFu Y2VzdG9yIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsK ICAgLS0gIFJldHVybiBUcnVlIGlmIEFuY2VzdG9yIGlzIGluIHRoZSBhbmNlc3RvciB0cmVlIGZv ciBXaWRnZXQuCiAgIC0tICBJLmUuIGlmIFdpZGdldCBpcyBjb250YWluZWQgd2l0aGluIEFuY2Vz dG9yLgoKICAgcHJvY2VkdXJlIFJlcGFyZW50CiAgICAgKFdpZGdldCAgICAgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQ7CiAgICAgIE5ld19QYXJlbnQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNv cmQnQ2xhc3MpOwogICAtLSAgQ2hhbmdlIHRoZSBwYXJlbnQgb2YgdGhlIHdpZGdldCBkeW5hbWlj YWxseS4KICAgLS0gIElmIGJvdGggdGhlIG5ldyBwYXJlbnQgYW5kIHRoZSB3aWRnZXQgYXJlIHNo b3duLCB0aGVuIHRoZSB3aWRnZXQgaXMKICAgLS0gIHZpc3VhbGx5IHJlZHJhd24gaW4gaXRzIG5l dyBwYXJlbnQuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBNaXNjIGZ1bmN0aW9ucyAt LQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9TY3JvbGxfQWRqdXN0 bWVudHMKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBIYWRq ICAgOiBHdGsuQWRqdXN0bWVudC5HdGtfQWRqdXN0bWVudDsKICAgICAgVmFkaiAgIDogR3RrLkFk anVzdG1lbnQuR3RrX0FkanVzdG1lbnQpOwogICAtLSAgRW1pdCB0aGUgInNldF9zY3JvbGxfYWRq dXN0bWVudHMiIHNpZ25hbC4KICAgLS0gIFRoZSBleGFjdCBzaWduYWwgZW1pdHRlZCBkZXBlbmRz IG9uIHRoZSB3aWRnZXQgdHlwZSAoc2VlCiAgIC0tICBHdGsuT2JqZWN0LkluaXRpYWxpemVfQ2xh c3NfUmVjb3JkKS4KICAgLS0gIFRoZSBoYW5kbGVyIGNyZWF0ZXMgdGhlIGFkanVzdG1lbnRzIGlm IG51bGwgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LCBhbmQKICAgLS0gIG1ha2VzIHN1cmUgYm90aCBh ZGp1c3RtZW50cyBhcmUgaW4gdGhlIGNvcnJlY3QgcmFuZ2UuCgogICBwcm9jZWR1cmUgUG9wdXAg KFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsgWCwgWSA6IGluIEdpbnQpOwogICAt LSAgUmVhbGl6ZSB0aGUgd2lkZ2V0IChzZWUgUmVhbGl6ZSBhYm92ZSksIG1vdmVzIGl0IHRvIHRo ZSBzY3JlZW4gcG9zaXRpb24KICAgLS0gIChYLCBZKSwgYW5kIHNob3dzIHRoZSB3aWRnZXQuCiAg IC0tICBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRvcGxldmVsIHdpbmRvd3MgYW5kIGRp YWxvZ3MsIGFzIHlvdSBjYW4KICAgLS0gIG5vIG1vZGlmeSB0aGUgcG9zaXRpb24gb2YgYSB3aWRn ZXQgdGhhdCBoYXMgYSBwYXJlbnQgKHRoZSBwYXJlbnQgaXMKICAgLS0gIHRoZW4gcmVzcG9uc2li bGUgZm9yIGl0cyBwb3NpdGlvbikuCgogICBmdW5jdGlvbiBJbnRlcnNlY3QKICAgICAoV2lkZ2V0 ICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBcmVhICAgICAgICAgOiBH ZGsuUmVjdGFuZ2xlLkdka19SZWN0YW5nbGU7CiAgICAgIEludGVyc2VjdGlvbiA6IGFjY2VzcyBH ZGsuUmVjdGFuZ2xlLkdka19SZWN0YW5nbGUpIHJldHVybiBCb29sZWFuOwogICAtLSAgUmV0dXJu IFRydWUgaWYgdGhlIHdpZGdldCBpbnRlcnNlY3RzIHRoZSBzY3JlZW4gYXJlYSBBcmVhLgogICAt LSAgVGhlIGludGVyc2VjdGlvbiBhcmVhIGlzIHJldHVybmVkIGluIEludGVyc2VjdGlvbi4KCiAg IHByb2NlZHVyZSBHcmFiX0RlZmF1bHQgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCk7CiAgIC0tICBUaGUgd2lkZ2V0IGJlY29tZXMgdGhlIGRlZmF1bHQgd2lkZ2V0IGZvciBpdHMg cGFyZW50IHdpbmRvdyBvciBkaWFsb2cuCiAgIC0tICBBbGwga2V5Ym9hcmQgZXZlbnRzIHdpbGwg YmUgc2VudCB0byBpdCBpZiBubyBvdGhlciB3aWRnZXQgaGFzIHRoZSBmb2N1cy4KICAgLS0gIE5v dGUgdGhhdCB0aGUgIkNhbl9EZWZhdWx0IiBmbGFnIG11c3QgaGF2ZSBiZWVuIHNldCBmaXJzdCBv biBXSURHRVQuCgogICBwcm9jZWR1cmUgU2V0X1N0YXRlCiAgICAgKFdpZGdldCA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZDsKICAgICAgU3RhdGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSk7 CiAgIC0tICBNb2RpZnkgdGhlIHN0YXRlIG9mIHRoZSB3aWRnZXQuCiAgIC0tICBUaGlzIG1vZGlm aWVzIGl0cyB2aXN1YWwgYXNwZWN0LCBhbmQgdGh1cyBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlv dQogICAtLSAgY2hhbmdlIGl0cyBiZWhhdmlvciBhdCB0aGUgc2FtZSB0aW1lLCBzbyBhcyBub3Qg dG8gY29uZnVzZSB0aGUgdXNlci4KCiAgIGZ1bmN0aW9uIEdldF9TdGF0ZQogICAgIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsK ICAgLS0gIFJldHVybiB0aGUgc3RhdGUgb2YgdGhlIHdpZGdldC4KCiAgIHByb2NlZHVyZSBTZXRf U2Vuc2l0aXZlCiAgICAgKFdpZGdldCAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAg ICAgU2Vuc2l0aXZlIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKICAgLS0gIE1vZGlmeSB0aGUgc2Vu c2l0aXZpdHkgb2YgdGhlIHdpZGdldC4KICAgLS0gIEFuIGluc2Vuc2l0aXZlIHdpZGdldCBpcyBn ZW5lcmFsbHkgZ3JheWVkIG91dCwgYW5kIGNhbiBub3QgYmUgYWN0aXZhdGVkLgogICAtLSAgRm9y IGluc3RhbmNlLCBhbiBpbnNlbnNpdGl2ZSBtZW51IGl0ZW0gaXMgZ3JheWVkLCBhbmQgY2FuIG5l dmVyIGJlCiAgIC0tICBzZWxlY3RlZC4KCiAgIHByb2NlZHVyZSBTZXRfQXBwX1BhaW50YWJsZQog ICAgIChXaWRnZXQgICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBcHBf UGFpbnRhYmxlIDogQm9vbGVhbik7CiAgIC0tICBNb2RpZnkgdGhlICJBcHBfUGFpbnRhYmxlIiBm bGFnIGZvciB0aGUgd2lkZ2V0LgoKICAgcHJvY2VkdXJlIEdldF9Qb2ludGVyCiAgICAgKFdpZGdl dCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgWCAgICAgIDogb3V0IEdpbnQ7CiAg ICAgIFkgICAgICA6IG91dCBHaW50KTsKICAgLS0gIFJldHVybiB0aGUgY29vcmRpbmF0ZXMgb2Yg dGhlIHBvaW50ZXIgKGkuZS4gbW91c2UpIHJlbGF0aXZlIHRvIFdpZGdldC4KCiAgIHByb2NlZHVy ZSBTZXRfV2luZG93CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAg ICAgV2luZG93IDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93KTsKICAgLS0gIFNldCB0aGUgR2Rr IHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhlIHdpZGdldC4KCiAgIGZ1bmN0aW9uIEdldF9XaW5k b3cKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gR2RrLldp bmRvdy5HZGtfV2luZG93OwogICAtLSAgR2V0IHRoZSBHZGsgd2luZG93IGFzc29jaWF0ZWQgd2l0 aCB0aGUgd2lkZ2V0LgogICAtLSAgWW91IGNhbiB1c2UgdGhpcyB3aW5kb3cgaWYgeW91IG5lZWQg dG8gZHJhdyBkaXJlY3RseSBvbiB0aGUgd2lkZ2V0IHVzaW5nCiAgIC0tICB0aGUgZnVuY3Rpb25z IGZvdW5kIGluIHRoZSBHZGsgaGllcmFyY2h5LgoKICAgcHJvY2VkdXJlIFNoYXBlX0NvbWJpbmVf TWFzawogICAgIChXaWRnZXQgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBT aGFwZV9NYXNrIDogR2RrLkJpdG1hcC5HZGtfQml0bWFwOwogICAgICBPZmZzZXRfWCAgIDogR2lu dDsKICAgICAgT2Zmc2V0X1kgICA6IEdpbnQpOwogICAtLSAgTW9kaWZ5IHRoZSBzaGFwZSBvZiB0 aGUgd2luZG93IHRoYXQgY29udGFpbnMgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgYWxsb3dzIGZv ciB0cmFuc3BhcmVudCB3aW5kb3dzLCBhbmQgcmVxdWlyZXMgdGhlIFhleHQgbGlicmFyeSB0byBi ZQogICAtLSAgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtLiBJZiB0aGlzIGxpYnJhcnkgaXMgbm90 IGF2YWlsYWJsZSwgeW91ciBwcm9ncmFtCiAgIC0tICB3aWxsIHN0aWxsIHdvcmsuCiAgIC0tICBT ZWUgdGhlIG1hbnVhbCBwYWdlIGZvciBYU2hhcGVDb21iaW5lTWFzaygzeCkgZm9yIG1vcmUgaW5m b3JtYXRpb24uCgogICAtLS0tLS0tLS0tLQogICAtLSBGbGFncyAtLQogICAtLS0tLS0tLS0tLQog ICAtLSAgU29tZSBhZGRpdGlvbmFsIGZsYWdzIGFyZSBkZWZpbmVkIGZvciBhbGwgdGhlIHZpc3Vh bCBvYmplY3RzICh3aWRnZXRzKS4KICAgLS0gIFRoZXkgYXJlIGRlZmluZWQgaW4gYWRkaXRpb24g dG8gdGhlIG9uZXMgZGVmaW5lZCBpbiBHdGsuT2JqZWN0LgogICAtLSAgVGhlc2UgZmxhZ3MgYXJl IGltcG9ydGFudCBpbiB0aGF0IHRoZXkgZGVmaW5lIGV4YWN0bHkgdGhlIGRpZmZlcmVudAogICAt LSAgc3RhdGVzIGEgd2lkZ2V0IGNhbiBiZSBpbi4KICAgLS0KICAgLS0gIC0gIlRvcGxldmVsIjoK ICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgaXMgYSB0b3BsZXZlbCB3aWRnZXQsIGllIGhhcyBu byBwYXJlbnQuIFRoaXMgaXMKICAgLS0gICAgbW9zdGx5IHRydWUgZm9yIHdpbmRvd3MgYW5kIGRp YWxvZ3MuCiAgIC0tCiAgIC0tICAtICJOb19XaW5kb3ciOgogICAtLSAgICBTZXQgaWYgdGhlIHdp ZGdldCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgWDExIHdpbmRvdywgaWUgY2FuIG5vdAog ICAtLSAgICByZWNlaXZlIGV2ZW50cyBkaXJlY3RseS4gRm9yIGluc3RhbmNlLCBhIEd0a19Ub29s YmFyIGRvZXMgbm90IGhhdmUKICAgLS0gICAgYW4gYXNzb2NpYXRlZCB3aW5kb3cuIFRoZXNlIG9i amVjdHMgYXJlIG1vcmUgbGlnaHR3ZWlnaHQsIGJ1dCByZXF1aXJlCiAgIC0tICAgIG1vcmUgd29y ayBmcm9tIEd0a0FkYS4gVGhpcyBmbGFnIGlzIG9ubHkgc2V0IGlmIHRoZSB3aWRnZXQgd2lsbCBu ZXZlcgogICAtLSAgICBoYXZlIGEgd2luZG93LCBldmVuIGFmdGVyIGl0IGlzIHJlYWxpemVkLgog ICAtLQogICAtLSAgLSAiUmVhbGl6ZWQiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdldCBoYXMg YmVlbiByZWFsaXplZCwgaWUgaXRzIGFzc29jaWF0ZWQgWDExIHdpbmRvdyBoYXMKICAgLS0gICAg YmVlbiBjcmVhdGVkIChwcm92aWRpbmcgdGhlIHdpZGdldCBleGNlcHRzIGEgd2luZG93LCBzZWUg dGhlIE5vX1dpbmRvdwogICAtLSAgICBmbGFnCiAgIC0tCiAgIC0tICAtICJNYXBwZWQiOgogICAt LSAgICBTZXQgaWYgdGhlIHdpZGdldCBpcyB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uIFRoaXMgaXMg b25seSBwb3NzaWJsZSBpZgogICAtLSAgICB0aGUgVmlzaWJsZSBmbGFnIGlzIGFsc28gc2V0Lgog ICAtLQogICAtLSAgLSAiVmlzaWJsZSI6CiAgIC0tICAgIFNldCBpZiB0aGUgd2lkZ2V0IHdpbGwg YmUgZGlzcGxheWVkIG9uIHRoZSBzY3JlZW4gd2hlbiBtYXBwZWQgKHNlZSB0aGUKICAgLS0gICAg ZnVuY3Rpb25zIFNob3cgYW5kIEhpZGUgaW4gdGhpcyBwYWNrYWdlKS4KICAgLS0KICAgLS0gIC0g IlNlbnNpdGl2ZSI6CiAgIC0tICAgIFNldCBpZiB0aGUgd2lkZ2V0IGlzIGxpc3RlbmluZyB0byBl dmVudHMuIFNlZSB0aGUgZnVuY3Rpb24KICAgLS0gICAgU2V0X1NlbnNpdGl2ZSBpbiB0aGlzIHBh Y2thZ2UuIEFuIGluc2Vuc2l0aXZlIHdpZGdldCB3aWxsIGdlbmVyYWxseQogICAtLSAgICBoYXZl IGEgZGlmZmVyZW50IHZpc3VhbCBhc3BlY3QgdG8gY2x1ZSB0aGF0IGl0IGlzIHVuYXZhaWxhYmxl IChmb3IKICAgLS0gICAgaW5zdGFuY2UgYW4gaW5zZW5zaXRpdmUgaXRlbSBtZW51IHdpbGwgYmUg Z3JheWVkKQogICAtLQogICAtLSAgLSAiUGFyZW50X1NlbnNpdGl2ZSI6CiAgIC0tICAgIFNldCBp ZiB0aGUgcGFyZW50IGlzIHNlbnNpdGl2ZS4gQSB3aWRnZXQgaXMgc2Vuc2l0aXZlIG9ubHkgaWYg Ym90aAogICAtLSAgICB0aGUgU2Vuc2l0aXZlIGFuZCBQYXJlbnRfU2Vuc2l0aXZlIGFyZSBzZXQu CiAgIC0tCiAgIC0tICAtICJDYW5fRm9jdXMiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdldCBj YW4gaGF2ZSB0aGUgZm9jdXMsIGllIGdldCBrZXlib2FyZCBldmVudHMuIE1vc3QKICAgLS0gICAg d2lkZ2V0cyBjYW4gbm90IGhhdmUgdGhlIGZvY3VzLgogICAtLQogICAtLSAgLSAiSGFzX0ZvY3Vz IjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgY3VycmVudGx5IGhhcyB0aGUgZm9jdXMuIFNl ZSB0aGUgZnVuY3Rpb24gR3JhYl9Gb2N1cwogICAtLSAgICBpbiB0aGlzIHBhY2thZ2UuCiAgIC0t CiAgIC0tICAtICJDYW5fRGVmYXVsdCI6CiAgIC0tICAgIFNldCBpZiB0aGUgd2lkZ2V0IGNhbiBi ZSB0aGUgZGVmYXVsdCB3aWRnZXQgaW4gYSB3aW5kb3csIGllIHRoZSBvbmUKICAgLS0gICAgdGhh dCB3aWxsIGdldCB0aGUga2V5Ym9hcmQgZXZlbnRzIGJ5IGRlZmF1bHQuIEZvciBpbnN0YW5jZSwg dGhlCiAgIC0tICAgIGRlZmF1bHQgYnV0dG9uIGluIGEgZGlhbG9nIGlzIHRoZSBvbmUgdGhhdCBn ZXRzIGNsaWNrZWQgb24gd2hlbiB0aGUKICAgLS0gICAgdXNlciBwcmVzc2VkIEVudGVyIGFueXdo ZXJlIGluIHRoZSBkaWFsb2cuCiAgIC0tCiAgIC0tICAtICJIYXNfRGVmYXVsdCI6CiAgIC0tICAg IFNldCBpZiB0aGUgd2lkZ2V0IGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCB3aWRnZXQuIFNlZSB0 aGUgZnVuY3Rpb24KICAgLS0gICAgR3JhYl9EZWZhdWx0IGluIHRoaXMgcGFja2FnZS4KICAgLS0K ICAgLS0gIC0gIkhhc19HcmFiIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgY3VycmVudGx5 IGdyYWJzIGFsbCBtb3VzZSBhbmQga2V5Ym9hcmQgZXZlbnRzIGluCiAgIC0tICAgIHRoZSBhcHBs aWNhdGlvbiwgZXZlbiBpZiBpdCBkb2VzIG5vdCBoYXZlIHRoZSBmb2N1cy4gVGhlcmUgY2FuIGJl IG9ubHkKICAgLS0gICAgc3VjaCB3aWRnZXQgcGVyIGFwcGxpY2F0aW9uIGF0IGFueSBnaXZlbiB0 aW1lLgogICAtLQogICAtLSAgLSAiUmNfU3R5bGUiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdl dCdzIHN0eWxlIGlzIGVpdGhlciB0aGUgZGVmYXVsdCBzdHlsZSwgb3IgaW4gYQogICAtLSAgICBj dXN0b21pemF0aW9uIGZpbGUuIFRoaXMgaXMgdW5zZXQgaWYgdGhlIHN0eWxlIGhhcyBiZWVuIG1v ZGlmaWVkIGJ5CiAgIC0tICAgIHRoZSB1c2VyLgogICAtLQogICAtLSAgLSAiQ29tcG9zaXRlX0No aWxkIjoKICAgLS0gICAgPz8/CiAgIC0tCiAgIC0tICAtICJOb19SZXBhcmVudCI6CiAgIC0tICAg IFRoaXMgZmxhZ3MgaXMgbmV2ZXIgdXNlZCBpbiBndGsrLgogICAtLQogICAtLSAgLSAiQXBwX1Bh aW50YWJsZSI6CiAgIC0tICAgIEZvciBzb21lIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBHdGtfV2lu ZG93IGFuZCBHdGtfTGF5b3V0KSwgdGhpcyBpcwogICAtLSAgICB1bnNldCB3aGVuIHRoZSBjb250 YWluZXIgaXRzZWxmIGhhcyBzb21lIHNwZWNpYWwgZHJhd2luZyByb3V0aW5lcy4KICAgLS0KICAg LS0gIC0gIlJlY2VpdmVzX0RlZmF1bHQiOgogICAtLSAgICBTZXQgd2hlbiB0aGUgd2lkZ2V0IHJl Y2VpdmVzIHRoZSBkZWZhdWx0IGF0IHRoZSB0aW1lIGl0IHJlY2VpdmVzIHRoZQogICAtLSAgICBm b2N1cy4gVGhpcyBpcyBob3cgdGhlIGRlZmF1bHQgYnV0dG9uIGluIGEgZGlhbG9nIGlzIGF1dG9t YXRpY2FsbHkKICAgLS0gICAgY2hhbmdlZCB3aGVuIHlvdSBwcmVzcyBhbm90aGVyIGJ1dHRvbi4K CiAgIFRvcGxldmVsICAgICAgICAgOiBjb25zdGFudCA6PSAyICoqIDQ7CiAgIE5vX1dpbmRvdyAg ICAgICAgOiBjb25zdGFudCA6PSAyICoqIDU7CiAgIFJlYWxpemVkICAgICAgICAgOiBjb25zdGFu dCA6PSAyICoqIDY7CiAgIE1hcHBlZCAgICAgICAgICAgOiBjb25zdGFudCA6PSAyICoqIDc7CiAg IFZpc2libGUgICAgICAgICAgOiBjb25zdGFudCA6PSAyICoqIDg7CiAgIFNlbnNpdGl2ZSAgICAg ICAgOiBjb25zdGFudCA6PSAyICoqIDk7CiAgIFBhcmVudF9TZW5zaXRpdmUgOiBjb25zdGFudCA6 PSAyICoqIDEwOwogICBDYW5fRm9jdXMgICAgICAgIDogY29uc3RhbnQgOj0gMiAqKiAxMTsKICAg SGFzX0ZvY3VzICAgICAgICA6IGNvbnN0YW50IDo9IDIgKiogMTI7CiAgIENhbl9EZWZhdWx0ICAg ICAgOiBjb25zdGFudCA6PSAyICoqIDEzOwogICBIYXNfRGVmYXVsdCAgICAgIDogY29uc3RhbnQg Oj0gMiAqKiAxNDsKICAgSGFzX0dyYWIgICAgICAgICA6IGNvbnN0YW50IDo9IDIgKiogMTU7CiAg IFJjX1N0eWxlICAgICAgICAgOiBjb25zdGFudCA6PSAyICoqIDE2OwogICBDb21wb3NpdGVfQ2hp bGQgIDogY29uc3RhbnQgOj0gMiAqKiAxNzsKICAgTm9fUmVwYXJlbnQgICAgICA6IGNvbnN0YW50 IDo9IDIgKiogMTg7CiAgIEFwcF9QYWludGFibGUgICAgOiBjb25zdGFudCA6PSAyICoqIDE5Owog ICBSZWNlaXZlc19EZWZhdWx0IDogY29uc3RhbnQgOj0gMiAqKiAyMDsKCiAgIGZ1bmN0aW9uIFRv cGxldmVsX0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xh c3MpIHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVyIHRoZSBUb3BsZXZlbCBmbGFn IGlzIHNldC4KCiAgIGZ1bmN0aW9uIE5vX1dpbmRvd19Jc19TZXQKICAgICAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qg d2hldGhlciB0aGUgTm9fV2luZG93IGZsYWcgaXMgc2V0LgoKICAgZnVuY3Rpb24gUmVhbGl6ZWRf SXNfU2V0CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcykgcmV0 dXJuIEJvb2xlYW47CiAgIC0tICBUZXN0IHdoZXRoZXIgdGhlIFJlYWxpemVkIGZsYWcgaXMgc2V0 LgoKICAgZnVuY3Rpb24gTWFwcGVkX0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVyIHRo ZSBNYXBwZWQgZmxhZyBpcyBzZXQuCgogICBmdW5jdGlvbiBWaXNpYmxlX0lzX1NldAogICAgIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBCb29sZWFuOwog ICAtLSAgVGVzdCB3aGV0aGVyIHRoZSBWaXNpYmxlIGZsYWcgaXMgc2V0LgoKICAgZnVuY3Rpb24g RHJhd2FibGVfSXNfU2V0CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdD bGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBUcnVlIGlmIHRoZSB3aWRnZXQgaXMgYm90aCB2 aXNpYmxlIGFuZCBtYXBwZWQuCiAgIC0tICBJbiBvdGhlciB3b3JkcywgaWYgaXQgZG9lcyBhcHBl YXIgb24gdGhlIHNjcmVlbi4KCiAgIGZ1bmN0aW9uIElzX1NlbnNpdGl2ZQogICAgIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBCb29sZWFuOwogICAtLSAg VGVzdCB3aGV0aGVyIHRoZSB3aWRnZXQgaXMgU2Vuc2l0aXZlLgoKICAgZnVuY3Rpb24gQ2FuX0Zv Y3VzX0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3Mp IHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVyIHRoZSBDYW5fRm9jdXMgZmxhZyBp cyBzZXQuCgogICBmdW5jdGlvbiBIYXNfRm9jdXNfSXNfU2V0CiAgICAgKFdpZGdldCA6IGFjY2Vz cyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBUZXN0IHdo ZXRoZXIgdGhlIEhhc19Gb2N1cyBmbGFnIGlzIHNldC4KCiAgIGZ1bmN0aW9uIEhhc19EZWZhdWx0 X0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJl dHVybiBCb29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVyIHRoZSBIYXNfRGVmYXVsdCBmbGFnIGlz IHNldC4KCiAgIGZ1bmN0aW9uIEhhc19HcmFiX0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCB3aGV0 aGVyIHRoZSBIYXNfR3JhYiBmbGFnIGlzIHNldC4KCiAgIGZ1bmN0aW9uIFJjX1N0eWxlX0lzX1Nl dAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBC b29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVyIHRoZSBSY19TdHlsZSBmbGFnIGlzIHNldC4KCiAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIERlZmluaXRpb25z IGZvciBsaXN0cyBvZiB3aWRnZXRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCgogICAtLSAgPGRvY19pZ25vcmU+CgogICBmdW5jdGlvbiBDb252ZXJ0IChXIDog aW4gR3RrX1dpZGdldCkgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICBmdW5jdGlvbiBDb252ZXJ0 IChXIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBHdGtfV2lkZ2V0OwogICBwYWNrYWdlIFdpZGdl dF9MaXN0IGlzIG5ldyBHbGliLkdsaXN0LkdlbmVyaWNfTGlzdCAoR3RrX1dpZGdldCk7CiAgIHBh Y2thZ2UgV2lkZ2V0X1NMaXN0IGlzIG5ldyBHbGliLkdTbGlzdC5HZW5lcmljX1NMaXN0IChHdGtf V2lkZ2V0KTsKCiAgIC0tICA8L2RvY19pZ25vcmU+CgogICAtLS0tLS0tLS0tLS0tCiAgIC0tIFNp Z25hbHMgLS0KICAgLS0tLS0tLS0tLS0tLQoKICAgLS0gIDxzaWduYWxzPgogICAtLSAgVGhlIGZv bGxvd2luZyBuZXcgc2lnbmFscyBhcmUgZGVmaW5lZCBmb3IgdGhpcyB3aWRnZXQ6CiAgIC0tCiAg IC0tICAtICJzaG93IgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNz IEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVuIGEg d2lkZ2V0IGlzIHRvIGJlIHNob3duIChzZWUgZXhwbGFuYXRpb24gZm9yIHRoZSBTaG93CiAgIC0t ICAgIHN1YnByb2dhbSkuIFRoaXMgc2NoZWR1bGVzIHRoZSB3aWRnZXQgdG8gYmUgZGlzcGxheWVk IG9uIHRoZSBzY3JlZW4sCiAgIC0tICAgIGFuZCBpZiB0aGlzIGlzIGEgdG9wbGV2ZWwgd2lkZ2V0 IGl0IGFjdHVhbGx5IGFwcGVhcnMgb24gdGhlIHNjcmVlbgogICAtLSAgICBhbmQgYWxsIGl0cyBj aGlsZHJlbiB0aGF0IGhhdmUgYmVlbiBzaG93bi4KICAgLS0KICAgLS0gIC0gImhpZGUiCiAgIC0t ICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3MpOwogICAtLQogICAtLSAgICBFbWl0dGVkIHdoZW4gYSB3aWRnZXQgaXMgdG8gYmUgaGlk ZGVuIChzZWUgZXhwbGFuYXRpb24gZm9yIHRoZSBIaWRlCiAgIC0tICAgIHN1YnByb2dyYW0pLiBI aWRlcyB0aGUgd2lkZ2V0IGZyb20gdGhlIHNjcmVlbiwgYW5kIGlmIGl0cyBwYXJlbnQgaXMKICAg LS0gICAgc2hvd24sIHRoZSB3aWRnZXQgd2lsbCBub3QgYXBwZWFyIG9uIHRoZSBzY3JlZW4gYWdh aW4uCiAgIC0tCiAgIC0tICAtICJtYXAiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBFbWl0 dGVkIHdoZW4gYSB3aWRnZXQgaXMgbWFwcGVkIG9uIHRoZSBzY3JlZW4gKHRoZSBkZWZhdWx0IGhh bmRsZXIKICAgLS0gICAgc2ltcGx5IGVtaXRzIHRoZSAic2hvdyIgc2lnbmFsKS4KICAgLS0KICAg LS0gIC0gInVubWFwIgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNz IEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVuIGEg d2lkZ2V0IG5lZWRzIHRvIGJlIHVubWFwcGVkIG9uIHRoZSBzY3JlZW4gKHRoZSBkZWZhdWx0CiAg IC0tICAgIGhhbmRsZXIgc2ltcGx5IGVtaXRzIHRoZSAiaGlkZSIgc2lnbmFsKS4KICAgLS0KICAg LS0gIC0gInJlYWxpemUiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nl c3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBFbWl0dGVkIHdoZW4g YSB3aWRnZXQgaXMgcmVhbGl6ZWQuIFRoZSBkZWZhdWx0IGhhbmRsZXIgY3JlYXRlcyB0aGUKICAg LS0gICAgR2RrIHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhlIHdpZGdldCwgYW5kIGl0cyBhbmNl c3RvcnMuCiAgIC0tCiAgIC0tICAtICJ1bnJlYWxpemUiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5k bGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAt LSAgICBFbWl0dGVkIHdoZW4gYSB3aWRnZXQgaXMgdW5yZWFsaXplZC4gVGhlIGRlZmF1bHQgaGFu ZGxlciBkZXN0cm95cyB0aGUKICAgLS0gICAgR2RrIHdpbmRvd3Mgb2YgdGhlIHdpZGdldCBhbmQg YWxsIGl0cyBjaGlsZHJlbi4KICAgLS0KICAgLS0gIC0gImRyYXciCiAgIC0tICAgIHByb2NlZHVy ZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0t ICAgICAgICAgICAgICAgICAgICAgICBBcmVhICAgOiBHZGsuUmVjdGFuZ2xlLkdka19SZWN0YW5n bGUpOwogICAtLQogICAtLSAgICBFbWl0dGVkIHdoZW4gYSB3aWRnZXQgbmVlZHMgdG8gYmUgZHJh d24uIFRoZSBkZWZhdWx0IGhhbmRsZXIgZW1pdHMKICAgLS0gICAgdGhlICJleHBvc2UiIGV2ZW50 LgogICAtLQogICAtLSAgLSAiZHJhd19mb2N1cyIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRsZXIg KFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAg IEVtaXR0ZWQgd2hlbiBhIHdpZGdldCBuZWVkcyB0byBiZSBkcmF3biBhbmQgaXQgaGFzIHRoZSBm b2N1cy4gU29tZQogICAtLSAgICB3aWRnZXRzIG1pZ2h0IHdhbnQgdG8gcHJvdmlkZSB2aXN1YWwg Y2x1ZXMgdGhhdCB0aGV5IGhhdmUgdGhlIGZvY3VzLAogICAtLSAgICBsaWtlIGEgYmxhY2sgYm9y ZGVyLiBUaGlzIGlzIG5ldmVyIGNhbGxlZCBpZiB0aGUgd2lkZ2V0IGNhbiBub3QgaGF2ZQogICAt LSAgICB0aGUgZm9jdXMgKGllIHRoZSAiQ2FuX0ZvY3VzIiBmbGFnIGlzIHVuc2V0KS4KICAgLS0K ICAgLS0gIC0gImRyYXdfZGVmYXVsdCIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdl dCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIEVtaXR0 ZWQgd2hlbiBhIHdpZGdldCBuZWVkcyB0byBiZSBkcmF3biBhbmQgaXQgZG9lcyBub3QgaGF2ZSB0 aGUKICAgLS0gICAgZm9jdXMuIFRoaXMgaXMgbmV2ZXIgY2FsbGVkIGlmIHRoZSB3aWRnZXQgY2Fu IG5vdCBoYXZlIHRoZSBmb2N1cwogICAtLSAgICAoaWUgdGhlICJDYW5fRm9jdXMiIGZsYWcgaXMg dW5zZXQpLgogICAtLQogICAtLSAgLSAic2l6ZV9yZXF1ZXN0IgogICAtLSAgICBwcm9jZWR1cmUg SGFuZGxlciAoV2lkZ2V0ICAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAg IC0tICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXNpdGlvbiA6IGFjY2VzcyBHdGtfUmVxdWlz aXRpb24pOwogICAtLQogICAtLSAgICBTaG91bGQgcmV0dXJuIChpbiBSZXF1aXNpdGlvbikgdGhl IGlkZWFsIHNpemUgdGhlIHdpZGdldCB3b3VsZCBsaWtlIHRvCiAgIC0tICAgIGhhdmUuIEl0IGlz IG5vdCBzdXJlIHRoaXMgaXMgdGhlIHNpemUgdGhhdCB3aWxsIGJlIGFzc2lnbmVkIHRvIGl0LAog ICAtLSAgICBzaW5jZSBpdCBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIGl0cyBwYXJlbnQpLgogICAt LQogICAtLSAgLSAic2l6ZV9hbGxvY2F0ZSIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdp ZGdldCAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAg ICAgICAgICAgICAgICBBbGxvY2F0aW9uIDogR3RrX0FsbG9jYXRpb24pOwogICAtLQogICAtLSAg ICBBIHNpemUgYW5kIHBvc2l0aW9uIHdlcmUgYXNzaWduZWQgdG8gdGhlIHdpZGdldC4gVGhpcyBp cyBjYWxsZWQgZXZlcnkKICAgLS0gICAgdGltZSB0aGUgc2l6ZSBvZiB0aGUgd2lkZ2V0IGNoYW5n ZXMuCiAgIC0tICAgIFRoZSBkZWZhdWx0IGhhbmRsZXIgdGFrZXMgY2FyZSBvZiByZXNpemluZyBh bmQgbW92aW5nIHRoZSB3aWRnZXQuCiAgIC0tCiAgIC0tICAtICJzdGF0ZV9jaGFuZ2VkIgogICAt LSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0ICAgICAgICAgOiBhY2Nlc3MgR3RrX1dpZGdl dF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICBQcmV2aW91c19TdGF0 ZSA6IEd0ay5FbnVtcy5HdGtfU3RhdGVfVHlwZSk7CiAgIC0tCiAgIC0tICAgIFRoZSBzdGF0ZSBv ZiB0aGUgd2lkZ2V0IGhhcyBjaGFuZ2VkLgogICAtLQogICAtLSAgLSAicGFyZW50X3NldCIKICAg LS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzX1BhcmVudCA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIEEgbmV3IHBhcmVu dCBoYXMgYmVlbiBzZXQgZm9yIHRoZSB3aWRnZXQuIFRoZSBwcmV2aW91cyBwYXJlbnQgaXMKICAg LS0gICAgZ2l2ZW4gaW4gYXJndW1lbnRzIChpZiB0aGVyZSB3YXMgbm9uZSwKICAgLS0gICAgR2Rr LklzX0NyZWF0ZWQgKFByZXZpb3VzX1BhcmVudCkgcmV0dXJucyBGYWxzZSkuCiAgIC0tCiAgIC0t ICAtICJzdHlsZV9zZXQiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nl c3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLSAgICAgICAgICAgICAgICAgICAgICAg UHJldmlvdXNfU3R5bGUgOiBHdGsuU3R5bGUuR3RrX1N0eWxlKTsKICAgLS0KICAgLS0gICAgVGhl IHdpZGdldCdzIHN0eWxlIGhhcyBiZWVuIGNoYW5nZWQgKHRoaXMgaXMgbm90IGNhbGwgd2hlbiBz b21lCiAgIC0tICAgIHNldHRpbmdzIGluIHRoZSBzdHlsZSBhcmUgY2hhbmdlZCwgb25seSB3aGVu IHRoZSBzdHlsZSBpdHNlbGYgaXMKICAgLS0gICAgY29tcGxldGVseSBjaGFuZ2VkIHdpdGggYSBj YWxsIHRvIFNldF9TdHlsZSBvciBTZXRfUmNfU3R5bGUpLgogICAtLQogICAtLSAgLSAiYWRkX2Fj Y2VsZXJhdG9yIgogICAtLQogICAtLSAgPz8/CiAgIC0tCiAgIC0tICAtICJyZW1vdmVfYWNjZWxl cmF0b3IiCiAgIC0tCiAgIC0tICA/Pz8KICAgLS0KICAgLS0gIC0gImdyYWJfZm9jdXMiCiAgIC0t ICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3MpOwogICAtLQogICAtLSAgICBUaGUgd2lkZ2V0IGhhcyBnb3QgdGhlIGZvY3VzLCBpZSB3 aWxsIG5vdyBnZXQgdGhlIGtleWJvYXJkIGV2ZW50cwogICAtLSAgICBzZW50IHRvIGEgd2luZG93 LiBUaGlzIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSAiQ2FuX0ZvY3VzIiBmbGFnIGlzCiAgIC0tICAg IHNldC4gVGhlICJIYXNfRm9jdXMiIGZsYWcgbWlnaHQgbm90IGJlIHNldCB3aGVuIHRoaXMgc2ln bmFsIGlzCiAgIC0tICAgIGVtaXR0ZWQuCiAgIC0tCiAgIC0tICAtICJldmVudCIKICAgLS0gICAg ZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz OwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50 KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAg ICBTb21lIGV2ZW50IHdhcyBzZW50IHRvIHRoZSB3aWRnZXQuIFRoaXMgY292ZXJzIGFsbCB0aGUg Y2FzZXMKICAgLS0gICAgYmVsb3csIGFuZCBhY3RzIGFzIGEgZ2VuZXJhbCBoYW5kbGVyLiBUaGlz IGlzIGNhbGxlZCBpbiBhZGRpdGlvbiB0bwogICAtLSAgICB0aGUgcmVsZXZhbnQgc3BlY2lmaWMg aGFuZGxlciBiZWxvdy4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhl IGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlm IG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAg LS0gIC0gImJ1dHRvbl9wcmVzc19ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lk Z2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAg ICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50X0J1dHRvbikKICAgLS0gICAgICAg ICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgQSBidXR0b24gd2Fz IHByZXNzZWQgd2hpbGUgdGhlIHBvaW50ZXIgd2FzIGluc2lkZSB0aGUgd2lkZ2V0LgogICAtLSAg ICBUbyBnZXQgdGhpcyBzaWduYWwsIHNvbWUgd2lkZ2V0cyBieSBoYXZlIHRvIHVzZSB0aGUgU2V0 X0V2ZW50cwogICAtLSAgICBzdWJwcm9ncmFtIGZpcnN0IHRvIGdldCB0aGlzIGV2ZW50LgogICAt LSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFz cyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBv ZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAiYnV0dG9uX3JlbGVh c2VfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtf V2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDog R2RrLkV2ZW50Lkdka19FdmVudF9CdXR0b24pCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIEEgYnV0dG9uIHdhcyByZWxlYXNlZCB3aGlsZSB0 aGUgcG9pbnRlciB3YXMgaW5zaWRlIHRoZSB3aWRnZXQuCiAgIC0tICAgIE5vdGUgdGhhdCBpbiBz b21lIGNhc2VzIChHdGtfQnV0dG9ucyBmb3IgaW5zdGFuY2UpLCBhbm90aGVyICJjbGlja2VkIgog ICAtLSAgICBzaWduYWwgY291bGQgYmUgZW1pdHRlZCkuIFRoaXMgImJ1dHRvbl9yZWxlYXNlX2V2 ZW50IiBzaG91bGQgbWFpbmx5CiAgIC0tICAgIGJlIHVzZWQgZm9yIHdpZGdldHMgdGhhdCBkb24n dCBhbHJlYWR5IGhhdmUgc3BlY2lmaWMgc2lnbmFscyB0byBjb3ZlcgogICAtLSAgICB0aGF0IGNh c2UgKEd0a19EcmF3aW5nX0FyZWEgZm9yIGluc3RhbmNlKS4KICAgLS0KICAgLS0gICAgVG8gZ2V0 IHRoaXMgc2lnbmFsLCBzb21lIHdpZGdldHMgbWF5IGhhdmUgdG8gdXNlIHRoZSBTZXRfRXZlbnRz CiAgIC0tICAgIHN1YnByb2dyYW0gZmlyc3QgdG8gZ2V0IHRoaXMgZXZlbnQuCiAgIC0tCiAgIC0t ICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBiZSBwYXNz IHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5kbGVyIG9m IHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJtb3Rpb25fbm90aWZ5 X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdk ay5FdmVudC5HZGtfRXZlbnRfTW90aW9uKQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVy biBCb29sZWFuOwogICAtLQogICAtLSAgICBUaGUgcG9pbnRlciBoYXMgbW92ZWQgd2hpbGUgcmVt YWluaW5nIGluc2lkZSB0aGUgd2lkZ2V0LgogICAtLSAgICBUaGUgU2V0X0V2ZW50cyBzdWJwcm9n cmFtIGhhcyB0byBiZSBjYWxsZWQgZmlyc3QgdG8gZ2V0IHRoaXMgZXZlbnQuCiAgIC0tCiAgIC0t ICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBiZSBwYXNz IHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5kbGVyIG9m IHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJkZWxldGVfZXZlbnQi CiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50 Lkdka19FdmVudCkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAg LS0KICAgLS0gICAgVGhlIHVzZXIgaGFzIGNsaWNrZWQgb24gdGhlICJjbG9zZSIgYnV0dG9uIGlu IHRoZSB3aW5kb3cncyBmcmFtZQogICAtLSAgICAodGhlIGJ1dHRvbiB0aGF0IGlzIGF1dG9tYXRp Y2FsbHkgc2V0IGJ5IHRoZSB3aW5kb3cgbWFuYWdlcikuIElmIHRoZQogICAtLSAgICBoYW5kbGVy IHJldHVybnMgRmFsc2UsIHRoZSB3aWRnZXQgd2lsbCBiZSBkZXN0cm95ZWQgKGFuZCB0aGUgd2lu ZG93CiAgIC0tICAgIGNsb3NlZCksIGJ1dCBpZiB0aGUgaGFuZGxlciByZXR1cm5zIFRydWUsIG5v dGhpbmcgd2lsbCBiZSBkb25lLgogICAtLSAgICBUaGlzIGlzIGEgZ29vZCB3YXkgdG8gcHJldmVu dCB0aGUgdXNlciBmcm9tIGNsb3NpbmcgeW91ciBhcHBsaWNhdGlvbidzCiAgIC0tICAgIHdpbmRv dyBpZiB0aGVyZSBzaG91bGQgYmUgc29tZSBjbGVhbiB1cHMgZmlyc3QgKGxpa2Ugc2F2aW5nIHRo ZQogICAtLSAgICBkb2N1bWVudCkuCiAgIC0tCiAgIC0tICAtICJkZXN0cm95X2V2ZW50IgogICAt LSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtf RXZlbnQpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAg IC0tICAgIFRoaXMgc2lnbmFsIGlzIGFwcGFyZW50bHkgbmV2ZXIgZW1pdHRlZCBieSBHdGsrLiBZ b3UgbWlnaHQgd2FudCB0bwogICAtLSAgICB1c2UgImRlc3Ryb3kiIGluc3RlYWQsIHdoaWNoIGlz IGRvY3VtZW50ZWQgaW4gR3RrLk9iamVjdC4KICAgLS0KICAgLS0gIC0gImV4cG9zZV9ldmVudCIK ICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVj b3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQu R2RrX0V2ZW50X0V4cG9zZSkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVh bjsKICAgLS0KICAgLS0gICAgVGhlIHdpZGdldCBuZWVkcyB0byBiZSBwYXJ0bHkgcmVkcmF3bi4g VGhlIGV4YWN0IGFyZWEgdG8gcmVkcmF3IGlzCiAgIC0tICAgIGZvdW5kIGluIEV2ZW50LiBGb3Ig c29tZSB3aWRnZXRzLCB5b3Ugc2hvdWxkIHJhdGhlciBjb25uZWN0IHRvIHRoZQogICAtLSAgICAi ZHJhdyIgc2lnbmFsLiBIb3dldmVyLCBmb3IgaW5zdGFuY2UgZm9yIEd0a19EcmF3aW5nX0FyZWEg d2lkZ2V0cywKICAgLS0gICAgeW91IGhhdmUgdG8gdXNlIHRoaXMsIGFmdGVyIHNldHRpbmcgdGhl IGNvcnJlY3QgZXZlbnQgbWFzayB3aXRoCiAgIC0tICAgIFNldF9FdmVudHMuCiAgIC0tICAgIElm IHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBiZSBwYXNzIHRvIHRo ZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5kbGVyIG9mIHdpZGdl dCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJrZXlfcHJlc3NfZXZlbnQiCiAg IC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdk a19FdmVudF9LZXkpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAg IC0tCiAgIC0tICAgIEEga2V5IGhhcyBiZWVuIHByZXNzZWQgd2hpbGUgV2lkZ2V0IGhhZCB0aGUg Zm9jdXMuIE5vdGUgdGhhdCBzb21lCiAgIC0tICAgIHdpZGdldHMgbGlrZSBHdGtfRWRpdGFibGUg cHJvdmlkZSBzb21lIGhpZ2hlci1sZXZlbCBzaWduYWxzIHRvIGhhbmRsZQogICAtLSAgICB0aGlz LgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQg YmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFu ZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAia2V5X3Jl bGVhc2VfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQg IDogR2RrLkV2ZW50Lkdka19FdmVudF9LZXkpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIEEga2V5IGhhcyBiZWVuIHJlbGVhc2VkIHdoaWxl IFdpZGdldCBoYWQgdGhlIGZvY3VzLgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZh bHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdp ZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgog ICAtLQogICAtLSAgLSAiZW50ZXJfbm90aWZ5X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5k bGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAg ICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfQ3Jvc3NpbmcpCiAg IC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIFRo ZSBwb2ludGVyIGhhcyBqdXN0IGVudGVyZWQgdGhlIHdpZGdldC4gSWYgdGhlICJDYW5fRm9jdXMi IGZsYWcgaXMKICAgLS0gICAgc2V0LCBXaWRnZXQgd2lsbCBnYWluIHRoZSBmb2N1cywgYW5kIHRo ZSB3aWRnZXQgbWlnaHQgYmUgZHJhd24KICAgLS0gICAgZGlmZmVyZW50bHkuCiAgIC0tICAgIElm IHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBiZSBwYXNzIHRvIHRo ZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5kbGVyIG9mIHdpZGdl dCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJsZWF2ZV9ub3RpZnlfZXZlbnQi CiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50 Lkdka19FdmVudF9Dcm9zc2luZykKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9v bGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHBvaW50ZXIgaGFzIGp1c3QgbGVhdmVkIHRoZSB3aWRn ZXQuIElmIHRoZSAiQ2FuX0ZvY3VzIiBmbGFnIGlzCiAgIC0tICAgIHNldCwgV2lkZ2V0IHdpbGwg Z2FpbiB0aGUgZm9jdXMsIGFuZCB0aGUgd2lkZ2V0IG1pZ2h0IGJlIGRyYXduCiAgIC0tICAgIGRp ZmZlcmVudGx5LgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZl bnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8g b3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAg LSAiY29uZmlndXJlX2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBh Y2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAg IEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfQ29uZmlndXJlKQogICAtLSAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICBTb21lIGNvbmZpZ3VyYXRp b24gb2YgdGhlIHdpbmRvdyBoYXMgY2hhbmdlZCAoaXQgaGFzIGJlZW4KICAgLS0gICAgbW92ZWQg b3IgcmVzaXplZCkuCiAgIC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBl dmVudCBtaWdodCBiZSBwYXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBu byBvdGhlciBoYW5kbGVyIG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0t ICAtICJmb2N1c19pbl9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDog YWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAg ICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50X0ZvY3VzKQogICAtLSAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICBUaGUgd2lkZ2V0IGhhcyBqdXN0 IGdhaW5lZCB0aGUgZm9jdXMuCiAgIC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2Us IHRoZSBldmVudCBtaWdodCBiZSBwYXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0 IChpZiBubyBvdGhlciBoYW5kbGVyIG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0t CiAgIC0tICAtICJmb2N1c19vdXRfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdp ZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAg ICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudF9Gb2N1cykKICAgLS0gICAgICAg ICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHdpZGdldCBo YXMganVzdCBsb3N0IHRoZSBmb2N1cy4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBG YWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3 aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4K ICAgLS0KICAgLS0gIC0gIm1hcF9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lk Z2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAg ICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50KQogICAtLSAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICBUaGUgd2lkZ2V0IGhhcyBqdXN0 IGJlZW4gbWFwcGVkLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSAibWFwIgogICAtLSAgICBz aWduYWwsIHdoaWNoIGlzIGNhbGxlZCAqYmVmb3JlKiB0aGUgd2lkZ2V0IGlzIGFjdHVhbGx5IG1h cHBlZC4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1p Z2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVy IGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gInVu bWFwX2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6 IEdkay5FdmVudC5HZGtfRXZlbnQpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJv b2xlYW47CiAgIC0tCiAgIC0tICAgIFRoZSB3aWRnZXQgaGFzIGp1c3QgYmVlbiB1bm1hcHBlZC4g VGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgInVubWFwIgogICAtLSAgICBzaWduYWwsIHdoaWNo IGlzIGNhbGxlZCAqYmVmb3JlKiB0aGUgd2lkZ2V0IGlzIGFjdHVhbGx5IHVubWFwcGVkLgogICAt LSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFz cyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBv ZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAicHJvcGVydHlfbm90 aWZ5X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6 IEdkay5FdmVudC5HZGtfRXZlbnRfUHJvcGVydHkpCiAgIC0tICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgID8/PwogICAtLQogICAtLSAgLSAic2VsZWN0 aW9uX2NsZWFyX2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nl c3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2 ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfU2VsZWN0aW9uKQogICAtLSAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICA/Pz8KICAgLS0KICAgLS0gIC0g InNlbGVjdGlvbl9yZXF1ZXN0X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAg ICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfU2VsZWN0aW9uKQogICAtLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICA/Pz8KICAgLS0K ICAgLS0gIC0gInNlbGVjdGlvbl9ub3RpZnlfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRs ZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAg ICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudF9TZWxlY3Rpb24pCiAg IC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgID8/ PwogICAtLQogICAtLSAgLSAic2VsZWN0aW9uX3JlY2VpdmVkIgogICAtLSAgICBSZWxhdGVkIHRv IHRoZSBzZWxlY3Rpb24gbWVjaGFuaXNtLCBzZWUgR3RrLlNlbGVjdGlvbgogICAtLQogICAtLSAg LSAic2VsZWN0aW9uX2dldCIKICAgLS0gICAgUmVsYXRlZCB0byB0aGUgc2VsZWN0aW9uIG1lY2hh bmlzbSwgc2VlIEd0ay5TZWxlY3Rpb24KICAgLS0KICAgLS0gIC0gInByb3hpbWl0eV9pbl9ldmVu dCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZl bnQuR2RrX0V2ZW50X1Byb3hpbWl0eSkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4g Qm9vbGVhbjsKICAgLS0KICAgLS0gICAgVXNlZCBmb3Igc3BlY2lhbCBpbnB1dCBkZXZpY2VzLiBT ZWUgdGhlIGRlc2NyaXB0aW9uIG9mCiAgIC0tICAgIEdkay5FdmVudC5HZGtfRXZlbnRfUHJveGlt aXR5LgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWln aHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIg aGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAicHJv eGltaXR5X291dF9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBF dmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50X1Byb3hpbWl0eSkKICAgLS0gICAgICAgICAgICAg ICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgVXNlZCBmb3Igc3BlY2lhbCBp bnB1dCBkZXZpY2VzLiBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mCiAgIC0tICAgIEdkay5FdmVudC5H ZGtfRXZlbnRfUHJveGltaXR5LgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNl LCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdl dCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAt LQogICAtLSAgLSAiZHJhZ19sZWF2ZSIKICAgLS0gICAgRXZlbnQgcmVsYXRlZCB0byBkcmFnLWFu ZC1kcm9wIHN1cHBvcnQuIFNlZSB0aGUgR3RrLkRuZCBkb2N1bWVudGF0aW9uLgogICAtLQogICAt LSAgLSAiZHJhZ19iZWdpbiIKICAgLS0gICAgRXZlbnQgcmVsYXRlZCB0byBkcmFnLWFuZC1kcm9w IHN1cHBvcnQuIFNlZSB0aGUgR3RrLkRuZCBkb2N1bWVudGF0aW9uLgogICAtLQogICAtLSAgLSAi ZHJhZ19lbmQiCiAgIC0tICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0 LiBTZWUgdGhlIEd0ay5EbmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gImRyYWdfZGF0 YV9kZWxldGUiCiAgIC0tICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0 LiBTZWUgdGhlIEd0ay5EbmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gImRyYWdfbW90 aW9uIgogICAtLSAgICBFdmVudCByZWxhdGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2Vl IHRoZSBHdGsuRG5kIGRvY3VtZW50YXRpb24uCiAgIC0tCiAgIC0tICAtICJkcmFnX2Ryb3AiCiAg IC0tICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0LiBTZWUgdGhlIEd0 ay5EbmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gImRyYWdfZGF0YV9nZXQiCiAgIC0t ICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0LiBTZWUgdGhlIEd0ay5E bmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gImRyYWdfZGF0YV9yZWNlaXZlZCIKICAg LS0gICAgRXZlbnQgcmVsYXRlZCB0byBkcmFnLWFuZC1kcm9wIHN1cHBvcnQuIFNlZSB0aGUgR3Rr LkRuZCBkb2N1bWVudGF0aW9uLgogICAtLQogICAtLSAgLSAidmlzaWJpbGl0eV9ub3RpZnlfZXZl bnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0 X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2 ZW50Lkdka19FdmVudF9WaXNpYmlsaXR5KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVy biBCb29sZWFuOwogICAtLQogICAtLSAgICBUaGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgd2lk Z2V0IGhhcyBjaGFuZ2VkIChwYXJ0aWFsbHkgdmlzaWJsZSwKICAgLS0gICAgZnVsbHkgdmlzaWJs ZSwgLi4uKS4gWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoZSAiZXhwb3NlIiBzaWduYWwKICAgLS0g ICAgaW5zdGVhZC4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2 ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5v IG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0g IC0gImNsaWVudF9ldmVudCIKICAgLS0KICAgLS0gICAgPz8/CiAgIC0tCiAgIC0tICAtICJub19l eHBvc2VfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQg IDogR2RrLkV2ZW50Lkdka19FdmVudCkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4g Qm9vbGVhbjsKICAgLS0KICAgLS0gICAgPz8/CiAgIC0tCiAgIC0tICA8L3NpZ25hbHM+CnByaXZh dGUKCiAgIHR5cGUgR3RrX1dpZGdldF9SZWNvcmQgaXMgbmV3IE9iamVjdC5HdGtfT2JqZWN0X1Jl Y29yZCB3aXRoIG51bGwgcmVjb3JkOwoKICAgcHJhZ21hIEltcG9ydCAoQywgUHVzaF9TdHlsZSwg Imd0a193aWRnZXRfcHVzaF9zdHlsZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBQb3BfU3R5bGUs ICJndGtfd2lkZ2V0X3BvcF9zdHlsZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRGVmYXVs dF9TdHlsZSwgImd0a193aWRnZXRfc2V0X2RlZmF1bHRfc3R5bGUiKTsKICAgcHJhZ21hIEltcG9y dCAoQywgR2V0X0RlZmF1bHRfU3R5bGUsICJndGtfd2lkZ2V0X2dldF9kZWZhdWx0X3N0eWxlIik7 CiAgIHByYWdtYSBJbXBvcnQgKEMsIFBvcF9Db2xvcm1hcCwgImd0a193aWRnZXRfcG9wX2NvbG9y bWFwIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFBvcF9WaXN1YWwsICJndGtfd2lkZ2V0X3BvcF92 aXN1YWwiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1R5cGUsICJndGtfd2lkZ2V0X2dldF90 eXBlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9EZWZhdWx0X0NvbG9ybWFwLCAiZ3RrX3dp ZGdldF9nZXRfZGVmYXVsdF9jb2xvcm1hcCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfRGVm YXVsdF9WaXN1YWwsICJndGtfd2lkZ2V0X2dldF9kZWZhdWx0X3Zpc3VhbCIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBQdXNoX0NvbG9ybWFwLCAiZ3RrX3dpZGdldF9wdXNoX2NvbG9ybWFwIik7CiAg IHByYWdtYSBJbXBvcnQgKEMsIFB1c2hfVmlzdWFsLCAiZ3RrX3dpZGdldF9wdXNoX3Zpc3VhbCIp OwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRGVmYXVsdF9Db2xvcm1hcCwgImd0a193aWRnZXRf c2V0X2RlZmF1bHRfY29sb3JtYXAiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0RlZmF1bHRf VmlzdWFsLCAiZ3RrX3dpZGdldF9zZXRfZGVmYXVsdF92aXN1YWwiKTsKICAgcHJhZ21hIElubGlu ZSAoVG9wbGV2ZWxfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAoTm9fV2luZG93X0lzX1NldCk7 CiAgIHByYWdtYSBJbmxpbmUgKFJlYWxpemVkX0lzX1NldCk7CiAgIHByYWdtYSBJbmxpbmUgKE1h cHBlZF9Jc19TZXQpOwogICBwcmFnbWEgSW5saW5lIChWaXNpYmxlX0lzX1NldCk7CiAgIHByYWdt YSBJbmxpbmUgKERyYXdhYmxlX0lzX1NldCk7CiAgIHByYWdtYSBJbmxpbmUgKElzX1NlbnNpdGl2 ZSk7CiAgIHByYWdtYSBJbmxpbmUgKENhbl9Gb2N1c19Jc19TZXQpOwogICBwcmFnbWEgSW5saW5l IChIYXNfRm9jdXNfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAoSGFzX0RlZmF1bHRfSXNfU2V0 KTsKICAgcHJhZ21hIElubGluZSAoSGFzX0dyYWJfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAo UmNfU3R5bGVfSXNfU2V0KTsKZW5kIEd0ay5XaWRnZXQ7CgotLSAgRnVuY3Rpb25zIHRoYXQgaGF2 ZSBubyBBZGEgZXF1aXZhbGVudDoKLS0gIC0gZ3RrX3dpZGdldF9uZXcKLS0gIC0gZ3RrX3dpZGdl dF9nZXQKLS0gIC0gZ3RrX3dpZGdldF9nZXR2Ci0tICAtIGd0a193aWRnZXRfc2V0Ci0tICAtIGd0 a193aWRnZXRfc2V0dgotLSAgLSBndGtfd2lkZ2V0X2dldF9wYXJlbnRfd2luZG93ICA8PSBtYWlu bHkgaW50ZXJuYWwKLS0gIC0gZ3RrX3dpZGdldF9oaWRlX29uX2RlbGV0ZSAgICAgPD0gdXNlZCBh cyBjYWxsYmFjawotLSAgLSBndGtfd2lkZ2V0X3NldF9jb21wb3NpdGVfbmFtZQotLSAgLSBndGtf d2lkZ2V0X2dldF9jb21wb3NpdGVfbmFtZQotLSAgLSBndGtfd2lkZ2V0X3B1c2hfY29tcG9zaXRl X2NoaWxkCi0tICAtIGd0a193aWRnZXRfcG9wX2NvbXBvc2l0ZV9jaGlsZAotLSAgLSBndGtfd2lk Z2V0X3BhdGgKLS0gIC0gZ3RrX3dpZGdldF9jbGFzc19wYXRoCgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABnbmF0YnVnL2dkay1jb2xvci5hZHMAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDEwMDY0NAAwMDAxNzUxADAwMDAwMDAAMDAwMDAwMzI3MzIAMDc1NTExMDc2MzIAMDEzNzI0 ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc3Bh egAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1 IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNr ZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig ICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0t IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxv bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0t Ci0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3Bl Y2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20g IC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMg dG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBi eSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292 ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2Vw dGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRo ZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQ dWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgot LQotLSAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgY29sb3IgaGFu ZGxpbmcgZmFjaWxpdGllcyBpbgotLSAgZ3RrKy4gSXQgaXMgYWJsZSB0byBoYW5kbGUgYW55IGtp bmQgb2YgdmlzdWFsIChtb25vY2hyb21lLCBncmV5c2NhbGUsCi0tICBjb2xvciB3aXRoIGRpZmZl cmVudCBkZXB0aHMsIC4uLiksIGJ1dCBwcm92aWRlcyBhIGNvbW1vbiBhbmQgZWFzeQotLSAgaW50 ZXJmYWNlIGZvciBhbGwgb2YgdGhlbS4KLS0gIFNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zIGV4cGVj dCBhIENvbG9ybWFwLiBUaGVyZSBhcmUgdHdvIHdheXMgeW91IGNhbgotLSAgZ2V0IHN1Y2ggYSBj b2xvcm1hcCwgZWl0aGVyIGEgc3lzdGVtIGRlZmF1bHQgY29sb3JtYXAgb3IgYSBwZXItd2lkZ2V0 Ci0tICBjb2xvcm1hcC4gSXQgaXMgcmVjb21tZW5kZWQsIHVubGVzcyB5b3UgYXJlIHdyaXRpbmcg eW91ciBvd24gbmV3IHdpZGdldCwKLS0gIHRvIGFsd2F5cyB1c2UgdGhlIHN5c3RlbSBkZWZhdWx0 IENvbG9ybWFwLiBBbGwgdGhlIGZ1bmN0aW9ucyB0byBnZXQKLS0gIHRoZXNlIGNvbG9ybWFwcyBh cmUgZm91bmQgaW4gR3RrLldpZGdldC4KLS0KLS0gIEdldHRpbmcgdGhlIFJlZC9HcmVlbi9CbHVl IGNvbXBvbmVudHMgY2FuIGJlIGRvbmUgdGhyb3VnaCBQYXJzZSwgYW5kIGlzCi0tICBhY3R1YWxs eSByZWNvbW1lbmRlZCwgc2luY2UgdGhlIGV4YWN0IGNvbG9yIGdlbmVyYWxseSBkZXBlbmRzIG9u IHRoZQotLSAgdmlzdWFsIHlvdXIgYXBwbGljYXRpb24gaXMgcnVubmluZyBvbi4KLS0KLS0gIDwv ZGVzY3JpcHRpb24+Ci0tICA8Y192ZXJzaW9uPjEuMi42PC9jX3ZlcnNpb24+Cgp3aXRoIEdsaWI7 IHVzZSBHbGliOwp3aXRoIEdkay5WaXN1YWw7CgpwYWNrYWdlIEdkay5Db2xvciBpcwoKICAgdHlw ZSBHZGtfQ29sb3IgaXMgcHJpdmF0ZTsKICAgLS0gIEEgY29sb3IgdG8gYmUgZGlzcGxheWVkIG9u IHRoZSBzY3JlZW4uCiAgIC0tICBDdXJyZW50bHksIEd0a0FkYSBvbmx5IHN1cHBvcnRzIHRoZSBS R0Igc3RhbmRhcmQsIGllIGVhY2ggY29sb3IgaXMKICAgLS0gIHNldCBieSBpdHMgcmVkLCBncmVl biBhbmQgYmx1ZSBjb21wb25lbnRzLgogICAtLSAgQW4gZXh0cmEgZmllbGQgKFBpeGVsKSBpcyB0 aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbG9yLAogICAtLSAgd2hpY2ggaXMg c2V0IG9uY2UgdGhlIGNvbG9yIGhhcyBiZWVuIGFsbG9jYXRlZC4KCiAgIHR5cGUgR2RrX0NvbG9y X0FycmF5IGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHZGtfQ29sb3I7CiAgIC0tICBB biBhcnJheSBvZiBjb2xvcnMuCgogICBOdWxsX0NvbG9yIDogY29uc3RhbnQgR2RrX0NvbG9yOwog ICAtLSAgTm8gY29sb3IuIEZvciBtb3N0IGZ1bmN0aW9ucywgdGhpcyB3aWxsIHNlbGVjdCB0aGUg ZGVmYXVsdCBjb2xvciBpbiB0aGUKICAgLS0gIGNvbnRleHQsIGFsdGhvdWdoIHRoaXMgZXhhY3Qg c3BlY2lmaWNhdGlvbiBkZXBlbmRzIG9uIHRoZSBmdW5jdGlvbiB5b3UKICAgLS0gIHdhbnQgdG8g dXNlLgoKICAgdHlwZSBHZGtfQ29sb3JtYXAgaXMgbmV3IENfUHJveHk7CiAgIC0tICBUaGUgc2V0 IG9mIGNvbG9ycyB0aGUgY2FuIGJlIGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLgogICAtLSAgV2hl biB0aGUgc2NyZWVuIGlzIG5vdCBhIHRydWUtY29sb3Igc2NyZWVuIChpZSB0aGVyZSBpcyBvbmx5 IGEgbGltaXRlZAogICAtLSAgbnVtYmVyIG9mIHBvc3NpYmxlIGNvbG9ycywgbGlrZSAyNTYpLCB0 aGUgY29sb3JzIGFyZSBpbiBmYWN0IGluZGV4ZXMKICAgLS0gIGludG8gYSBjb2xvcm1hcCwgd2hp Y2ggZ2l2ZXMgdGhlIGNvbXBvbmVudHMgb2YgdGhlIGNvbG9yLgogICAtLSAgVGhpcyBpcyB0aGUg c2FtZSBjb25jZXB0IGFzIGEgcGFsZXR0ZS4KCiAgIE51bGxfQ29sb3JtYXAgOiBjb25zdGFudCBH ZGtfQ29sb3JtYXA7CgogICBXcm9uZ19Db2xvciA6IGV4Y2VwdGlvbjsKICAgLS0gIEV4Y2VwdGlv biByYWlzZWQgd2hlbiBzb21lIGZ1bmN0aW9ucyBiZWxvdyBjb3VsZCBub3QgZmluZCBvciBhbGxv Y2F0ZQogICAtLSAgYSBjb2xvciBvbiB0aGUgdXNlcidzIHN5c3RlbS4KCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBDcmVhdGluZyBhbmQgRGVzdHJveWluZyBj b2xvcnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5j dGlvbiBQYXJzZSAoU3BlYyA6IGluIFN0cmluZykgcmV0dXJuIEdka19Db2xvcjsKICAgLS0gIFBh cnNlIHRoZSBzdHJpbmcgU3BlYywgYW5kIGdldCBpdHMgUmVkL0dyZWVuL0JsdWUgY29tcG9uZW50 cy4KICAgLS0gIFRoZSBjb2xvciBpcyBub3QgYWxsb2NhdGVkLCBhbmQgeW91IG5lZWQgdG8gY2Fs bCBBbGxvY19Db2xvci4KICAgLS0gIElmIHRoZSBzdHJpbmcgY291bGQgbm90IGJlIHBhcnNlZCB0 byBhbiBleGlzdGluZyBjb2xvciwgV3JvbmdfQ29sb3IgaXMKICAgLS0gIHJhaXNlZC4KICAgLS0g IFRoZSBzdHJpbmcgY2FuIGJlIG9uZSBvZiA6CiAgIC0tCiAgIC0tICAtICJSQkc6RkYvRkYvRkYi IHdoZXJlIHRoZSAiRkYiIHN1YnN0cmluZ3MgYXJlIHJlc3BlY3RpdmVseSB0aGUgdmFsdWUKICAg LS0gICAgb2YgdGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cy4gU29tZSBvdGhlciBw cmVmaXhlcyB0aGFuIFJHQgogICAtLSAgICBhcmUgZGVmaW5lZCBpbiB0aGUgWDExIGRlZmluaXRp b24sIHBsZWFzZSBzZWUgc29tZSBYMTEgZG9jdW1lbnRhdGlvbgogICAtLSAgICAob3IgdGhlIG1h biBwYWdlIFhQYXJzZUNvbG9yIG9uIHVuaXggc3lzdGVtcykuCiAgIC0tCiAgIC0tICAtICJjb2xv cl9uYW1lIiB3aGljaCBjYW4gYmUgYW55IGNvbG9yIG5hbWUgZGVmaW5lZCBpbiB0aGUgZmlsZSBy Z2IudHh0CiAgIC0tICAgIG9mIHRoZSB1c2VyJ3Mgc3lzdGVtLiBZb3Ugc2hvdWxkIGFsd2F5cyBj aGVjayB0aGF0IFdyb25nX0NvbG9yIHdhcyBub3QKICAgLS0gICAgcmFpc2VkLCBpbiBjYXNlIHRo ZSBjb2xvciB3YXMgbm90IGtub3duIG9uIHRoZSB1c2VyJ3Mgc3lzdGVtLiBUaGlzCiAgIC0tICAg IHN0cmluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgoKICAgcHJvY2VkdXJlIEFsbG9jX0NvbG9yIChD b2xvcm1hcCAgIDogaW4gICAgIEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICAgICAg ICBDb2xvciAgICAgIDogaW4gb3V0IEdka19Db2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAg ICBXcml0ZWFibGUgIDogaW4gICAgIEJvb2xlYW4gOj0gRmFsc2U7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgQmVzdF9NYXRjaCA6IGluICAgICBCb29sZWFuIDo9IFRydWU7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgU3VjY2VzcyAgICA6ICAgIG91dCBCb29sZWFuKTsKICAgLS0gIEFsbG9j YXRlIGEgbmV3IGNvbG9yLgogICAtLSAgVGhlIGZpZWxkcyBSR0Igc2hvdWxkIGhhdmUgYmVlbiBz ZXQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KICAgLS0gIElmIFdyaXRlYWJsZSBpcyBU cnVlLCB0aGUgY29sb3Igd2lsbCBiZSBhbGxvY2F0ZWQgcmVhZC93cml0ZSwgdGhhdCBjYW4KICAg LS0gIGJlIGNoYW5nZWQgYXQgYW55IHRpbWUuIE5vdCBhbGwgdmlzdWFscyBzdXBwb3J0IHRoaXMu IE9uIG1vZGVybiBzeXN0ZW1zCiAgIC0tICB0aGlzIHVzYWdlIGhhcyBiZWNvbWUgbGVzcyB1c2Vm dWwgdGhhbiBiZWZvcmUsIHNpbmNlIHJlZHJhd2luZyB0aGUKICAgLS0gIHNjcmVlbiB3aXRoIGEg bmV3IGNvbG9yIGlzIGFib3V0IGFzIGZhc3QuCiAgIC0tICBJZiBCZXN0X01hdGNoIGlzIFRydWUs IGFuZCB0aGUgZXhhY3QgY29sb3IgY2FuIG5vdCBiZSBhbGxvY2F0ZWQsIEd0a0FkYQogICAtLSAg d2lsbCBmaW5kIHRoZSBjbG9zZXN0IHBvc3NpYmxlIG1hdGNoLCBhbmQgbW9kaWZ5IHRoZSBmaWVs ZHMgUmVkLCBHcmVlbgogICAtLSAgYW5kIEJsdWUgb2YgQ29sb3IuCiAgIC0tICBOb3RlIHRoYXQg dGhlIGFsbG9jYXRpb24gaGFzIG1vcmUgY2hhbmNlcyB0byBzdWNjZWVkIGlmIFdyaXRlYWJsZSBp cwogICAtLSAgRmFsc2UgYW5kIEJlc3RfTWF0Y2ggaXMgVHJ1ZS4KICAgLS0gIFdoZW4geW91IG5v IGxvbmdlciB1c2UgYSBjb2xvciwgeW91IHNob3VsZCBjYWxsIEZyZWUuCgogICBwcm9jZWR1cmUg QWxsb2NfQ29sb3JzIChDb2xvcm1hcCAgIDogaW4gICAgIEdka19Db2xvcm1hcDsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ29sb3JzICAgICA6IGluIG91dCBHZGtfQ29sb3JfQXJyYXk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlYWJsZSAgOiBpbiAgICAgQm9vbGVhbiA6PSBG YWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVzdF9NYXRjaCA6IGluICAgICBCb29s ZWFuIDo9IFRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgOiAgICBv dXQgQm9vbGVhbl9BcnJheTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ICAgICA6 ICAgIG91dCBHaW50KTsKICAgLS0gIEFsbG9jYXRlIGEgc2V0IG9mIGNvbG9ycy4KICAgLS0gIFRo ZSBwYXJhbWV0ZXJzIGFyZSB0aGUgc2FtZSBhcyBmb3IgQWxsb2NfQ29sb3IKICAgLS0gIFJlc3Vs dCBpcyB0aGUgbnVtYmVyIG9mIGNvbG9ycyBub3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZC4KICAg LS0KICAgLS0gIFRoZSBzaXplIG9mIHRoZSBCb29sZWFuX0FycmF5IGlzIGVxdWFsIHRvIHRoZSBs ZW5ndGggb2YgdGhlCiAgIC0tICBDb2xvcnNfQXJyYXkuIFVzYWdlIG9mIGFuIGFycmF5IG9mIGEg ZGlmZmVyZW50IHNpemUgd2lsbAogICAtLSAgcHJvYmFibHkgbGVhZCB0byBhIENvbnN0cmFpbnRf RXJyb3IuCgogICBwcm9jZWR1cmUgQWxsb2MgKENvbG9ybWFwICA6IGluIEdka19Db2xvcm1hcDsK ICAgICAgICAgICAgICAgICAgICBDb2xvciAgICAgOiBpbiBvdXQgR2RrX0NvbG9yKTsKICAgLS0g IFNhbWUgZnVuY3Rpb24gYXMgQWxsb2NfQ29sb3JzIGFib3ZlLCBidXQgZm9yIGEgc2luZ2xlIGNv bG9yLgogICAtLSAgVGhlIGNvbG9yIGlzIGFsbG9jYXRlZCBub24td3JpdGVhYmxlLCBhbmQgdGhl IGJlc3QtbWF0Y2ggaXMgdGFrZW4uCiAgIC0tICBSYWlzZXMgV3JvbmdfQ29sb3IgaWYgdGhlIGNv bG9yIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQKCiAgIGZ1bmN0aW9uIFdoaXRlIChDb2xvcm1hcCAg OiBpbiBHZGtfQ29sb3JtYXApIHJldHVybiBHZGtfQ29sb3I7CiAgIC0tICBSZXR1cm4gdGhlIGRl ZmF1bHQgd2hpdGUgY29sb3IgZm9yIHRoZSBjb2xvcm1hcC4KICAgLS0gIElmIHRoaXMgY29sb3Ig d2FzIG5vdCBmb3VuZCBvciBjb3VsZCBub3QgYmUgYWxsb2NhdGVkLCBXcm9uZ19Db2xvciBpcwog ICAtLSAgcmFpc2VkLgoKICAgZnVuY3Rpb24gQmxhY2sgKENvbG9ybWFwICA6IGluIEdka19Db2xv cm1hcCkgcmV0dXJuIEdka19Db2xvcjsKICAgLS0gIFJldHVybiB0aGUgZGVmYXVsdCBibGFjayBj b2xvcnMgZm9yIHRoZSBjb2xvcm1hcC4KICAgLS0gIElmIHRoaXMgY29sb3IgaXMgbm90IGZvdW5k IG9yIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQsIFdyb25nX0NvbG9yIGlzCiAgIC0tICByYWlzZWQu CgogICBmdW5jdGlvbiBHZXRfU3lzdGVtIHJldHVybiBHZGtfQ29sb3JtYXA7CiAgIC0tICBHZXQg dGhlIGRlZmF1bHQgY29sb3JtYXAgZm9yIHRoZSBzeXN0ZW0uCiAgIC0tICBUaGlzIGlzIHRoZSBz YW1lIGZ1bmN0aW9uIGFzIEd0ay5XaWRnZXQuR2V0X0RlZmF1bHRfQ29sb3JtYXAuCgogICBwcm9j ZWR1cmUgR2V0X1Zpc3VhbCAoQ29sb3JtYXAgOiBpbiAgICAgR2RrX0NvbG9ybWFwOwogICAgICAg ICAgICAgICAgICAgICAgICAgVmlzdWFsICAgOiAgICBvdXQgR2RrLlZpc3VhbC5HZGtfVmlzdWFs KTsKICAgLS0gIEdldCB0aGUgdmlzdWFsIGFzc29jaWF0ZWQgd2l0aCBhIGNvbG9ybWFwLgogICAt LSAgVGhlIG1haW4gaW5mb3JtYXRpb24geW91IGNhbiBnZXQgZnJvbSB0aGVyZSBpcyB0aGUgZGVw dGggb2YgdGhlIGRpc3BsYXkuCgogICBwcm9jZWR1cmUgR2RrX05ldyAoQ29sb3JtYXAgICAgIDog ICAgb3V0IEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICAgIFZpc3VhbCAgICAgICA6 IGluICAgICBHZGsuVmlzdWFsLkdka19WaXN1YWw7CiAgICAgICAgICAgICAgICAgICAgICBQcml2 YXRlX0NtYXAgOiBpbiAgICAgQm9vbGVhbik7CiAgIC0tICBDcmVhdGUgYSBuZXcgY29sb3JtYXAg Zm9yIHRoZSB2aXN1YWwuCiAgIC0tICBJZiBQcml2YXRlX0NtYXAgaXMgdHJ1ZSwgdGhlbiB0aGUK ICAgLS0gIGNvbG9ybWFwIHdvbid0IGJlIG1vZGlmaWFibGUgb3V0c2lkZSB0aGlzIHNjb3BlLiBU aGlzIG1pZ2h0IHJlc3VsdCBpbgogICAtLSAgc29tZSBzdHJhbmdlIGNvbG9ycyBvbiB0aGUgZGlz cGxheS4uLgoKICAgcHJvY2VkdXJlIFVucmVmIChDb2xvcm1hcCA6IGluIEdka19Db2xvcm1hcCk7 CiAgIC0tICBVbnJlZiBpcyB0aGUgb25seSB3YXkgdG8gZGVzdHJveSBhIGNvbG9ybWFwIG9uY2Ug eW91IG5vIGxvbmdlciBuZWVkIGl0LgogICAtLSAgTm90ZSB0aGF0IGJlY2F1c2UgZ3RrKyB1c2Vz IHJlZmVyZW5jZSBjb3VudHMsIHRoZSBjb2xvcm1hcCB3aWxsIG5vdAogICAtLSAgYmUgYWN0dWFs bHkgZGVzdHJveWVkIHdoaWxlIGF0IGxlYXN0IG9uZSBvYmplY3QgaXMgdXNpbmcgaXQuCgogICBw cm9jZWR1cmUgUmVmIChDb2xvcm1hcCA6IGluIEdka19Db2xvcm1hcCk7CiAgIC0tICBJbmNyZW1l bnQgdGhlIHJlZi1jb3VudCBmb3IgdGhlIGNvbG9yLgogICAtLSAgWW91IHNob3VsZCBub3QgaGF2 ZSB0byB1c2UgdGhpcyBmdW5jdGlvbi4KCiAgIGZ1bmN0aW9uIEdldF9TeXN0ZW1fU2l6ZSByZXR1 cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRlZmF1 bHQgY29sb3JtYXAgb24gdGhlIHN5c3RlbS4KCiAgIHByb2NlZHVyZSBGcmVlX0NvbG9ycyAoQ29s b3JtYXAgOiBpbiBHZGtfQ29sb3JtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3Jz ICAgOiBpbiBHZGtfQ29sb3JfQXJyYXkpOwogICAtLSAgRnJlZSBDb2xvcnMsIGFzc3VtaW5nIHRo ZXkgYXJlIGFsbG9jYXRlZCBpbiBDb2xvcm1hcC4KCiAgIHByb2NlZHVyZSBTdG9yZSAoQ29sb3Jt YXAgOiBpbiBHZGtfQ29sb3JtYXA7CiAgICAgICAgICAgICAgICAgICAgQ29sb3JzICAgOiBpbiBH ZGtfQ29sb3JfQXJyYXkpOwogICAtLSAgU3RvcmUgdGhlIENvbG9ycyBpbiB0aGUgQ29sb3JtYXAK CiAgIHByb2NlZHVyZSBBbGxvYyAoQ29sb3JtYXAgICA6IGluIEdka19Db2xvcm1hcDsKICAgICAg ICAgICAgICAgICAgICBDb250aWd1b3VzIDogaW4gQm9vbGVhbjsKICAgICAgICAgICAgICAgICAg ICBQbGFuZXMgICAgIDogaW4gICAgIEd1bG9uZ19BcnJheTsKICAgICAgICAgICAgICAgICAgICBQ aXhlbHMgICAgIDogaW4gICAgIEd1bG9uZ19BcnJheTsKICAgICAgICAgICAgICAgICAgICBTdWNj ZWVkZWQgIDogICAgb3V0IEJvb2xlYW4pOwogICAtLSAgQWxsb2NhdGUgc29tZSBSZWFkL1dyaXRl IGNvbG9yIGNlbGxzLgogICAtLSAgQ29sb3IgY2VsbHMnIHZhbHVlcyBjYW4gYmUgY2hhbmdlZAog ICAtLSAgZHluYW1pY2FsbHkuIFRoZSBwaXhlbHMgYWxsb2NhdGVkIGFyZSByZXR1cm5lZCBpbiBQ aXhlbHMuCiAgIC0tICBTZWUgWEFsbG9jQ29sb3JDZWxscygzKSBvbiBVbml4IHN5c3RlbXMuCiAg IC0tICBUaGUgUGxhbmVzIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBub25kZXN0cnVjdGl2ZWx5 IG92ZXJsYXkgb25lCiAgIC0tICBzZXQgb2YgZ3JhcGhpY3Mgb3ZlciBhbm90aGVyLiBTZWUgdGhl IFgxMSBtYW51YWwgZm9yIG1vcmUgaW5mby4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGlzIGEgbG93 LWxldmVsIGZ1bmN0aW9uIHdoaWNoIHlvdSBzaG91bGQgcmFyZWx5CiAgIC0tICBoYXZlIHRvIHVz ZS4KCiAgIHByb2NlZHVyZSBGcmVlIChDb2xvcm1hcCA6IGluIEdka19Db2xvcm1hcDsKICAgICAg ICAgICAgICAgICAgIFBpeGVscyAgIDogaW4gR3Vsb25nX0FycmF5OwogICAgICAgICAgICAgICAg ICAgUGxhbmVzICAgOiBpbiBHdWxvbmcpOwogICAtLSAgRnJlZSBzb21lIGNvbG9ycyBpbiB0aGUg Y29sb3JtYXAuCiAgIC0tICBTZWUgWEZyZWVDb2xvcnMoMykgb24gVW5peCBzeXN0ZW1zLgoKICAg LS0gIDxkb2NfaWdub3JlPgogICBmdW5jdGlvbiBIYXNoIChDb2xvcl9BIDogaW4gR2RrX0NvbG9y OwogICAgICAgICAgICAgICAgICBDb2xvcl9CIDogaW4gR2RrX0NvbG9yKSByZXR1cm4gR3VpbnQ7 CiAgIC0tICBSZXR1cm4gYSBoYXNoIGNvZGUgZm9yIENvbG9yX0EuCiAgIC0tICBUaGlzIHNlZW1z IHRvIGJlIGEgaW50ZXJuYWwgZnVuY3Rpb24gZm9yIGd0aysgb25seS4KICAgLS0gIDwvZG9jX2ln bm9yZT4KCiAgIHByb2NlZHVyZSBDaGFuZ2UgKENvbG9ybWFwICA6IGluIEdka19Db2xvcm1hcDsK ICAgICAgICAgICAgICAgICAgICAgQ29sb3IgICAgIDogaW4gb3V0IEdka19Db2xvcjsKICAgICAg ICAgICAgICAgICAgICAgU3VjY2VlZGVkIDogICAgb3V0IEJvb2xlYW4pOwogICAtLSAgQ2hhbmdl IHRoZSBSZWFkL1dyaXRlIGNvbG9ybWFwIGNlbGwgY29ycmVzcG9uZGluZyB0byBDb2xvci4KICAg LS0gIFRoZSBuZXcgdmFsdWUgaXMgdGhlIG9uZSBjb250YWluZWQgaW4gdGhlIFJlZCwgR3JlZW4g YW5kIEJsdWUKICAgLS0gIGZpZWxkcyBvZiBDb2xvci4KCiAgIHByb2NlZHVyZSBDaGFuZ2UgKENv bG9ybWFwIDogaW4gR2RrX0NvbG9ybWFwOwogICAgICAgICAgICAgICAgICAgICBOY29sb3JzICA6 IGluIEdpbnQpOwogICAtLSAgQ2hhbmdlcyB0aGUgZmlyc3QgTmNvbG9ycyBkZWZpbmVkIGluIENv bG9ybWFwLgoKICAgcHJvY2VkdXJlIENvcHkgKFNvdXJjZSAgICAgIDogaW4gICAgIEdka19Db2xv cjsKICAgICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uIDogICAgb3V0IEdka19Db2xvcik7CiAg IC0tICBDb3B5IHRoZSBTb3VyY2UgY29sb3IgdG8gRGVzdGluYXRpb24uCgogICBmdW5jdGlvbiBF cXVhbCAoQ29sb3JhLCBDb2xvcmIgOiBpbiBHZGtfQ29sb3IpIHJldHVybiBCb29sZWFuOwogICAt LSAgVHJ1ZSBpZiB0aGUgUmVkLCBHcmVlbiBhbmQgQmx1ZSBjb21wb25lbnRzIG9mIGJvdGggY29s b3JzIGFyZSBlcXVhbC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICAtLSBTZXR0aW5nL0dldHRpbmcgdGhlIGZpZWxkcyBvZiBHZGtfQ29sb3IgLS0K ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9j ZWR1cmUgU2V0X1JnYiAoQ29sb3IgICA6IG91dCBHZGtfQ29sb3I7CiAgICAgICAgICAgICAgICAg ICAgICBSZWQsIEdyZWVuLCBCbHVlIDogaW4gR3VzaG9ydCk7CiAgIC0tICBNb2RpZnkgdGhlIGZp ZWxkcyBvZiB0aGUgY29sb3IuCiAgIC0tICBZb3UgdGhlbiBoYXZlIHRvIGFsbG9jYXRlIHRoZSBj b2xvciB3aXRoIG9uZSBvZiB0aGUgQWxsb2MqIGZ1bmN0aW9ucwogICAtLSAgYWJvdmUuCgogICBw cm9jZWR1cmUgU2V0X1BpeGVsIChDb2xvciA6IGluIG91dCBHZGtfQ29sb3I7IFBpeGVsIDogR3Vs b25nKTsKICAgLS0gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsbW9zdCBuZXZlciBiZSB1c2VkLiBJ bnN0ZWFkLCB1c2UgQWxsb2NfQ29sb3IKCiAgIGZ1bmN0aW9uIFJlZCAoQ29sb3IgOiBpbiBHZGtf Q29sb3IpIHJldHVybiBHdXNob3J0OwogICAtLSAgUmV0dXJuIHRoZSBSZWQgZmllbGQgb2YgQ29s b3IuCgogICBmdW5jdGlvbiBHcmVlbiAoQ29sb3IgOiBpbiBHZGtfQ29sb3IpIHJldHVybiBHdXNo b3J0OwogICAtLSAgUmV0dXJuIHRoZSBHcmVlbiBmaWVsZCBvZiBDb2xvci4KCiAgIGZ1bmN0aW9u IEJsdWUgKENvbG9yIDogaW4gR2RrX0NvbG9yKSByZXR1cm4gR3VzaG9ydDsKICAgLS0gIFJldHVy biB0aGUgQmx1ZSBmaWVsZCBvZiBDb2xvci4KCiAgIGZ1bmN0aW9uIFBpeGVsIChDb2xvciA6IGlu IEdka19Db2xvcikgcmV0dXJuIEd1bG9uZzsKICAgLS0gIFJldHVybiB0aGUgUGl4ZWwgZmllbGQg b2YgQ29sb3IuCgpwcml2YXRlCiAgIE51bGxfQ29sb3JtYXAgOiBjb25zdGFudCBHZGtfQ29sb3Jt YXAgOj0gbnVsbDsKCiAgIHR5cGUgR2RrX0NvbG9yIGlzCiAgICAgIHJlY29yZAogICAgICAgICBQ aXhlbCA6IEd1bG9uZzsKICAgICAgICAgUmVkICAgOiBHdXNob3J0OwogICAgICAgICBHcmVlbiA6 IEd1c2hvcnQ7CiAgICAgICAgIEJsdWUgIDogR3VzaG9ydDsKICAgICAgZW5kIHJlY29yZDsKICAg LS0gIFRoZSBmaWVsZHMgYXJlIHRvIGJlIGNob3NlbiBiZXR3ZWVuIDAgYW5kIDY1NTM1LCBub3Qg MCBhbmQgMjU1ISEhCgogICBOdWxsX0NvbG9yIDogY29uc3RhbnQgR2RrX0NvbG9yIDo9IChHdWxv bmcnTGFzdCwgMSwgMCwgMCk7CiAgIC0tICBOb3RlOiBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg R3RrQWRhLCBldmVyeXRpbWUgYSBjb2xvciBpcyB1c2VkLCBpdAogICAtLSAgaXMgaW1wb3J0YW50 IHRvIHRlc3Qgd2hldGhlciB0aGlzIGlzIE51bGxfQ29sb3Igb3Igbm90LiBJZiBpdCBpcywgdGhl bgogICAtLSAgU3lzdGVtLk51bGxfQWRkcmVzcyBzaG91bGQgYmUgcGFzc2VkIHRvIEMgaW5zdGVh ZCBvZiBOdWxsX0NvbG9yJ0FkZHJlc3MKICAgLS0gIHNvIHRoYXQgZ3RrKyBjYW4gcHJvdmlkZSBh IGRlZmF1bHQgdmFsdWUgZm9yIGNvbG9ycy4KCiAgIHByYWdtYSBJbmxpbmUgKFNldF9SZ2IpOwog ICBwcmFnbWEgSW5saW5lIChTZXRfUGl4ZWwpOwogICBwcmFnbWEgSW5saW5lIChSZWQpOwogICBw cmFnbWEgSW5saW5lIChHcmVlbik7CiAgIHByYWdtYSBJbmxpbmUgKEJsdWUpOwogICBwcmFnbWEg SW5saW5lIChQaXhlbCk7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9TeXN0ZW1fU2l6ZSwgImdk a19jb2xvcm1hcF9nZXRfc3lzdGVtX3NpemUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1N5 c3RlbSwgImdka19jb2xvcm1hcF9nZXRfc3lzdGVtIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJl ZiwgImdka19jb2xvcm1hcF9yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgVW5yZWYsICJnZGtf Y29sb3JtYXBfdW5yZWYiKTsKZW5kIEdkay5Db2xvcjsKCi0tICA8ZXhhbXBsZT4KLS0gIC0tICBI ZXJlIGlzIGFuIGV4YW1wbGUgaG93IHlvdSBjYW4gYWxsb2NhdGUgYSBuZXcgY29sb3IsIHdoZW4g eW91IGtub3cKLS0gIC0tICBpdHMgcmVkL2dyZWVuL2JsdWUgY29tcG9uZW50czogTm90ZSB0aGF0 IHdlIGFsbG9jYXRlIHdoaXRlIGluIGZhY3QKLS0gIC0tICBzaW5jZSB0aGUgbWF4aW1hbCB2YWx1 ZSBmb3IgY29sb3IgY29tcG9uZW50cyBpcyA2NTUzNS4KLS0gICAgIENvbG9yICAgOiBHZGtfQ29s b3I7Ci0tICAgICBTdWNjZXNzIDogQm9vbGVhbjsKLS0gICAgIFNldF9SYmcgKENvbG9yLCA2NTUz NSwgNjU1MzUsIDY1NTM1KTsKLS0gICAgIEFsbG9jX0NvbG9yIChDb2xvcm1hcCAgID0+IEd0ay5X aWRnZXQuR2V0X0RlZmF1bHRfQ29sb3JtYXAsCi0tICAgICAgICAgICAgICAgICAgQ29sb3IgICAg ICA9PiBDb2xvciwKLS0gICAgICAgICAgICAgICAgICBXcml0ZWFibGUgID0+IEZhbHNlLAotLSAg ICAgICAgICAgICAgICAgIEJlc3RfTWF0Y2ggPT4gVHJ1ZSwKLS0gICAgICAgICAgICAgICAgICBT dWNjZXNzICAgID0+IFN1Y2Nlc3MpOwotLSAgICAgaWYgbm90IFN1Y2Nlc3MgdGhlbgotLSAgICAg ICAgIC4uLjsgIC0tICBhbGxvY2F0aW9uIGZhaWxlZAotLSAgICAgZW5kIGlmOwotLSAgPC9leGFt cGxlPgotLQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGduYXRidWcvZ2Rr LXZpc3VhbC5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAwMAAw MDAwMDAwNzAyMwAwNzU1MTEwNzYzMgAwMTQxMDQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtp dCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBD b3B5cmlnaHQgKEMpIDE5OTgtMTk5OSAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAg IEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAg ICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy ICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0g YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmls ZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGlu ayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0 YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGlu ZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxp ZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBt aWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCndpdGggR2xpYjsgdXNlIEdsaWI7CndpdGggR2xpYi5HbGlzdDsKcHJhZ21hIEVs YWJvcmF0ZV9BbGwgKEdsaWIuR2xpc3QpOwoKd2l0aCBHZGsuVHlwZXM7CndpdGggU3lzdGVtOwp3 aXRoIFVuY2hlY2tlZF9Db252ZXJzaW9uOwoKcGFja2FnZSBHZGsuVmlzdWFsIGlzCgogICB0eXBl IEdka19WaXN1YWwgaXMgbmV3IEdkay5DX1Byb3h5OwogICBOdWxsX1Zpc3VhbCA6IGNvbnN0YW50 IEdka19WaXN1YWw7CiAgIC0tICBUaGlzIHR5cGUgaXMgbm90IHByaXZhdGUgYmVjYXVzZSB3ZSBu ZWVkIHRoZSBmdWxsIGRlY2xhcmF0aW9uCiAgIC0tICB0byBpbnN0YW5jaWF0ZSBHbGliLkdsaXN0 LkdlbmVyaWNfTGlzdCB3aXRoIGl0LgoKICAgdHlwZSBHZGtfVmlzdWFsX1R5cGVfQXJyYXkgaXMg YXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pCiAgICAgb2YgVHlwZXMuR2RrX1Zpc3VhbF9UeXBlOwoK ICAgZnVuY3Rpb24gR2V0X0Jlc3RfRGVwdGggcmV0dXJuIEdpbnQ7CgogICBmdW5jdGlvbiBHZXRf QmVzdF9UeXBlIHJldHVybiBUeXBlcy5HZGtfVmlzdWFsX1R5cGU7CgogICBwcm9jZWR1cmUgR2V0 X1N5c3RlbSAoVmlzdWFsIDogb3V0IEdka19WaXN1YWwpOwoKICAgcHJvY2VkdXJlIEdldF9CZXN0 IChWaXN1YWwgOiBvdXQgR2RrX1Zpc3VhbCk7CgogICBwcm9jZWR1cmUgR2V0X0Jlc3QKICAgICAo VmlzdWFsIDogICAgb3V0IEdka19WaXN1YWw7CiAgICAgIERlcHRoICA6IGluICAgICBHaW50KTsK CiAgIHByb2NlZHVyZSBHZXRfQmVzdAogICAgIChWaXN1YWwgICAgICA6ICAgIG91dCBHZGtfVmlz dWFsOwogICAgICBWaXN1YWxfVHlwZSA6IGluICAgICBUeXBlcy5HZGtfVmlzdWFsX1R5cGUpOwoK ICAgcHJvY2VkdXJlIEdldF9CZXN0CiAgICAgKFZpc3VhbCAgICAgIDogICAgb3V0IEdka19WaXN1 YWw7CiAgICAgIERlcHRoICAgICAgIDogaW4gICAgIEdpbnQ7CiAgICAgIFZpc3VhbF9UeXBlIDog aW4gICAgIFR5cGVzLkdka19WaXN1YWxfVHlwZSk7CgogICBmdW5jdGlvbiBRdWVyeV9EZXB0aHMg cmV0dXJuIEdpbnRfQXJyYXk7CgogICBmdW5jdGlvbiBRdWVyeV9WaXN1YWxfVHlwZXMgcmV0dXJu IEdka19WaXN1YWxfVHlwZV9BcnJheTsKCiAgIGZ1bmN0aW9uIENvbnZlcnQgaXMgbmV3IFVuY2hl Y2tlZF9Db252ZXJzaW9uIChHZGtfVmlzdWFsLCBTeXN0ZW0uQWRkcmVzcyk7CiAgIGZ1bmN0aW9u IENvbnZlcnQgaXMgbmV3IFVuY2hlY2tlZF9Db252ZXJzaW9uIChTeXN0ZW0uQWRkcmVzcywgR2Rr X1Zpc3VhbCk7CgogICBwYWNrYWdlIEdka19WaXN1YWxfTGlzdCBpcyBuZXcgR2xpYi5HbGlzdC5H ZW5lcmljX0xpc3QgKEdka19WaXN1YWwpOwoKICAgZnVuY3Rpb24gTGlzdF9WaXN1YWxzIHJldHVy biBHZGtfVmlzdWFsX0xpc3QuR2xpc3Q7Cgpwcml2YXRlCiAgIE51bGxfVmlzdWFsIDogY29uc3Rh bnQgR2RrX1Zpc3VhbCA6PSBudWxsOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfQmVzdF9EZXB0 aCwgImdka192aXN1YWxfZ2V0X2Jlc3RfZGVwdGgiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0 X0Jlc3RfVHlwZSwgImdka192aXN1YWxfZ2V0X2Jlc3RfdHlwZSIpOwplbmQgR2RrLlZpc3VhbDsK AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGduYXRidWcvZ2xpYi1nbGlzdC5h ZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAwMAAwMDAwMDAyNTAx MAAwNzU1MTEwNzYzMgAwMTQwNjcAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAg ICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQg KEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVs IEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0K LS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAg LS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAg ICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFu dGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVu aXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhp cyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0g ZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkg b3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBj b3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ci0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBUaGlzIHBhY2thZ2UgaW1wbGVtZW50cyBhIGdlbmVy aWMgZG91YmxlLWxpbmtlZCBsaXN0LgotLSAgU3VjaCBsaXN0cyBhcmUgdXNlZCB0aHJvdWdob3V0 IEd0a0FkYSB0byBjb250YWluIGxpc3RzIG9mIHdpZGdldHMKLS0gIChmb3IgdGhlIGNoaWxkcmVu IG9mIGNvbnRhaW5lcnMsIG9yIGZvciB0aGUgbGlzdCBvZiBzZWxlY3RlZCB3aWRnZXRzCi0tICBp biBhIEd0a19DbGlzdCBmb3IgaW5zdGFuY2UpLCBsaXN0IG9mIHN0cmluZ3MgKGZvciBHdGtfQ29t Ym9fQm94KSwuLi4KLS0KLS0gIFRoZXkgcHJvdmlkZSBhIGNvbW1vbiBpbnRlcmZhY2UgdG8gdHJh dmVyc2UgdGhlc2UgbGlzdHMuCi0tCi0tICBPbmUgdXNlZnVsIG5vdGU6IHlvdSBzaG91bGQgb25s eSBGcmVlIHRoZSBsaXN0cyB0aGF0IHlvdSBoYXZlIGFsbG9jYXRlZAotLSAgeW91cnNlbGYsIGFu ZCBub3QgdGhlIGxpc3RzIHRoYXQgYXJlIHJldHVybmVkIGJ5IHRoZSBzdWJwcm9ncmFtcyBpbgot LSAgR3RrQWRhIGFuZCBzaG91bGQgYmUgbGVmdCB1bmRlciBHdGtBZGEncyBjb250cm9sLgotLQot LSAgU2VlIHRoZSBleGFtcGxlIGJlbG93IGZvciBhbiBleGFtcGxlIG9uIGhvdyB0byB0cmF2ZXJz ZSBhIGxpc3QuCi0tCi0tICBJbnN0YW50aWF0aW5nIHRoZSBwYWNrYWdlIEdlbmVyaWNfTGlzdCBy ZXF1aXJlcyB0d28gZnVuY3Rpb25zIHRvIGNvbnZlcnQKLS0gIGJhY2sgYW5kIGZvcnRoIGJldHdl ZW4geW91ciBkYXRhIHR5cGUgYW5kIGEgU3lzdGVtLkFkZHJlc3Mgd2hpY2ggaXMgdGhlCi0tICB0 eXBlIHN0b3JlZCBhdCB0aGUgQyBsZXZlbC4KLS0gIE5vdGUgdGhhdCB0aGUgbGlzdHMgdXNlZCBp biBHdGtBZGEgYWxyZWFkeSBoYXZlIGFzc29jaWF0ZWQgcGFja2FnZXMsIGxpa2UKLS0gIEd0ay5F bnVtcy5HaW50X0xpc3QsIEd0ay5FbnVtcy5TdHJpbmdfTGlzdCBvciBHdGsuV2lkZ2V0LldpZGdl dF9MaXN0LgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3N5bmNocm8+MS4yLjY8L2Nfc3lu Y2hybz4KCndpdGggU3lzdGVtOwoKcGFja2FnZSBHbGliLkdsaXN0IGlzCgoKICAgZ2VuZXJpYwog ICAgICAtLSAgPGRvY19pZ25vcmU+CgogICAgICB0eXBlIEdwb2ludGVyICg8PikgaXMgcHJpdmF0 ZTsKICAgICAgd2l0aCBmdW5jdGlvbiBDb252ZXJ0IChQIDogR3BvaW50ZXIpIHJldHVybiBTeXN0 ZW0uQWRkcmVzcyBpcyA8PjsKICAgICAgd2l0aCBmdW5jdGlvbiBDb252ZXJ0IChTIDogU3lzdGVt LkFkZHJlc3MpIHJldHVybiBHcG9pbnRlciBpcyA8PjsKCiAgICAgIC0tICA8L2RvY19pZ25vcmU+ CgogICBwYWNrYWdlIEdlbmVyaWNfTGlzdCBpcwoKICAgICAgdHlwZSBHbGlzdCBpcyBwcml2YXRl OwogICAgICAtLSAgVGhpcyB0eXBlIGlzIGJvdGggYSBsaXN0IGFuZCBhbiBpdGVtIGluIHRoZSBs aXN0LgogICAgICAtLSAgRWFjaCBpdGVtIHBvaW50cyB0byBpdHMgc3VjY2Vzc29yLgoKICAgICAg TnVsbF9MaXN0IDogY29uc3RhbnQgR2xpc3Q7CgogICAgICBwcm9jZWR1cmUgQWxsb2MgKExpc3Qg OiBvdXQgR2xpc3QpOwogICAgICAtLSAgQWxsb2NhdGUgYSBuZXcgaXRlbSBpbiB0aGUgbGlzdC4K ICAgICAgLS0gIFRoaXMgaXRlbSBpc24ndCBhc3NvY2lhdGVkIHdpdGggYW55IGRhdGEuCiAgICAg IC0tICBZb3UgcHJvYmFibHkgZG9uJ3QgaGF2ZSB0byB1c2UgdGhpcyBzdWJwcm9ncmFtLCBzaW5j ZSBBcHBlbmQsCiAgICAgIC0tICBJbnNlcnQsIFByZXBlbmQsIGV0Yy4gYWxyZWFkeSBoYW5kbGUg dGhlIGFsbG9jYXRpb24gZm9yIHlvdSBhbmQKICAgICAgLS0gIGdpdmUgYSBuZXcgdmFsdWUgdG8g dGhlIGl0ZW0uCgogICAgICBwcm9jZWR1cmUgQXBwZW5kIChMaXN0IDogaW4gb3V0IEdsaXN0Owog ICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpOwogICAgICAtLSAgQWRk IGEgbmV3IGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgYW5kIHN0b3JlcyB0aGUgbmV3IGxp c3QKICAgICAgLS0gIGRpcmVjdGx5IGJhY2sgaW4gTGlzdC4KICAgICAgLS0gIFRoZSBjb21wbGV4 aXR5IG9mIHRoaXMgb3BlcmF0aW9uIGlzIE8obikKCiAgICAgIGZ1bmN0aW9uIENvbmNhdCAoTGlz dDEgOiBpbiBHbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICBMaXN0MiA6IGluIEdsaXN0KQog ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdsaXN0OwogICAgICAtLSAgQ29uY2F0ZW5hdGUg dHdvIGxpc3RzLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCiAgICAgIC0tICBMaXN0MiBpcyBhZGRl ZCBhdCB0aGUgZW5kIG9mIExpc3QxLgogICAgICAtLSAgVGhlIGNvbXBsZXhpdHkgaXMgTyhuMSkg KGRlcGVuZHMgb24gdGhlIHNpemUgb2YgTGlzdDEpLgoKICAgICAgcHJvY2VkdXJlIEluc2VydCAo TGlzdCA6IGluIG91dCBHbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIEdw b2ludGVyOwogICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiA6IGluIEdpbnQpOwogICAg ICAtLSAgSW5zZXJ0IGFuIGl0ZW0gaW4gdGhlIG1pZGRsZSBvZiBhIGxpc3QuCiAgICAgIC0tICBJ ZiBQb3NpdGlvbiBpcyAwLCB0aGUgaXRlbSBpcyBhZGRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo ZSBsaXN0LCBpZgogICAgICAtLSAgaXQgaXMgbmVnYXRpdmUgdGhlIGl0ZW0gaXMgYWRkZWQgYXQg dGhlIGVuZC4KICAgICAgLS0gIFRoZSBjb21wbGV4aXR5IGlzIE8oUG9zaXRpb24pLgoKICAgICAg ZnVuY3Rpb24gRmluZCAoTGlzdCA6IGluIEdsaXN0OwogICAgICAgICAgICAgICAgICAgICBEYXRh IDogaW4gR3BvaW50ZXIpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdsaXN0OwogICAgICAt LSAgRmluZCBhIHZhbHVlIGluIHRoZSBsaXN0LCBhbmQgcmV0dXJuIHRoZSBmaXJzdCBpdGVtIHRo YXQgY29udGFpbnMgaXQuCiAgICAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIG5v dCB3b3JrIGlmIHRoZSBmdW5jdGlvbiBDb252ZXJ0IGRvZXMKICAgICAgLS0gIG5vdCByZXR1cm4g dGhlIHNhbWUgdmFsdWUgZm9yIHR3byBpZGVudGljYWwgdmFsdWVzLgoKICAgICAgZnVuY3Rpb24g Rmlyc3QgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEdsaXN0OwogICAgICAtLSAgUmV0dXJuIHRo ZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LgogICAgICAtLSAgTm90ZSB0aGF0IGlmIExpc3QgaXMg aW4gZmFjdCBhbiBpdGVtIG9mIGEgbGFyZ2VyIGxpc3QsIHRoZSByZXR1cm4KICAgICAgLS0gIHZh bHVlIGlzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsYXJnZXIgbGlzdCBpdHNlbGYuCgogICAgICBw cm9jZWR1cmUgRnJlZSAoTGlzdCA6IGluIG91dCBHbGlzdCk7CiAgICAgIC0tICBGcmVlIHRoZSBs aXN0IChidXQgZG9lcyBub3QgZnJlZSB0aGUgZGF0YSBpbiBlYWNoIG9mIGl0cyBlbGVtZW50cyku CiAgICAgIC0tICBUaGlzIG9ubHkgZnJlZXMgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhl IGxpc3QgaXRzZWxmLgogICAgICAtLSAgWW91IHNob3VsZCBvbmx5IHVzZSB0aGlzIGZ1bmN0aW9u IG9uIHRoZSBsaXN0cyB0aGF0CiAgICAgIC0tICB5b3UgaGF2ZSBjcmVhdGVkIHlvdXJzZWxmLCBu b3Qgb24gdGhlIGxpc3QgdGhhdCBhcmUgcmV0dXJuZWQgYnkgc29tZQogICAgICAtLSAgZnVuY3Rp b25zIGluIEd0a0FkYSAobGlrZSBHdGsuQ2xpc3QuR2V0X1NlbGVjdGlvbikuIFRoZXNlIGZ1bmN0 aW9ucwogICAgICAtLSAgcmV0dXJuIGRpcmVjdGx5IHRoZSBsaXN0IG1hbmFnZWQgYnkgdGhlIHVu ZGVybHlpbmcgQyB3aWRnZXQsIGFuZCB5b3UKICAgICAgLS0gIHNob3VsZCBuZXZlciBmcmVlIHRo ZSByZXN1bHQgeW91cnNlbGYuCiAgICAgIC0tCiAgICAgIC0tICBOb3RlIGFsc28gdGhhdCB0aGUg bWVtb3J5IG1pZ2h0IG5vdCBiZSBhY3R1YWxseSBmcmVlZC4gRm9yIGVmZmljaWVuY3kKICAgICAg LS0gIHJlYXNvbnMsIEd0a0FkYSB3aWxsIGtlZXAgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYW5kIHRy eSB0byByZXVzZSBpdCBhcwogICAgICAtLSAgbXVjaCBhcyBwb3NzaWJsZS4KCiAgICAgIGZ1bmN0 aW9uIEdldF9EYXRhIChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHcG9pbnRlcjsKICAgICAgLS0g IFJldHVybiB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSBMaXN0LgogICAgICAtLSAgVGhlIFN5c3Rl bS5BZGRyZXNzIGNvbnRhaW5lciBpbiB0aGUgQyBsaXN0IGlzIGNvbnZlcnRlZCB0byBhIEdwb2lu dGVyCiAgICAgIC0tICB0aHJvdWdoIGEgY2FsbCB0byBDb252ZXJ0LgoKICAgICAgZnVuY3Rpb24g R2V0X0RhdGFfQWRkcmVzcyAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gU3lzdGVtLkFkZHJlc3M7 CiAgICAgIC0tICBSZXR1cm4gZGlyZWN0bHkgdGhlIFN5c3RlbS5BZGRyZXNzIGNvbnRhaW5lZCBp biB0aGUgQyBsaXN0LgogICAgICAtLSAgVGhpcyBpcyB1c2VkIG1haW5seSBpbnRlcm5hbGx5IGlu IEd0a0FkYSB0byBpbXBsZW1lbnQgU3RyaW5nIGxpc3RzLAogICAgICAtLSAgYW5kIHlvdSBzaG91 bGQgbm90IGhhdmUgdG8gdXNlIHRoaXMgc3VicHJvZ3JhbSB5b3Vyc2VsZi4KCiAgICAgIC0tICA8 ZG9jX2lnbm9yZT4KICAgICAgZnVuY3Rpb24gR2V0X0dwb2ludGVyIChMaXN0IDogaW4gR2xpc3Qp IHJldHVybiBHcG9pbnRlcjsKICAgICAgLS0gIFNvbWV0aW1lcywgdGhlIGRhdGEgaXMgbm90IHN0 b3JlZCBpbiB0aGUgImRhdGEiIGZpZWxkCiAgICAgIC0tICBvZiBlYWNoIGNlbGwsIGJ1dCByYXRo ZXIgYXQgZWFjaCBjZWxsLiBJbiBzdWNoIGNhc2VzLAogICAgICAtLSAgdG8gcmV0cmlldmUgdGhl IGFkZHJlc3Mgb2YgdGhlIGRhdGEsIHdlIG5lZWQgdG8gcmV0dXJuCiAgICAgIC0tICB0aGUgYWRk cmVzcyBvZiB0aGUgY2VsbCBpdHNlbGYsIGluc3RlZCBvZiB0aGUgYWRkcmVzcwogICAgICAtLSAg cG9pbnRlZCB0byBieSBkYXRhLgogICAgICAtLQogICAgICAtLSAgRXg6IHRoZSBHdGtDVHJlZSBy b3dfbGlzdC4KICAgICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgICAgIGZ1bmN0aW9uIEluZGV4IChM aXN0IDogaW4gR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIp CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAgICAtLSAgUmV0dXJuIHRoZSBp bmRleCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiBMSVNUIHRoYXQgY29udGFpbnMgRGF0YS4KICAg ICAgLS0gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGlycmVsZXZhbnQgaWYgQ29udmVydCBk b2VzIG5vdCByZXR1cm4gdGhlCiAgICAgIC0tICBzYW1lIHZhbHVlIGZvciB0d28gaWRlbnRpY2Fs IGRhdGEuCgogICAgICBmdW5jdGlvbiBMYXN0IChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHbGlz dDsKICAgICAgLS0gIFJldHVybiB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBsaXN0LgoKICAgICAg ZnVuY3Rpb24gTGVuZ3RoIChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHdWludDsKICAgICAgLS0g IFJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBsaXN0LgogICAgICAtLSAgVGhl IGxhc3QgaXRlbSdzIGluZGV4IGlzIExlbmd0aCAtIDEuCgogICAgICBwcm9jZWR1cmUgTGlzdF9S ZXZlcnNlIChMaXN0IDogaW4gb3V0IEdsaXN0KTsKICAgICAgLS0gIFJldmVyc2UgdGhlIG9yZGVy IG9mIHRoZSBsaXN0ICh0aGUgbGFzdCBpdGVtIGJlY29tZXMgdGhlIGZpcnN0LCBldGMuKQoKICAg ICAgZnVuY3Rpb24gTmV4dCAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gR2xpc3Q7CiAgICAgIC0t ICBSZXR1cm5zIHRoZSBJdGVtIGZvbGxvd2luZyBMSVNUIGluIHRoZSBnbG9iYWwgbGlzdCB0aGF0 IGNvbnRhaW5zCiAgICAgIC0tICBib3RoLgogICAgICAtLSAgSWYgdGhlcmUgaXMgbm8gc3VjaCBp dGVtLCByZXR1cm4gTnVsbF9MaXN0LiBUaGlzIGlzIGhvdyB5b3UKICAgICAgLS0gIHN0b3AgaXRl cmF0aW5nIG92ZXIgYSBsaXN0LgoKICAgICAgZnVuY3Rpb24gTnRoIChMaXN0IDogaW4gR2xpc3Q7 CiAgICAgICAgICAgICAgICAgICAgTiAgICA6IGluIEd1aW50KQogICAgICAgICAgICAgICAgICAg cmV0dXJuIEdsaXN0OwogICAgICAtLSAgR2l2ZSB0aGUgbnRoIGl0ZW0gZm9sbG93aW5nIExJU1Qg aW4gdGhlIGdsb2JhbCBsaXN0IHRoYXQKICAgICAgLS0gIGNvbnRhaW5zIGJvdGguCiAgICAgIC0t ICBJZiB0aGVyZSBpcyBubyBzdWNoIGl0ZW0sIHJldHVybiBOdWxsX0xpc3QuCgogICAgICBmdW5j dGlvbiBOdGhfRGF0YSAoTGlzdCA6IGluIEdsaXN0OwogICAgICAgICAgICAgICAgICAgICAgICAg TiA6IGluIEd1aW50KQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR3BvaW50ZXI7CiAg ICAgIC0tICBSZXR1cm4gdGhlIERhdGEgY29udGFpbmVkIGluIHRoZSBOLXRoIGl0ZW0gb2YgTGlz dC4KICAgICAgLS0gIFRoZSByZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIHN1Y2gg aXRlbSBpbiB0aGUgbGlzdC4KICAgICAgLS0gIFRoZSBhY3R1YWwgcmVzdWx0IGluIHRoYXQgY2Fz ZSBpcyB0aGUgcmVzdWx0IG9mCiAgICAgIC0tICAgICAgQ29udmVydCAoU3lzdGVtLk51bGxfQWRk cmVzcyk7CiAgICAgIC0tICB3aGljaCBtaWdodCBub3QgbWVhbiBhbnl0aGluZy4KCiAgICAgIGZ1 bmN0aW9uIFBvc2l0aW9uIChMaXN0IDogaW4gR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAg ICBMaW5rIDogaW4gR2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50Owog ICAgICAtLSAgUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiBMaW5rIGluIHRoZSBMaXN0LgogICAgICAt LSAgSWYgTGluayBpcyBub3QgY29udGFpbmVkIGluIHRoZSBsaXN0LCAtMSBpcyByZXR1cm5lZC4K CiAgICAgIHByb2NlZHVyZSBQcmVwZW5kIChMaXN0IDogaW4gb3V0IEdsaXN0OwogICAgICAgICAg ICAgICAgICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyKTsKICAgICAgLS0gIEFkZCBhbiBpdGVt IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QuCiAgICAgIC0tICBUaGlzIG9wZXJhdGlvbiBh bHdheXMgc3VjY2VlZC4KCiAgICAgIGZ1bmN0aW9uIFByZXYgKExpc3QgOiBpbiBHbGlzdCkgcmV0 dXJuIEdsaXN0OwogICAgICAtLSAgUmV0dXJuIHRoZSBpdGVtIGJlZm9yZSBMaXN0IGluIHRoZSBn bG9iYWwgbGlzdCB0aGF0IGNvbnRhaW5zIGJvdGguCiAgICAgIC0tICBSZXR1cm4gTnVsbF9MaXN0 IGlmIHRoZXJlIGlzIG5vIHN1Y2ggaXRlbS4KCiAgICAgIHByb2NlZHVyZSBSZW1vdmUgKExpc3Qg OiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRl cik7CiAgICAgIC0tICBSZW1vdmUgdGhlIGZpcnN0IGl0ZW0gaW4gTGlzdCB0aGF0IGNvbnRhaW5z IERhdGEuCiAgICAgIC0tICBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gY2FuIHN1Y2NlZWQgb25s eSBpZiBDb252ZXJ0IGFsd2F5cyByZXR1cm4KICAgICAgLS0gIHRoZSBzYW1lIGFkZHJlc3MgZm9y IGEgZ2l2ZW4gdmFsdWUuCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlX0xpbmsgKExpc3QgOiBpbiBv dXQgR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayA6IGluIEdsaXN0KTsK ICAgICAgLS0gIFJlbW92ZSBMaW5rIGZyb20gdGhlIGxpc3QgdG8gd2hpY2ggaXQgYmVsb25ncy4K ICAgICAgLS0gIElmIHRoYXQgbGlzdCBpcyBub3QgTGlzdCwgbm8gZXJyb3IgaXMgcmV0dXJuZWQs IGJ1dCBMaW5rIGlzIHJlbW92ZWQKICAgICAgLS0gIGFueXdheS4KCiAgICAgIGZ1bmN0aW9uIElz X0NyZWF0ZWQgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEJvb2xlYW47CiAgICAgIC0tICBSZXR1 cm4gVHJ1ZSBpZiB0aGVyZSBpcyBhIEMgd2lkZ2V0IGFzc29jaWF0ZWQgd2l0aCBMaXN0LgoKICAg ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIEludGVybmFsIGZ1bmN0aW9ucyAt LQogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gIFBsZWFzZSBkbyBub3Qg dXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLiBUaGV5IGFyZSB1c2VkIGludGVybmFsbHkKICAg ICAgLS0gIGJ5IEd0a0FkYS4KICAgICAgLS0gIDxkb2NfaWdub3JlPgoKICAgICAgZnVuY3Rpb24g R2V0X09iamVjdCAoT2JqIDogaW4gR2xpc3QpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAg LS0gIFJldHVybnMgdGhlIEMgb2JqZWN0IGNvbnRhaW5lZCBpbiBPQkouCiAgICAgIHByYWdtYSBJ bmxpbmUgKEdldF9PYmplY3QpOwoKICAgICAgcHJvY2VkdXJlIFNldF9PYmplY3QgKE9iaiA6IGlu IG91dCBHbGlzdDsgVmFsdWUgIDogaW4gU3lzdGVtLkFkZHJlc3MpOwogICAgICAtLSAgTW9kaWZp ZXMgdGhlIEMgb2JqZWN0IGNvbnRhaW5lZCBpbiBPQkouCiAgICAgIHByYWdtYSBJbmxpbmUgKFNl dF9PYmplY3QpOwoKICAgICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIHByaXZhdGUKCiAgICAgIHR5 cGUgR2xpc3QgaXMKICAgICAgICAgcmVjb3JkCiAgICAgICAgICAgIFB0ciA6IFN5c3RlbS5BZGRy ZXNzIDo9IFN5c3RlbS5OdWxsX0FkZHJlc3M7CiAgICAgICAgIGVuZCByZWNvcmQ7CiAgICAgIE51 bGxfTGlzdCA6IGNvbnN0YW50IEdsaXN0IDo9IChQdHIgPT4gU3lzdGVtLk51bGxfQWRkcmVzcyk7 CiAgIGVuZCBHZW5lcmljX0xpc3Q7CgplbmQgR2xpYi5HbGlzdDsKCi0tICA8ZXhhbXBsZT4KLS0g IDxpbmNsdWRlPi4uL2V4YW1wbGVzL2RvY3VtZW50YXRpb24vZ2xpc3RfdHJhdmVyc2UuYWRiPC9p bmNsdWRlPgotLSAgPC9leGFtcGxlPgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAABnbmF0YnVnL2dkay10eXBlcy5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDEwMDY0NAAwMDAxNzUxADAwMDAwMDAAMDAwMDAwNjM1MjUAMDc1NTExMDc2MzIAMDEzNzU2ACAw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc3BhegAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJp bmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIg YW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAg IC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcg d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0t IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lh bCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0t Ci0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8g cHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBp dHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJl ZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlv biBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAg IC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJs aWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp3aXRoIEdsaWI7IHVzZSBHbGliOwoK cGFja2FnZSBHZGsuVHlwZXMgaXMKCiAgIHR5cGUgR2RrX0dlb21ldHJ5IGlzIHJlY29yZAogICAg ICBNaW5fV2lkdGggICA6IEdpbnQ7CiAgICAgIE1pbl9IZWlnaHQgIDogR2ludDsKICAgICAgTWF4 X1dpZHRoICAgOiBHaW50OwogICAgICBNYXhfSGVpZ2h0ICA6IEdpbnQ7CiAgICAgIEJhc2VfV2lk dGggIDogR2ludDsKICAgICAgQmFzZV9IZWlnaHQgOiBHaW50OwogICAgICBXaWR0aF9JbmMgICA6 IEdpbnQ7CiAgICAgIEhlaWdodF9JbmMgIDogR2ludDsKICAgICAgTWluX0FzcGVjdCAgOiBHZG91 YmxlOwogICAgICBNYXhfQXNwZWN0ICA6IEdkb3VibGU7CiAgIGVuZCByZWNvcmQ7CiAgIHByYWdt YSBQYWNrIChHZGtfR2VvbWV0cnkpOwoKICAgdHlwZSBHZGtfUG9pbnQgaXMgcmVjb3JkCiAgICAg IFggOiBHaW50MTY7CiAgICAgIFkgOiBHaW50MTY7CiAgIGVuZCByZWNvcmQ7CiAgIHByYWdtYSBQ YWNrIChHZGtfUG9pbnQpOwogICBmb3IgR2RrX1BvaW50J1NpemUgdXNlIEdpbnQnU2l6ZTsKCiAg IHR5cGUgR2RrX1BvaW50c19BcnJheSBpcyBhcnJheSAoUG9zaXRpdmUgcmFuZ2UgPD4pIG9mIEdk a19Qb2ludDsKICAgcHJhZ21hIFBhY2sgKEdka19Qb2ludHNfQXJyYXkpOwoKICAgdHlwZSBHZGtf U2VnbWVudCBpcyByZWNvcmQKICAgICAgWDEgOiBHaW50MTY7CiAgICAgIFkxIDogR2ludDE2Owog ICAgICBYMiA6IEdpbnQxNjsKICAgICAgWTIgOiBHaW50MTY7CiAgIGVuZCByZWNvcmQ7CiAgIHBy YWdtYSBQYWNrIChHZGtfU2VnbWVudCk7CiAgIGZvciBHZGtfU2VnbWVudCdTaXplIHVzZSA2NDsK CiAgIHR5cGUgR2RrX1NlZ21lbnRzX0FycmF5IGlzIGFycmF5IChQb3NpdGl2ZSByYW5nZSA8Pikg b2YgR2RrX1NlZ21lbnQ7CiAgIHByYWdtYSBQYWNrIChHZGtfU2VnbWVudHNfQXJyYXkpOwoKICAg LS0KICAgLS0gIFNlZSBhdCB0aGUgZW5kIG9mIHRoZSBwYWNrYWdlIGEgbGlzdCBvZiBhbGwgdGhl IHR5cGVzIHRoYXQKICAgLS0gIGhhdmUgbm90IGJlZW4gImJvdW5kIi4KICAgLS0KCiAgIHR5cGUg R2RrX0F0b20gaXMgbmV3IEd1bG9uZzsKICAgLS0gIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgcHJv cGVydHkgb2YgdGhlIFgtc2VydmVyLCB0aGF0IGNhbiBiZQogICAtLSAgbWFuaXB1bGF0ZWQgdGhy b3VnaCBmdW5jdGlvbnMgaW4gR2RrLlByb3BlcnR5LiBUaGV5IGhhdmUgYW4gYXNzb2NpYXRlZAog ICAtLSAgbmFtZSwgdGhhdCBjYW4gYmUgcHJpbnRlZCwgYXMgd2VsbCBhcyBhIHZhbHVlIHdob3Nl IHR5cGUgbWF5IHZhcnkuCgogICB0eXBlIEdka19BeGlzX1VzZSBpcwogICAgIChBeGlzX0lnbm9y ZSwKICAgICAgQXhpc19YLAogICAgICBBeGlzX1ksCiAgICAgIEF4aXNfUHJlc3N1cmUsCiAgICAg IEF4aXNfWF9UaWx0LAogICAgICBBeGlzX1lfVGlsdCwKICAgICAgQXhpc19MYXN0KTsKCiAgIHR5 cGUgR2RrX0J5dGVfT3JkZXIgaXMgKExzYl9GaXJzdCwgTXNiX0ZpcnN0KTsKCiAgIHR5cGUgR2Rr X0NhcF9TdHlsZSBpcyAoQ2FwX05vdF9MYXN0LCBDYXBfQnV0dCwgQ2FwX1JvdW5kLCBDYXBfUHJv amVjdGluZyk7CgogICB0eXBlIEdka19Dcm9zc2luZ19Nb2RlIGlzIChDcm9zc2luZ19Ob3JtYWws IENyb3NzaW5nX0dyYWIsIENyb3NzaW5nX1VuZ3JhYik7CgogICB0eXBlIEdka19DdXJzb3JfVHlw ZSBpcwogICAgIChYX0N1cnNvciwKICAgICAgQXJyb3csCiAgICAgIEJhc2VkX0Fycm93X0Rvd24s CiAgICAgIEJhc2VkX0Fycm93X1VwLAogICAgICBCb2F0LAogICAgICBCb2dvc2l0eSwKICAgICAg Qm90dG9tX0xlZnRfQ29ybmVyLAogICAgICBCb3R0b21fUmlnaHRfQ29ybmVyLAogICAgICBCb3R0 b21fU2lkZSwKICAgICAgQm90dG9tX1RlZSwKICAgICAgQm94X1NwaXJhbCwKICAgICAgQ2VudGVy X1B0ciwKICAgICAgQ2lyY2xlLAogICAgICBDbG9jaywKICAgICAgQ29mZmVlX011ZywKICAgICAg Q3Jvc3MsCiAgICAgIENyb3NzX1JldmVyc2UsCiAgICAgIENyb3NzaGFpciwKICAgICAgRGlhbW9u ZF9Dcm9zcywKICAgICAgRG90LAogICAgICBEb3Rib3gsCiAgICAgIERvdWJsZV9BcnJvdywKICAg ICAgRHJhZnRfTGFyZ2UsCiAgICAgIERyYWZ0X1NtYWxsLAogICAgICBEcmFwZWRfQm94LAogICAg ICBFeGNoYW5nZSwKICAgICAgRmxldXIsCiAgICAgIEdvYmJsZXIsCiAgICAgIEd1bWJ5LAogICAg ICBIYW5kMSwKICAgICAgSGFuZDIsCiAgICAgIEhlYXJ0LAogICAgICBJY29uLAogICAgICBJcm9u X0Nyb3NzLAogICAgICBMZWZ0X1B0ciwKICAgICAgTGVmdF9TaWRlLAogICAgICBMZWZ0X1RlZSwK ICAgICAgTGVmdGJ1dHRvbiwKICAgICAgTGxfQW5nbGUsCiAgICAgIExyX0FuZ2xlLAogICAgICBN YW4sCiAgICAgIE1pZGRsZWJ1dHRvbiwKICAgICAgTW91c2UsCiAgICAgIFBlbmNpbCwKICAgICAg UGlyYXRlLAogICAgICBQbHVzLAogICAgICBRdWVzdGlvbl9BcnJvdywKICAgICAgUmlnaHRfUHRy LAogICAgICBSaWdodF9TaWRlLAogICAgICBSaWdodF9UZWUsCiAgICAgIFJpZ2h0YnV0dG9uLAog ICAgICBSdGxfTG9nbywKICAgICAgU2FpbGJvYXQsCiAgICAgIFNiX0Rvd25fQXJyb3csCiAgICAg IFNiX0hfRG91YmxlX0Fycm93LAogICAgICBTYl9MZWZ0X0Fycm93LAogICAgICBTYl9SaWdodF9B cnJvdywKICAgICAgU2JfVXBfQXJyb3csCiAgICAgIFNiX1ZfRG91YmxlX0Fycm93LAogICAgICBT aHV0dGxlLAogICAgICBTaXppbmcsCiAgICAgIFNwaWRlciwKICAgICAgU3ByYXljYW4sCiAgICAg IFN0YXIsCiAgICAgIFRhcmdldCwKICAgICAgVGNyb3NzLAogICAgICBUb3BfTGVmdF9BcnJvdywK ICAgICAgVG9wX0xlZnRfQ29ybmVyLAogICAgICBUb3BfUmlnaHRfQ29ybmVyLAogICAgICBUb3Bf U2lkZSwKICAgICAgVG9wX1RlZSwKICAgICAgVHJlaywKICAgICAgVWxfQW5nbGUsCiAgICAgIFVt YnJlbGxhLAogICAgICBVcl9BbmdsZSwKICAgICAgV2F0Y2gsCiAgICAgIFh0ZXJtKTsKCiAgIHR5 cGUgR2RrX0RldmljZV9JZCBpcyBuZXcgR3VpbnQzMjsKICAgLS0gIFRoaXMgdHlwZSBpcyBzcGVj aWZpYyB0byBHdGtBZGEuIEluIEdkaywgZ3VpbnQzMiBpcyB1c2VkIGluc3RlYWQuCgogICB0eXBl IEdka19FdmVudF9NYXNrIGlzIG1vZCAyICoqIDIxOwogICAtLSAgTm90ZSB0aGF0IHlvdSBuZWVk IHRvIGNoYW5nZSB0aGUgZXZlbnQgbWFzayBvZiBhIHdpZGdldCBpZiB5b3Ugd2FudAogICAtLSAg dG8gYmUgYWJsZSB0byBnZXQgc29tZSBldmVudHMuIFRvIGNoYW5nZSB0aGlzIG1hc2ssIHRoZSB3 aWRnZXQKICAgLS0gIG11c3QgZmlyc3QgYmUgVW5yZWFsaXplZC4KCiAgIE51bGxfRXZlbnRfTWFz ayAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICBFeHBvc3VyZV9NYXNrICAg ICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKCiAgIFBvaW50ZXJfTW90aW9uX01h c2sgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICAtLSAgRXZlcnkgdGltZSB0aGUg bW91c2UgbW92ZXMsIEd0a0FkYSB3aWxsIHNlbmQgYSBNb3Rpb25fTm90aWZ5IGV2ZW50LgogICAt LSAgVGhlc2UgZXZlbnRzIHdpbGwgYmUgc2VudCBhcyBmYXN0IGFzIHBvc3NpYmxlLCBhbmQgeW91 ciBhcHBsaWNhdGlvbgogICAtLSAgbmVlZHMgdG8gYmUgYWJsZSB0byByZXNwb25kIGFzIGZhc3Qg YXMgcG9zc2libGUgKGdlbmVyYWxseSBhYm91dAogICAtLSAgMjAwIGV2ZW50cyBwZXIgc2Vjb25k KS4KCiAgIFBvaW50ZXJfTW90aW9uX0hpbnRfTWFzayA6IGNvbnN0YW50IEdka19FdmVudF9NYXNr OwogICAtLSAgR3RrQWRhIHdpbGwgb25seSBzZW5kIG9uZSBNb3Rpb25fTm90aWZ5IGV2ZW50IHdo ZW4gdGhlIG1vdXNlIG1vdmVzLgogICAtLSAgVGhlIGhhbmRsZXIgc2hvdWxkIGNhbGwgR2RrLldp bmRvdy5HZXRfUG9pbnRlciwgdG8gZ2V0IHRoZSBjdXJyZW50CiAgIC0tICBwb3NpdGlvbiBhbmQg c2lnbmFscyBHdGtBZGEgdGhhdCBpdCBpcyByZWFkeSB0byBnZXQgYW5vdGhlcgogICAtLSAgTW90 aW9uX05vdGlmeSBzaWduYWwuIE5vIG5ldyBNb3Rpb25fTm90aWZ5IHdpbGwgYmUgc2VudCB1bnRp bAogICAtLSAgR2V0X1BvaW50ZXIgaGFzIGJlZW4gY2FsbGVkLgoKICAgQnV0dG9uX01vdGlvbl9N YXNrICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CiAgIEJ1dHRvbjFfTW90aW9uX01h c2sgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICBCdXR0b24yX01vdGlvbl9NYXNr ICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKICAgQnV0dG9uM19Nb3Rpb25fTWFzayAg ICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CiAgIEJ1dHRvbl9QcmVzc19NYXNrICAgICAg ICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICBCdXR0b25fUmVsZWFzZV9NYXNrICAgICAg OiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKICAgS2V5X1ByZXNzX01hc2sgICAgICAgICAgIDog Y29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CiAgIEtleV9SZWxlYXNlX01hc2sgICAgICAgICA6IGNv bnN0YW50IEdka19FdmVudF9NYXNrOwogICBFbnRlcl9Ob3RpZnlfTWFzayAgICAgICAgOiBjb25z dGFudCBHZGtfRXZlbnRfTWFzazsKICAgTGVhdmVfTm90aWZ5X01hc2sgICAgICAgIDogY29uc3Rh bnQgR2RrX0V2ZW50X01hc2s7CiAgIEZvY3VzX0NoYW5nZV9NYXNrICAgICAgICA6IGNvbnN0YW50 IEdka19FdmVudF9NYXNrOwogICBTdHJ1Y3R1cmVfTWFzayAgICAgICAgICAgOiBjb25zdGFudCBH ZGtfRXZlbnRfTWFzazsKICAgUHJvcGVydHlfQ2hhbmdlX01hc2sgICAgIDogY29uc3RhbnQgR2Rr X0V2ZW50X01hc2s7CiAgIFZpc2liaWxpdHlfTm90aWZ5X01hc2sgICA6IGNvbnN0YW50IEdka19F dmVudF9NYXNrOwogICBQcm94aW1pdHlfSW5fTWFzayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZl bnRfTWFzazsKICAgUHJveGltaXR5X091dF9NYXNrICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50 X01hc2s7CiAgIEFsbF9FdmVudHNfTWFzayAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9N YXNrOwoKICAgdHlwZSBHZGtfRXZlbnRfVHlwZSBpcwogICAgIChOb3RoaW5nLAogICAgICBEZWxl dGUsCiAgICAgIERlc3Ryb3ksCiAgICAgIEV4cG9zZSwKICAgICAgTW90aW9uX05vdGlmeSwKICAg ICAgQnV0dG9uX1ByZXNzLAogICAgICBHZGtfMmJ1dHRvbl9QcmVzcywgIC0tICBEb3VibGUtY2xp Y2sKICAgICAgR2RrXzNidXR0b25fUHJlc3MsICAtLSAgVHJpcGxlLWNsaWNrCiAgICAgIEJ1dHRv bl9SZWxlYXNlLAogICAgICBLZXlfUHJlc3MsCiAgICAgIEtleV9SZWxlYXNlLAogICAgICBFbnRl cl9Ob3RpZnksCiAgICAgIExlYXZlX05vdGlmeSwKICAgICAgRm9jdXNfQ2hhbmdlLAogICAgICBD b25maWd1cmUsCiAgICAgIE1hcCwKICAgICAgVW5tYXAsCiAgICAgIFByb3BlcnR5X05vdGlmeSwK ICAgICAgU2VsZWN0aW9uX0NsZWFyLAogICAgICBTZWxlY3Rpb25fUmVxdWVzdCwKICAgICAgU2Vs ZWN0aW9uX05vdGlmeSwKICAgICAgUHJveGltaXR5X0luLAogICAgICBQcm94aW1pdHlfT3V0LAog ICAgICBEcmFnX0VudGVyLAogICAgICBEcmFnX0xlYXZlLAogICAgICBEcmFnX01vdGlvbiwKICAg ICAgRHJhZ19TdGF0dXMsCiAgICAgIERyb3BfU3RhcnQsCiAgICAgIERyb3BfRmluaXNoZWQsCiAg ICAgIENsaWVudF9FdmVudCwKICAgICAgVmlzaWJpbGl0eV9Ob3RpZnksCiAgICAgIE5vX0V4cG9z ZSk7CgogICB0eXBlIEdka19FeHRlbnNpb25fTW9kZSBpcwogICAgIChFeHRlbnNpb25fRXZlbnRz X05vbmUsIEV4dGVuc2lvbl9FdmVudHNfQWxsLCBFeHRlbnNpb25fRXZlbnRzX0N1cnNvcik7Cgog ICB0eXBlIEdka19GaWxsIGlzIChTb2xpZCwgVGlsZWQsIFN0aXBwbGVkLCBPcGFxdWVfU3RpcHBs ZWQpOwoKICAgdHlwZSBHZGtfRmlsbF9SdWxlIGlzIChFdmVuX09kZF9SdWxlLCBXaW5kaW5nX1J1 bGUpOwoKICAgdHlwZSBHZGtfRnVuY3Rpb24gaXMKICAgICAoQ29weSwKICAgICAgSW52ZXJ0LAog ICAgICBHZGtfWG9yLAogICAgICBDbGVhciwKICAgICAgR2RrX0FuZCwKICAgICAgQW5kX1JldmVy c2UsCiAgICAgIEFuZF9JbnZlcnQsCiAgICAgIE5vb3AsCiAgICAgIEdka19PciwKICAgICAgRXF1 aXYsCiAgICAgIE9yX1JldmVyc2UsCiAgICAgIENvcHlfSW52ZXJ0LAogICAgICBPcl9JbnZlcnQs CiAgICAgIE5hbmQsCiAgICAgIFNldCk7CgogICB0eXBlIEdka19Kb2luX1N0eWxlIGlzIChKb2lu X01pdGVyLCBKb2luX1JvdW5kLCBKb2luX0JldmVsKTsKCiAgIHR5cGUgR2RrX0lDX0F0dHJpYnV0 ZXNfVHlwZSBpcyBuZXcgR3VpbnQ7CiAgIEljX1N0eWxlICAgICAgICAgICAgICAgIDogY29uc3Rh bnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfQ2xpZW50X1dpbmRvdyAgICAgICAgOiBj b25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19Gb2N1c19XaW5kb3cgICAgICAg ICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX0ZpbHRlcl9FdmVudHMg ICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfU3BvdF9Mb2Nh dGlvbiAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19MaW5l X1NwYWNpbmcgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIElj X0N1cnNvciAgICAgICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsK ICAgSWNfUHJlZWRpdF9Gb250c2V0ICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19U eXBlOwogICBJY19QcmVlZGl0X0FyZWEgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1 dGVzX1R5cGU7CiAgIEljX1ByZWVkaXRfQXJlYV9OZWVkZWQgIDogY29uc3RhbnQgR2RrX0lDX0F0 dHJpYnV0ZXNfVHlwZTsKICAgSWNfUHJlZWRpdF9Gb3JlZ3JvdW5kICAgOiBjb25zdGFudCBHZGtf SUNfQXR0cmlidXRlc19UeXBlOwogICBJY19QcmVlZGl0X0JhY2tncm91bmQgICA6IGNvbnN0YW50 IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1ByZWVkaXRfUGl4bWFwICAgICAgIDogY29u c3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfUHJlZWRpdF9Db2xvcm1hcCAgICAg OiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19TdGF0dXNfRm9udHNldCAg ICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1N0YXR1c19BcmVh ICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfU3RhdHVz X0FyZWFfTmVlZGVkICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19T dGF0dXNfRm9yZWdyb3VuZCAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAg IEljX1N0YXR1c19CYWNrZ3JvdW5kICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlw ZTsKICAgSWNfU3RhdHVzX1BpeG1hcCAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRl c19UeXBlOwogICBJY19TdGF0dXNfQ29sb3JtYXAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRy aWJ1dGVzX1R5cGU7CiAgIEljX0FsbF9SZXEgICAgICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lD X0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfUHJlZWRpdF9BcmVhX1JlcSAgICAgOiBjb25zdGFudCBH ZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19QcmVlZGl0X1Bvc2l0aW9uX1JlcSA6IGNvbnN0 YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1N0YXR1c19BcmVhX1JlcSAgICAgIDog Y29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKCiAgIHR5cGUgR2RrX0lNX1N0eWxlIGlz IG5ldyBHdWludDsKICAgSW1fUHJlZWRpdF9BcmVhICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5 bGU7CiAgIEltX1ByZWVkaXRfQ2FsbGJhY2tzIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlOwogICBJ bV9QcmVlZGl0X1Bvc2l0aW9uICA6IGNvbnN0YW50IEdka19JTV9TdHlsZTsKICAgSW1fUHJlZWRp dF9Ob3RoaW5nICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGU7CiAgIEltX1ByZWVkaXRfTm9uZSAg ICAgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlOwogICBJbV9QcmVlZGl0X01hc2sgICAgICA6IGNv bnN0YW50IEdka19JTV9TdHlsZTsKICAgSW1fU3RhdHVzX0FyZWEgICAgICAgOiBjb25zdGFudCBH ZGtfSU1fU3R5bGU7CiAgIEltX1N0YXR1c19DYWxsYmFja3MgIDogY29uc3RhbnQgR2RrX0lNX1N0 eWxlOwogICBJbV9TdGF0dXNfTm90aGluZyAgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZTsKICAg SW1fU3RhdHVzX05vbmUgICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGU7CiAgIEltX1N0YXR1 c19NYXNrICAgICAgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlOwoKICAgdHlwZSBHZGtfSW5wdXRf Q29uZGl0aW9uIGlzIChJbnB1dF9SZWFkLCBJbnB1dF9Xcml0ZSwgSW5wdXRfRXhjZXB0aW9uKTsK CiAgIHR5cGUgR2RrX0lucHV0X01vZGUgaXMgKE1vZGVfRGlzYWJsZWQsIE1vZGVfU2NyZWVuLCBN b2RlX1dpbmRvdyk7CgogICB0eXBlIEdka19JbnB1dF9Tb3VyY2UgaXMKICAgICAoU291cmNlX01v dXNlLAogICAgICBTb3VyY2VfUGVuLAogICAgICBTb3VyY2VfRXJhc2VyLAogICAgICBTb3VyY2Vf Q3Vyc29yKTsKCiAgIHR5cGUgR2RrX0tleV9UeXBlIGlzIG5ldyBHdWludDsKICAgLS0gIHNlZSBH ZGsuVHlwZXMuS2V5c3ltcyBmb3Iga2V5IHR5cGUgY29uc3RhbnRzCgogICB0eXBlIEdka19MaW5l X1N0eWxlIGlzIChMaW5lX1NvbGlkLCBMaW5lX09uX09mZl9EYXNoLCBMaW5lX0RvdWJsZV9EYXNo KTsKCiAgIHR5cGUgR2RrX01vZGlmaWVyX1R5cGUgaXMgbmV3IEd1aW50OwogICBTaGlmdF9NYXNr ICAgIDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIExvY2tfTWFzayAgICAgOiBjb25z dGFudCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgQ29udHJvbF9NYXNrICA6IGNvbnN0YW50IEdka19N b2RpZmllcl9UeXBlOwogICBNb2QxX01hc2sgICAgIDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5 cGU7CiAgIE1vZDJfTWFzayAgICAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgTW9k M19NYXNrICAgICA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBNb2Q0X01hc2sgICAg IDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIE1vZDVfTWFzayAgICAgOiBjb25zdGFu dCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgQnV0dG9uMV9NYXNrICA6IGNvbnN0YW50IEdka19Nb2Rp Zmllcl9UeXBlOwogICBCdXR0b24yX01hc2sgIDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7 CiAgIEJ1dHRvbjNfTWFzayAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgQnV0dG9u NF9NYXNrICA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBCdXR0b241X01hc2sgIDog Y29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIFJlbGVhc2VfTWFzayAgOiBjb25zdGFudCBH ZGtfTW9kaWZpZXJfVHlwZTsKICAgTW9kaWZpZXJfTWFzayA6IGNvbnN0YW50IEdka19Nb2RpZmll cl9UeXBlOwoKICAgdHlwZSBHZGtfTm90aWZ5X1R5cGUgaXMKICAgICAoTm90aWZ5X0FuY2VzdG9y LAogICAgICBOb3RpZnlfVmlydHVhbCwKICAgICAgTm90aWZ5X0luZmVyaW9yLAogICAgICBOb3Rp ZnlfTm9uX0xpbmVhciwKICAgICAgTm90aWZ5X05vbl9MaW5lYXJfVmlydHVhbCwKICAgICAgTm90 aWZ5X1Vua25vd24pOwoKICAgdHlwZSBHZGtfT3ZlcmxhcF9UeXBlIGlzCiAgICAgKE92ZXJsYXBf UmVjdGFuZ2xlX0luLAogICAgICBPdmVybGFwX1JlY3RhbmdsZV9PdXQsCiAgICAgIE92ZXJsYXBf UmVjdGFuZ2xlX1BhcnQpOwoKICAgdHlwZSBHZGtfUHJvcF9Nb2RlIGlzCiAgICAgKFByb3BfTW9k ZV9SZXBsYWNlLCBQcm9wX01vZGVfUHJlcGVuZCwgUHJvcF9Nb2RlX0FwcGVuZCk7CgogICB0eXBl IEdka19TdWJ3aW5kb3dfTW9kZSBpcyAoQ2xpcF9CeV9DaGlsZHJlbiwgSW5jbHVkZV9JbmZlcmlv cnMpOwoKICAgdHlwZSBHZGtfR0NfVmFsdWVzX01hc2sgaXMgbmV3IEd1aW50OwogICBHQ19Gb3Jl Z3JvdW5kICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19CYWNrZ3JvdW5k ICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19Gb250ICAgICAgICAgIDog Y29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19GdW5jdGlvbiAgICAgIDogY29uc3Rh bnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19GaWxsICAgICAgICAgIDogY29uc3RhbnQgR2Rr X0dDX1ZhbHVlc19NYXNrOwogICBHQ19UaWxlICAgICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1Zh bHVlc19NYXNrOwogICBHQ19TdGlwcGxlICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19N YXNrOwogICBHQ19DbGlwX01hc2sgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwog ICBHQ19TdWJ3aW5kb3cgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19U c19YX09yaWdpbiAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19UeF9ZX09y aWdpbiAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19DbGlwX1hfT3JpZ2lu IDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19DbGlwX1lfT3JpZ2luIDogY29u c3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19FeHBvc3VyZXMgICAgIDogY29uc3RhbnQg R2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19MaW5lX1dpZHRoICAgIDogY29uc3RhbnQgR2RrX0dD X1ZhbHVlc19NYXNrOwogICBHQ19MaW5lX1N0eWxlICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVl c19NYXNrOwogICBHQ19DYXBfU3R5bGUgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNr OwogICBHQ19Kb2luX1N0eWxlICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwoKICAg dHlwZSBHZGtfVmlzaWJpbGl0eV9TdGF0ZSBpcwogICAgIChWaXNpYmlsaXR5X1Vub2JzY3VyZWQs CiAgICAgIFZpc2liaWxpdHlfUGFydGlhbCwKICAgICAgVmlzaWJpbGl0eV9GdWxseV9PYnNjdXJl ZCk7CgogICB0eXBlIEdka19WaXN1YWxfVHlwZSBpcwogICAgIChWaXN1YWxfU3RhdGljX0dyYXks CiAgICAgIFZpc3VhbF9HcmF5c2NhbGUsCiAgICAgIFZpc3VhbF9TdGF0aWNfQ29sb3IsCiAgICAg IFZpc3VhbF9Qc2V1ZG9fQ29sb3IsCiAgICAgIFZpc3VhbF9UcnVlX0NvbG9yLAogICAgICBWaXN1 YWxfRGlyZWN0X0NvbG9yKTsKCiAgIHR5cGUgR2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUgaXMg bmV3IEd1aW50OwogICBXYV9UaXRsZSAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRl c19UeXBlOwogICBXYV9YICAgICAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19U eXBlOwogICBXYV9ZICAgICAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBl OwogICBXYV9DdXJzb3IgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwog ICBXYV9Db2xvcm1hcCA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBX YV9WaXN1YWwgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9X bWNsYXNzICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9Ob3Jl ZGlyICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwoKICAgdHlwZSBHZGtf V2luZG93X0NsYXNzIGlzIChJbnB1dF9PdXRwdXQsIElucHV0X09ubHkpOwoKICAgdHlwZSBHZGtf V2luZG93X0hpbnRzIGlzIG5ldyBHdWludDsKICAgR2RrX0hpbnRfUG9zICAgICAgICA6IGNvbnN0 YW50IEdka19XaW5kb3dfSGludHM7CiAgIEdka19IaW50X01pbl9TaXplICAgOiBjb25zdGFudCBH ZGtfV2luZG93X0hpbnRzOwogICBHZGtfSGludF9NYXhfU2l6ZSAgIDogY29uc3RhbnQgR2RrX1dp bmRvd19IaW50czsKICAgR2RrX0hpbnRfQmFzZV9TaXplICA6IGNvbnN0YW50IEdka19XaW5kb3df SGludHM7CiAgIEdka19IaW50X0FzcGVjdCAgICAgOiBjb25zdGFudCBHZGtfV2luZG93X0hpbnRz OwogICBHZGtfSGludF9SZXNpemVfSW5jIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50czsKCiAg IHR5cGUgR2RrX1dpbmRvd19UeXBlIGlzCiAgICAgKFdpbmRvd19Sb290LAogICAgICBXaW5kb3df VG9wbGV2ZWwsCiAgICAgIFdpbmRvd19DaGlsZCwKICAgICAgV2luZG93X0RpYWxvZywKICAgICAg V2luZG93X1RlbXAsCiAgICAgIFdpbmRvd19QaXhtYXAsCiAgICAgIFdpbmRvd19Gb3JlaWduKTsK CiAgIHR5cGUgR2RrX1dtX0RlY29yYXRpb24gaXMgbmV3IEd1aW50OwogICBEZWNvcl9BbGwgICAg ICA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwogICBEZWNvcl9Cb3JkZXIgICA6IGNvbnN0 YW50IEdka19XbV9EZWNvcmF0aW9uOwogICBEZWNvcl9SZXNpemVfSCA6IGNvbnN0YW50IEdka19X bV9EZWNvcmF0aW9uOwogICBEZWNvcl9UaXRsZSAgICA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0 aW9uOwogICBEZWNvcl9NZW51ICAgICA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwogICBE ZWNvcl9NaW5pbWl6ZSA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwogICBEZWNvcl9NYXhp bWl6ZSA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwoKICAgdHlwZSBHZGtfV21fRnVuY3Rp b24gaXMgbmV3IEd1aW50OwogICBGdW5jX0FsbCAgICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0 aW9uOwogICBGdW5jX1Jlc2l6ZSAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwogICBGdW5j X01vdmUgICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwogICBGdW5jX01pbmltaXplIDog Y29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwogICBGdW5jX01heGltaXplIDogY29uc3RhbnQgR2Rr X1dtX0Z1bmN0aW9uOwogICBGdW5jX0Nsb3NlICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9u OwoKICAgc3VidHlwZSBHZGtfV0NoYXIgaXMgU3RhbmRhcmQuV2lkZV9DaGFyYWN0ZXI7CiAgIHN1 YnR5cGUgR2RrX1dTdHJpbmcgaXMgU3RhbmRhcmQuV2lkZV9TdHJpbmc7CiAgIC0tICBHZGsgZG9l cyBub3QgZGVmaW5lIGEgR2RrX1dTdHJpbmcgdHlwZSwgYnV0IHVzZXMgcG9pbnRlcnMKICAgLS0g IHRvIEdka19XQ2hhciBpbnN0ZWFkLgoKcHJpdmF0ZQoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICAtLSAgUHJpdmF0ZSBjb25zdGFudHMgIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCiAgIE51bGxfRXZlbnRfTWFzayAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9N YXNrIDo9IDA7CiAgIEV4cG9zdXJlX01hc2sgICAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVu dF9NYXNrIDo9IDIgKiogMTsKICAgUG9pbnRlcl9Nb3Rpb25fTWFzayAgICAgIDogY29uc3RhbnQg R2RrX0V2ZW50X01hc2sgOj0gMiAqKiAyOwogICBQb2ludGVyX01vdGlvbl9IaW50X01hc2sgOiBj b25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDM7CiAgIEJ1dHRvbl9Nb3Rpb25fTWFzayAg ICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogNDsKICAgQnV0dG9uMV9Nb3Rp b25fTWFzayAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2sgOj0gMiAqKiA1OwogICBCdXR0 b24yX01vdGlvbl9NYXNrICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDY7 CiAgIEJ1dHRvbjNfTW90aW9uX01hc2sgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9 IDIgKiogNzsKICAgQnV0dG9uX1ByZXNzX01hc2sgICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50 X01hc2sgOj0gMiAqKiA4OwogICBCdXR0b25fUmVsZWFzZV9NYXNrICAgICAgOiBjb25zdGFudCBH ZGtfRXZlbnRfTWFzayA6PSAyICoqIDk7CiAgIEtleV9QcmVzc19NYXNrICAgICAgICAgICA6IGNv bnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTA7CiAgIEtleV9SZWxlYXNlX01hc2sgICAg ICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTE7CiAgIEVudGVyX05vdGlm eV9NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTI7CiAgIExl YXZlX05vdGlmeV9NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiog MTM7CiAgIEZvY3VzX0NoYW5nZV9NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNr IDo9IDIgKiogMTQ7CiAgIFN0cnVjdHVyZV9NYXNrICAgICAgICAgICA6IGNvbnN0YW50IEdka19F dmVudF9NYXNrIDo9IDIgKiogMTU7CiAgIFByb3BlcnR5X0NoYW5nZV9NYXNrICAgICA6IGNvbnN0 YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTY7CiAgIFZpc2liaWxpdHlfTm90aWZ5X01hc2sg ICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTc7CiAgIFByb3hpbWl0eV9Jbl9N YXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTg7CiAgIFByb3hp bWl0eV9PdXRfTWFzayAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTk7 CiAgIFN1YnN0cnVjdHVyZV9NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9 IDIgKiogMjA7CiAgIEFsbF9FdmVudHNfTWFzayAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVu dF9NYXNrIDo9IDE2IzFGRkZGRiM7CgogICBJY19TdHlsZSAgICAgICAgICAgICAgICA6IGNvbnN0 YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAwOwogICBJY19DbGllbnRfV2luZG93 ICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAxOwogICBJ Y19Gb2N1c19XaW5kb3cgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUg Oj0gMiAqKiAyOwogICBJY19GaWx0ZXJfRXZlbnRzICAgICAgICA6IGNvbnN0YW50IEdka19JQ19B dHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAzOwogICBJY19TcG90X0xvY2F0aW9uICAgICAgICA6IGNv bnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiA0OwogICBJY19MaW5lX1NwYWNp bmcgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiA1Owog ICBJY19DdXJzb3IgICAgICAgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5 cGUgOj0gMiAqKiA2OwogICBJY19QcmVlZGl0X0ZvbnRzZXQgICAgICA6IGNvbnN0YW50IEdka19J Q19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAxMDsKICAgSWNfUHJlZWRpdF9BcmVhICAgICAgICAg OiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMTE7CiAgIEljX1ByZWVk aXRfQXJlYV9OZWVkZWQgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoq IDEyOwogICBJY19QcmVlZGl0X0ZvcmVncm91bmQgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1 dGVzX1R5cGUgOj0gMiAqKiAxMzsKICAgSWNfUHJlZWRpdF9CYWNrZ3JvdW5kICAgOiBjb25zdGFu dCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMTQ7CiAgIEljX1ByZWVkaXRfUGl4bWFw ICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDE1OwogICBJ Y19QcmVlZGl0X0NvbG9ybWFwICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUg Oj0gMiAqKiAxNjsKICAgSWNfU3RhdHVzX0ZvbnRzZXQgICAgICAgOiBjb25zdGFudCBHZGtfSUNf QXR0cmlidXRlc19UeXBlIDo9IDIgKiogMjE7CiAgIEljX1N0YXR1c19BcmVhICAgICAgICAgIDog Y29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDIyOwogICBJY19TdGF0dXNf QXJlYV9OZWVkZWQgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAy MzsKICAgSWNfU3RhdHVzX0ZvcmVncm91bmQgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRl c19UeXBlIDo9IDIgKiogMjQ7CiAgIEljX1N0YXR1c19CYWNrZ3JvdW5kICAgIDogY29uc3RhbnQg R2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDI1OwogICBJY19TdGF0dXNfUGl4bWFwICAg ICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAyNjsKICAgSWNf U3RhdHVzX0NvbG9ybWFwICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9 IDIgKiogMjc7CiAgIEljX0FsbF9SZXEgICAgICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0 dHJpYnV0ZXNfVHlwZSA6PQogICAgIEljX1N0eWxlIG9yIEljX0NsaWVudF9XaW5kb3c7CiAgIElj X1ByZWVkaXRfQXJlYV9SZXEgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6 PQogICAgIEljX1ByZWVkaXRfQXJlYSBvciBJY19QcmVlZGl0X0ZvbnRzZXQ7CiAgIEljX1ByZWVk aXRfUG9zaXRpb25fUmVxIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PQogICAg IEljX1ByZWVkaXRfQXJlYSBvciBJY19TcG90X0xvY2F0aW9uIG9yIEljX1ByZWVkaXRfRm9udHNl dDsKICAgSWNfU3RhdHVzX0FyZWFfUmVxICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRl c19UeXBlIDo9CiAgICAgSWNfU3RhdHVzX0FyZWEgb3IgSWNfU3RhdHVzX0ZvbnRzZXQ7CgogICBJ bV9QcmVlZGl0X0FyZWEgICAgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZSA6PSAxNiMwMDAxIzsK ICAgSW1fUHJlZWRpdF9DYWxsYmFja3MgOiBjb25zdGFudCBHZGtfSU1fU3R5bGUgOj0gMTYjMDAw MiM7CiAgIEltX1ByZWVkaXRfUG9zaXRpb24gIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlIDo9IDE2 IzAwMDQjOwogICBJbV9QcmVlZGl0X05vdGhpbmcgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZSA6 PSAxNiMwMDA4IzsKICAgSW1fUHJlZWRpdF9Ob25lICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5 bGUgOj0gMTYjMDAxMCM7CiAgIEltX1ByZWVkaXRfTWFzayAgICAgIDogY29uc3RhbnQgR2RrX0lN X1N0eWxlIDo9IDE2IzAwMUYjOwogICBJbV9TdGF0dXNfQXJlYSAgICAgICA6IGNvbnN0YW50IEdk a19JTV9TdHlsZSA6PSAxNiMwMTAwIzsKICAgSW1fU3RhdHVzX0NhbGxiYWNrcyAgOiBjb25zdGFu dCBHZGtfSU1fU3R5bGUgOj0gMTYjMDIwMCM7CiAgIEltX1N0YXR1c19Ob3RoaW5nICAgIDogY29u c3RhbnQgR2RrX0lNX1N0eWxlIDo9IDE2IzA0MDAjOwogICBJbV9TdGF0dXNfTm9uZSAgICAgICA6 IGNvbnN0YW50IEdka19JTV9TdHlsZSA6PSAxNiMwODAwIzsKICAgSW1fU3RhdHVzX01hc2sgICAg ICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGUgOj0gMTYjMEYwMCM7CgogICBTaGlmdF9NYXNrICAg OiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDA7CiAgIExvY2tfTWFzayAgICA6 IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogMTsKICAgQ29udHJvbF9NYXNrIDog Y29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiAyOwogICBNb2QxX01hc2sgICAgOiBj b25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDM7CiAgIE1vZDJfTWFzayAgICA6IGNv bnN0YW50IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogNDsKICAgTW9kM19NYXNrICAgIDogY29u c3RhbnQgR2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiA1OwogICBNb2Q0X01hc2sgICAgOiBjb25z dGFudCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDY7CiAgIE1vZDVfTWFzayAgICA6IGNvbnN0 YW50IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogNzsKICAgQnV0dG9uMV9NYXNrIDogY29uc3Rh bnQgR2RrX01vZGlmaWVyX1R5cGUgOj0gMiAqKiA4OwogICBCdXR0b24yX01hc2sgOiBjb25zdGFu dCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDk7CiAgIEJ1dHRvbjNfTWFzayA6IGNvbnN0YW50 IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogMTA7CiAgIEJ1dHRvbjRfTWFzayA6IGNvbnN0YW50 IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogMTE7CiAgIEJ1dHRvbjVfTWFzayA6IGNvbnN0YW50 IEdka19Nb2RpZmllcl9UeXBlIDo9IDIgKiogMTI7CiAgIFJlbGVhc2VfTWFzayAgOiBjb25zdGFu dCBHZGtfTW9kaWZpZXJfVHlwZSA6PSAyICoqIDEzOwogICBNb2RpZmllcl9NYXNrIDogY29uc3Rh bnQgR2RrX01vZGlmaWVyX1R5cGUgOj0gMTYjM0ZGRiM7CgogICBXYV9UaXRsZSAgICA6IGNvbnN0 YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMTsKICAgV2FfWCAgICAgICAg OiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDI7CiAgIFdhX1kg ICAgICAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAzOwog ICBXYV9DdXJzb3IgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlIDo9IDIg KiogNDsKICAgV2FfQ29sb3JtYXAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlw ZSA6PSAyICoqIDU7CiAgIFdhX1Zpc3VhbCAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19BdHRyaWJ1 dGVzX1R5cGUgOj0gMiAqKiA2OwogICBXYV9XbWNsYXNzICA6IGNvbnN0YW50IEdka19XaW5kb3df QXR0cmlidXRlc19UeXBlIDo9IDIgKiogNzsKICAgV2FfTm9yZWRpciAgOiBjb25zdGFudCBHZGtf V2luZG93X0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDg7CgogICBHQ19Gb3JlZ3JvdW5kICAgIDog Y29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMDsKICAgR0NfQmFja2dyb3VuZCAg ICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDE7CiAgIEdDX0ZvbnQgICAg ICAgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAyOwogICBHQ19GdW5j dGlvbiAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMzsKICAgR0Nf RmlsbCAgICAgICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDQ7CiAg IEdDX1RpbGUgICAgICAgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiA1 OwogICBHQ19TdGlwcGxlICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIg KiogNjsKICAgR0NfQ2xpcF9NYXNrICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6 PSAyICoqIDc7CiAgIEdDX1N1YndpbmRvdyAgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01h c2sgOj0gMiAqKiA4OwogICBHQ19Uc19YX09yaWdpbiAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVl c19NYXNrIDo9IDIgKiogOTsKICAgR0NfVHhfWV9PcmlnaW4gICA6IGNvbnN0YW50IEdka19HQ19W YWx1ZXNfTWFzayA6PSAyICoqIDEwOwogICBHQ19DbGlwX1hfT3JpZ2luIDogY29uc3RhbnQgR2Rr X0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMTE7CiAgIEdDX0NsaXBfWV9PcmlnaW4gOiBjb25zdGFu dCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAxMjsKICAgR0NfRXhwb3N1cmVzICAgICA6IGNv bnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDEzOwogICBHQ19MaW5lX1dpZHRoICAg IDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMTQ7CiAgIEdDX0xpbmVfU3R5 bGUgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAxNTsKICAgR0NfQ2Fw X1N0eWxlICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDE2OwogICBH Q19Kb2luX1N0eWxlICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMTc7 CgogICBHZGtfSGludF9Qb3MgICAgICAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50cyA6PSAy ICoqIDA7CiAgIEdka19IaW50X01pbl9TaXplICAgOiBjb25zdGFudCBHZGtfV2luZG93X0hpbnRz IDo9IDIgKiogMTsKICAgR2RrX0hpbnRfTWF4X1NpemUgICA6IGNvbnN0YW50IEdka19XaW5kb3df SGludHMgOj0gMiAqKiAyOwogICBHZGtfSGludF9CYXNlX1NpemUgIDogY29uc3RhbnQgR2RrX1dp bmRvd19IaW50cyA6PSAyICoqIDM7CiAgIEdka19IaW50X0FzcGVjdCAgICAgOiBjb25zdGFudCBH ZGtfV2luZG93X0hpbnRzIDo9IDIgKiogNDsKICAgR2RrX0hpbnRfUmVzaXplX0luYyA6IGNvbnN0 YW50IEdka19XaW5kb3dfSGludHMgOj0gMiAqKiA1OwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgIC0tICBSZXByZXNlbnRhdGlvbiBjbGF1c2VzICAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZvciBHZGtfRXZlbnRfVHlwZSB1c2UKICAgICAoTm90 aGluZyA9PiAtMSwKICAgICAgRGVsZXRlID0+IDAsCiAgICAgIERlc3Ryb3kgPT4gMSwKICAgICAg RXhwb3NlID0+IDIsCiAgICAgIE1vdGlvbl9Ob3RpZnkgPT4gMywKICAgICAgQnV0dG9uX1ByZXNz ID0+IDQsCiAgICAgIEdka18yYnV0dG9uX1ByZXNzID0+IDUsCiAgICAgIEdka18zYnV0dG9uX1By ZXNzID0+IDYsCiAgICAgIEJ1dHRvbl9SZWxlYXNlID0+IDcsCiAgICAgIEtleV9QcmVzcyA9PiA4 LAogICAgICBLZXlfUmVsZWFzZSA9PiA5LAogICAgICBFbnRlcl9Ob3RpZnkgPT4gMTAsCiAgICAg IExlYXZlX05vdGlmeSA9PiAxMSwKICAgICAgRm9jdXNfQ2hhbmdlID0+IDEyLAogICAgICBDb25m aWd1cmUgPT4gMTMsCiAgICAgIE1hcCA9PiAxNCwKICAgICAgVW5tYXAgPT4gMTUsCiAgICAgIFBy b3BlcnR5X05vdGlmeSA9PiAxNiwKICAgICAgU2VsZWN0aW9uX0NsZWFyID0+IDE3LAogICAgICBT ZWxlY3Rpb25fUmVxdWVzdCA9PiAxOCwKICAgICAgU2VsZWN0aW9uX05vdGlmeSA9PiAxOSwKICAg ICAgUHJveGltaXR5X0luID0+IDIwLAogICAgICBQcm94aW1pdHlfT3V0ID0+IDIxLAogICAgICBE cmFnX0VudGVyID0+IDIyLAogICAgICBEcmFnX0xlYXZlID0+IDIzLAogICAgICBEcmFnX01vdGlv biA9PiAyNCwKICAgICAgRHJhZ19TdGF0dXMgPT4gMjUsCiAgICAgIERyb3BfU3RhcnQgPT4gMjYs CiAgICAgIERyb3BfRmluaXNoZWQgPT4gMjcsCiAgICAgIENsaWVudF9FdmVudCA9PiAyOCwKICAg ICAgVmlzaWJpbGl0eV9Ob3RpZnkgPT4gMjksCiAgICAgIE5vX0V4cG9zZSA9PiAzMCk7CgogICBm b3IgR2RrX0lucHV0X0NvbmRpdGlvbiB1c2UKICAgICAoSW5wdXRfUmVhZCAgICAgID0+IDIgKiog MCwKICAgICAgSW5wdXRfV3JpdGUgICAgID0+IDIgKiogMSwKICAgICAgSW5wdXRfRXhjZXB0aW9u ID0+IDIgKiogMik7CgogICBmb3IgR2RrX1N1YndpbmRvd19Nb2RlIHVzZSAoQ2xpcF9CeV9DaGls ZHJlbiAgPT4gMCwgSW5jbHVkZV9JbmZlcmlvcnMgPT4gMSk7CgogICAtLSAgV2FybmluZyA6IHRo ZXNlIHZhbHVlcyBzaG91bGQgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBnZGsvZ2RjdXJzb3Jz LmgKICAgLS0gID8/PyBIb3dldmVyLCBzaW5jZSB0aGVzZSB2YWx1ZXMgYXJlIGltcG9ydGVkIGZy b20gWGxpYiwgaXQgaXMgdW5saWtlbHkKICAgLS0gIHRoYXQgdGhleSB3aWxsIGNoYW5nZSBzb29u LgoKICAgZm9yIEdka19DdXJzb3JfVHlwZSB1c2UKICAgICAoWF9DdXJzb3IgPT4gMCwKICAgICAg QXJyb3cgICAgPT4gMiwKICAgICAgQmFzZWRfQXJyb3dfRG93biA9PiA0LAogICAgICBCYXNlZF9B cnJvd19VcCA9PiA2LAogICAgICBCb2F0ID0+IDgsCiAgICAgIEJvZ29zaXR5ID0+IDEwLAogICAg ICBCb3R0b21fTGVmdF9Db3JuZXIgPT4gMTIsCiAgICAgIEJvdHRvbV9SaWdodF9Db3JuZXIgPT4g MTQsCiAgICAgIEJvdHRvbV9TaWRlID0+IDE2LAogICAgICBCb3R0b21fVGVlID0+IDE4LAogICAg ICBCb3hfU3BpcmFsID0+IDIwLAogICAgICBDZW50ZXJfUHRyID0+IDIyLAogICAgICBDaXJjbGUg PT4gMjQsCiAgICAgIENsb2NrID0+IDI2LAogICAgICBDb2ZmZWVfTXVnID0+IDI4LAogICAgICBD cm9zcyA9PiAzMCwKICAgICAgQ3Jvc3NfUmV2ZXJzZSA9PiAzMiwKICAgICAgQ3Jvc3NoYWlyID0+ IDM0LAogICAgICBEaWFtb25kX0Nyb3NzID0+IDM2LAogICAgICBEb3QgPT4gMzgsCiAgICAgIERv dGJveCA9PiA0MCwKICAgICAgRG91YmxlX0Fycm93ID0+IDQyLAogICAgICBEcmFmdF9MYXJnZSA9 PiA0NCwKICAgICAgRHJhZnRfU21hbGwgPT4gNDYsCiAgICAgIERyYXBlZF9Cb3ggPT4gNDgsCiAg ICAgIEV4Y2hhbmdlID0+IDUwLAogICAgICBGbGV1ciA9PiA1MiwKICAgICAgR29iYmxlciA9PiA1 NCwKICAgICAgR3VtYnkgPT4gNTYsCiAgICAgIEhhbmQxID0+IDU4LAogICAgICBIYW5kMiA9PiA2 MCwKICAgICAgSGVhcnQgPT4gNjIsCiAgICAgIEljb24gPT4gNjQsCiAgICAgIElyb25fQ3Jvc3Mg PT4gNjYsCiAgICAgIExlZnRfUHRyID0+IDY4LAogICAgICBMZWZ0X1NpZGUgPT4gNzAsCiAgICAg IExlZnRfVGVlID0+IDcyLAogICAgICBMZWZ0YnV0dG9uID0+IDc0LAogICAgICBMbF9BbmdsZSA9 PiA3NiwKICAgICAgTHJfQW5nbGUgPT4gNzgsCiAgICAgIE1hbiA9PiA4MCwKICAgICAgTWlkZGxl YnV0dG9uID0+IDgyLAogICAgICBNb3VzZSA9PiA4NCwKICAgICAgUGVuY2lsID0+IDg2LAogICAg ICBQaXJhdGUgPT4gODgsCiAgICAgIFBsdXMgPT4gOTAsCiAgICAgIFF1ZXN0aW9uX0Fycm93ID0+ IDkyLAogICAgICBSaWdodF9QdHIgPT4gOTQsCiAgICAgIFJpZ2h0X1NpZGUgPT4gOTYsCiAgICAg IFJpZ2h0X1RlZSA9PiA5OCwKICAgICAgUmlnaHRidXR0b24gPT4gMTAwLAogICAgICBSdGxfTG9n byA9PiAxMDIsCiAgICAgIFNhaWxib2F0ID0+IDEwNCwKICAgICAgU2JfRG93bl9BcnJvdyA9PiAx MDYsCiAgICAgIFNiX0hfRG91YmxlX0Fycm93ID0+IDEwOCwKICAgICAgU2JfTGVmdF9BcnJvdyA9 PiAxMTAsCiAgICAgIFNiX1JpZ2h0X0Fycm93ID0+IDExMiwKICAgICAgU2JfVXBfQXJyb3cgPT4g MTE0LAogICAgICBTYl9WX0RvdWJsZV9BcnJvdyA9PiAxMTYsCiAgICAgIFNodXR0bGUgPT4gMTE4 LAogICAgICBTaXppbmcgPT4gMTIwLAogICAgICBTcGlkZXIgPT4gMTIyLAogICAgICBTcHJheWNh biA9PiAxMjQsCiAgICAgIFN0YXIgPT4gMTI2LAogICAgICBUYXJnZXQgPT4gMTI4LAogICAgICBU Y3Jvc3MgPT4gMTMwLAogICAgICBUb3BfTGVmdF9BcnJvdyA9PiAxMzIsCiAgICAgIFRvcF9MZWZ0 X0Nvcm5lciA9PiAxMzQsCiAgICAgIFRvcF9SaWdodF9Db3JuZXIgPT4gMTM2LAogICAgICBUb3Bf U2lkZSA9PiAxMzgsCiAgICAgIFRvcF9UZWUgPT4gMTQwLAogICAgICBUcmVrID0+IDE0MiwKICAg ICAgVWxfQW5nbGUgPT4gMTQ0LAogICAgICBVbWJyZWxsYSA9PiAxNDYsCiAgICAgIFVyX0FuZ2xl ID0+IDE0OCwKICAgICAgV2F0Y2ggPT4gMTUwLAogICAgICBYdGVybSA9PiAxNTIpOwoKICAgRGVj b3JfQWxsICAgICAgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDA7CiAgIERl Y29yX0JvcmRlciAgIDogY29uc3RhbnQgR2RrX1dtX0RlY29yYXRpb24gOj0gMiAqKiAxOwogICBE ZWNvcl9SZXNpemVfSCA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uIDo9IDIgKiogMjsKICAg RGVjb3JfVGl0bGUgICAgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDM7CiAg IERlY29yX01lbnUgICAgIDogY29uc3RhbnQgR2RrX1dtX0RlY29yYXRpb24gOj0gMiAqKiA0Owog ICBEZWNvcl9NaW5pbWl6ZSA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uIDo9IDIgKiogNTsK ICAgRGVjb3JfTWF4aW1pemUgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDY7 CgogICBGdW5jX0FsbCAgICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uIDo9IDIgKiogMDsK ICAgRnVuY19SZXNpemUgICA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbiA6PSAyICoqIDE7CiAg IEZ1bmNfTW92ZSAgICAgOiBjb25zdGFudCBHZGtfV21fRnVuY3Rpb24gOj0gMiAqKiAyOwogICBG dW5jX01pbmltaXplIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uIDo9IDIgKiogMzsKICAgRnVu Y19NYXhpbWl6ZSA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbiA6PSAyICoqIDQ7CiAgIEZ1bmNf Q2xvc2UgICAgOiBjb25zdGFudCBHZGtfV21fRnVuY3Rpb24gOj0gMiAqKiA1OwplbmQgR2RrLlR5 cGVzOwoKLS0gIFRoZSBmb2xsb3dpbmcgdHlwZXMgd2VyZSBub3QgYm91bmQgYmVjYXVzZSBpdCBk aWQgbm90IHNlZW0KLS0gIHRvIGJlIG5lY2Vzc2FyeSAoeWV0KS4KLS0KLS0gICsgR2RrQ29sb3JD b250ZXh0TW9kZQotLSAgKyBHZGtDcm9zc2luZ01vZGUKLS0gICsgR2RrRmlsdGVyUmV0dXJuCi0t ICArIEdka0ZvbnRUeXBlCi0tICArIEdka05vdGlmeVR5cGUKLS0gICsgR2RrUHJvcGVydHlTdGF0 ZQotLSAgKyBHZGtTdGF0dXMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9nZGstZXZlbnQuYWRzAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDUzMDI2ADA3NTUxMTA3NjMyADAxMzcy NgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNw YXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5 NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0xOTk5ICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVj a2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y ICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQot LSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAt LQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNw ZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9t ICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVz IHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAg YnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNv dmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNl cHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0 aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUg UHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4K LS0gIFRoaXMgcGFja2FnZSBwcm92aWRlcyBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIGV2ZW50cyBm cm9tIHRoZSB3aW5kb3cgc3lzdGVtLgotLSAgSW4gR3RrQWRhIGFwcGxpY2F0aW9ucywgdGhlIGV2 ZW50cyBhcmUgaGFuZGxlZCBhdXRvbWF0aWNhbGx5IGluCi0tICBHdGsuTWFpbi5Eb19FdmVudCwg YW5kIHBhc3NlZCBvbiB0byB0aGUgYXBwcm9wcmlhdGUgd2lkZ2V0cywgc28gdGhlc2UKLS0gIGZ1 bmN0aW9ucyBhcmUgcmFyZWx5IG5lZWRlZC4KLS0KLS0gICEhIFdhcm5pbmcgISEgVGhpcyBpcyBv bmUgb2YgdGhlIG9ubHkgcGFja2FnZSB0aGF0IHJlcXVpcmVzIG1hbnVhbAotLSAgbWVtb3J5IG1h bmFnZW1lbnQgaW4gc29tZSBjYXNlcy4gSWYgeW91IHVzZSB0aGUgZnVuY3Rpb24gQWxsb2NhdGUs Ci0tICB5b3UgaGF2ZSB0byB1c2UgdGhlIGZ1bmN0aW9uIEZyZWUgdG9vLi4uCi0tICA8L2Rlc2Ny aXB0aW9uPgoKd2l0aCBTeXN0ZW07CndpdGggR2xpYjsgdXNlIEdsaWI7CndpdGggR2RrLlJlY3Rh bmdsZTsKd2l0aCBHZGsuVHlwZXM7CndpdGggR2RrLldpbmRvdzsKCnBhY2thZ2UgR2RrLkV2ZW50 IGlzCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIERlZmluaXRpb24g b2YgdGhlIHR5cGVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgdHlw ZSBHZGtfRXZlbnQgaXMgbmV3IEdkay5DX1Byb3h5OwoKICAgc3VidHlwZSBHZGtfRXZlbnRfQW55 IGlzIEdka19FdmVudDsKICAgLS0gIENoYW5nZSBmcm9tIEd0a0FkYTEuMi4zOiBUaGVyZSBpcyBu byBsb25nZXIgYSB0YWdnZWQgdHlwZQogICAtLSAgaGllcmFyY2h5LCBvbmx5IG9uZSB0eXBlLgog ICAtLSAgSG93ZXZlciB0aGVyZSBhcmUgbm93IGEgZmV3IHJ1bnRpbWUgdGVzdHMgZm9yIGVhY2gg b2YgdGhlCiAgIC0tICBmdW5jdGlvbiwgdG8gY2hlY2sgd2hldGhlciBhIGdpdmVuIGZpZWxkIGlz IGF2YWlsYWJsZSBvciBub3QuCiAgIC0tCiAgIC0tICBGaWVsZHMgY29tbW9uIHRvIGFsbCBldmVu dHM6IFdpbmRvdywgU2VuZF9FdmVudCwgRXZlbnRfVHlwZQoKICAgc3VidHlwZSBHZGtfRXZlbnRf QnV0dG9uIGlzIEdka19FdmVudDsKICAgLS0gIEEgYnV0dG9uIHdhcyBwcmVzc2VkIG9yIHJlbGVh c2UuIFJlbGV2YW50IGZpZWxkczoKICAgLS0gIFRpbWUsIFgsIFksIFByZXNzdXJlLCBYdGlsdCwg WXRpbHQsIFN0YXRlLCBCdXR0b24sIFNvdXJjZSwKICAgLS0gIERldmljZV9JZCwgWF9Sb290LCBZ X1Jvb3QsIFdpbmRvdy4KICAgLS0gIFR5cGU6IEJ1dHRvbl9QcmVzcywgR2RrXzJCdXR0b25fUHJl c3MsIEdka18zQnV0dG9uX1ByZXNzIG9yCiAgIC0tICBCdXR0b25fUmVsZWFzZS4KCiAgIHN1YnR5 cGUgR2RrX0V2ZW50X0NvbmZpZ3VyZSBpcyBHZGtfRXZlbnQ7CiAgIC0tICBUaGUgd2luZG93IGNv bmZpZ3VyYXRpb24gaGFzIGNoYW5nZWQ6IGVpdGhlciBpdCB3YXMgcmVtYXBwZWQsCiAgIC0tICBy ZXNpemVkLCBtb3ZlZCwgLi4uCiAgIC0tICBOb3RlIHRoYXQgeW91IHVzdWFsbHkgZG9uJ3QgaGF2 ZSB0byByZWRyYXcgeW91ciB3aW5kb3cgd2hlbiB5b3UKICAgLS0gIHJlY2VpdmUgc3VjaCBhbiBl dmVudCwgc2luY2UgaXQgaXMgZm9sbG93ZWQgYnkgYW4gR2RrX0V2ZW50X0V4cG9zZS4KICAgLS0g IFJlbGV2YW50IGZpZWxkczogWCwgWSwgV2lkdGgsIEhlaWdodAogICAtLSAgVHlwZTogQ29uZmln dXJlCgogICBzdWJ0eXBlIEdka19FdmVudF9Dcm9zc2luZyBpcyBHZGtfRXZlbnQ7CiAgIC0tICBU aGUgbW91c2UgaGFzIGJlZW4gbW92ZWQgaW4gb3Igb3V0IG9mIHRoZSB3aW5kb3cKICAgLS0gIFJl bGV2YW50IGZpZWxkczogVGltZSwgU3ViV2luZG93LCBYLCBZLCBYX1Jvb3QsIFlfUm9vdCwgTW9k ZSwKICAgLS0gIERldGFpbCwgRm9jdXMsIFN0YXRlCiAgIC0tICBUeXBlOiBFbnRlcl9Ob3RpZnks IExlYXZlX05vdGlmeQoKICAgc3VidHlwZSBHZGtfRXZlbnRfRXhwb3NlIGlzIEdka19FdmVudDsK ICAgLS0gIFRoZSB3aW5kb3cgbmVlZHMgdG8gYmUgcmVkcmF3bi4gRm9yIGVmZmljaWVuY3ksIGd0 ayBnaXZlcyB5b3UgdGhlCiAgIC0tICBzbWFsbGVzdCBhcmVhIHRoYXQgeW91IG5lZWQgdG8gcmVk cmF3CiAgIC0tICBSZWxldmFudCBmaWVsZHM6IEFyZWEsIENvdW50LCBHcmFwaGljc19FeHBvc2UK ICAgLS0gIFR5cGU6IEV4cG9zZQoKICAgc3VidHlwZSBHZGtfRXZlbnRfTm9fRXhwb3NlIGlzIEdk a19FdmVudDsKICAgLS0gIEluZGljYXRlIHRoYXQgdGhlIHNvdXJjZSByZWdpb24gd2FzIGNvbXBs ZXRlbHkgYXZhaWxhYmxlIHdoZW4gcGFydHMgb2YKICAgLS0gIGEgZHJhd2FibGUgd2VyZSBjb3Bp ZWQuCiAgIC0tICBUaGlzIGlzIGFsc28gZW1pdHRlZCB3aGVuIGEgZ2Mgd2hvc2UgImV4cG9zdXJl cyIgYXR0cmlidXRlIGlzIHNldCB0bwogICAtLSAgRmFsc2UgaW4gYSBjYWxsIHRvIENvcHlfQXJl YSBvciBEcmF3X1BpeG1hcC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgogICAtLSAgR2RrLkdD LlNldF9FeHBvc3VyZXMuCiAgIC0tICBObyBSZWxldmVudCBmaWVsZHMgZXhjZXB0IHRoZSBjb21t b24gb25lcwogICAtLSAgVHlwZTogTm9fRXhwb3NlCgogICBzdWJ0eXBlIEdka19FdmVudF9Gb2N1 cyBpcyBHZGtfRXZlbnQ7CiAgIC0tICBUaGUgZm9jdXMgaGFzIGNoYW5nZWQgZm9yIGEgd2luZG93 LgogICAtLSAgUmVsZXZhbnQgZmllbGRzOiBpbgogICAtLSAgVHlwZTogRm9jdXNfQ2hhbmdlCgog ICBzdWJ0eXBlIEdka19FdmVudF9Nb3Rpb24gaXMgR2RrX0V2ZW50OwogICAtLSAgVGhlIG1vdXNl IGhhcyBtb3ZlZAogICAtLSAgUmVsZXZhbnQgZmllbGRzOiBUaW1lLCBYLCBZLCBQcmVzc3VyZSwg WHRpbHQsIFl0aWx0LCBTdGF0ZSwKICAgLS0gIElzX0hpbnQsIFNvdXJjZSwgRGV2aWNlX0lkLCBY X1Jvb3QsIFlfUm9vdAogICAtLSAgVHlwZTogTW90aW9uX05vdGlmeQoKICAgc3VidHlwZSBHZGtf RXZlbnRfS2V5IGlzIEdka19FdmVudDsKICAgLS0gIEEga2V5Ym9hcmQga2V5IHdhcyBwcmVzc2Vk CiAgIC0tICBSZWxldmFudCBmaWVsZHM6IFRpbWUsIFN0YXRlLCBLZXlfVmFsLCBTdHJpbmcKICAg LS0gIFR5cGU6IEtleV9QcmVzcywgS2V5X1JlbGVhc2UKCiAgIHN1YnR5cGUgR2RrX0V2ZW50X1By b3BlcnR5IGlzIEdka19FdmVudDsKICAgLS0gIFNvbWUgcHJvcGVydHkgb2YgdGhlIHdpbmRvdyB3 YXMgbW9kaWZpZWQuIEd0a0FkYSBwcm92aWRlcyBhIGhpZ2hlcgogICAtLSAgbGV2ZWwgaW50ZXJm YWNlLCBhbmQgeW91IGFsbW9zdCBuZXZlciBuZWVkIHRvIHVzZSB0aGlzIGV2ZW50LgogICAtLSAg UmVsZXZlbnQgZmllbGRzOiBBdG9tLCBUaW1lLCBQcm9wZXJ0eV9TdGF0ZQogICAtLSAgVHlwZTog UHJvcGVydHlfTm90aWZ5CgogICBzdWJ0eXBlIEdka19FdmVudF9Qcm94aW1pdHkgaXMgR2RrX0V2 ZW50OwogICAtLSAgZnJvbSBndGsrOiAiVGhpcyBldmVudCB0eXBlIHdpbGwgYmUgdXNlZCBwcmV0 dHkgcmFyZWx5LiBJdCBvbmx5IGlzCiAgIC0tICBpbXBvcnRhbnQgZm9yIFhJbnB1dCBhd2FyZSBw cm9ncmFtcyB0aGF0IGFyZSBkcmF3aW5nIHRoZWlyIG93bgogICAtLSAgY3Vyc29yIi4gVGhpcyBp cyBvbmx5IHVzZWQgd2l0aCBub24gc3RhbmRhcmQgaW5wdXQgZGV2aWNlcywgbGlrZQogICAtLSAg Z3JhcGhpYyB0YWJsZXRzLgogICAtLSAgUmVsZXZhbnQgZmllbGRzOiBUaW1lLCBTb3VyY2UsIERl dmljZV9JZAogICAtLSAgVHlwZTogUHJveGltaXR5X0luLCBQcm94aW1pdHlfT3V0CgogICBzdWJ0 eXBlIEdka19FdmVudF9WaXNpYmlsaXR5IGlzIEdka19FdmVudDsKICAgLS0gIFRoZSB2aXNpYmls aXR5IHN0YXRlIG9mIHRoZSB3aW5kb3cgKHBhcnRpYWxseSB2aXNpYmx5LCBmdWxseSB2aXNpYmxl LAogICAtLSAgaGlkZGVuKS4gVGhpcyBldmVudCBhbG1vc3QgbmV2ZXIgbmVlZCB0byBiZSB1c2Vk LCBzaW5jZSBvdGhlciBldmVudHMKICAgLS0gIGFyZSBnZW5lcmF0ZWQgYXQgdGhlIHNhbWUgdGlt ZSwgbGlrZSBleHBvc2VfZXZlbnRzCiAgIC0tICBSZWxldmFudCBmaWVsZHM6IFZpc2liaWxpdHlf U3RhdGUKICAgLS0gIHR5cGU6IFZpc2liaWxpdHlfTm90aWZ5CgogICBzdWJ0eXBlIEdka19FdmVu dF9TZWxlY3Rpb24gaXMgR2RrX0V2ZW50OwogICAtLSAgVGhpcyBpcyBob3cgWDExIGltcGxlbWVu dHMgYSBzaW1wbGUgY3V0LWFuZC1wYXN0ZSBtZWNoYW5pc20uIEhvd2V2ZXIsCiAgIC0tICBHdGtB ZGEgcHJvdmlkZXMgYSBoaWdoZXIgbGV2ZWwgaW50ZXJmYWNlIHRvIHRoZSBzZWxlY3Rpb24gbWVj aGFuaXNtLAogICAtLSAgc28gdGhpcyBldmVudCB3aWxsIGFsbW9zdCBuZXZlciBiZSB1c2VkLgog ICAtLSAgUmVsZXZhbnQgZmllbGRzOiBTZWxlY3Rpb24sIFRhcmdldCwgUHJvcGVydHksIFJlcXVl c3RvciwgVGltZQogICAtLSAgVHlwZTogU2VsZWN0aW9uX0NsZWFyLCBTZWxlY3Rpb25fUmVxdWVz dCwgU2VsZWN0aW9uX05vdGlmeQoKICAgc3VidHlwZSBHZGtfRXZlbnRfQ2xpZW50IGlzIEdka19F dmVudDsKICAgLS0gIFRoaXMgaXMgYW4gZXZlbnQgdXNlZCB0byBzZW5kIGFyYml0cmFyeSBkYXRh IGZyb20gb25lIFggYXBwbGljYXRpb24KICAgLS0gIHRvIGFub3RoZXIuIFRoaXMgZXZlbnQgdG9v IGlzIGFsbW9zdCBuZXZlciB1c2VkLCBhbmQgaXMgbm90IGRvY3VtZW50ZWQKICAgLS0gIGhlcmUu IFBsZWFzZSBjb25zdWx0IGFuIFgxMSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9u LgogICAtLSAgUmVsZXZhbnQgZmllbGRzOiBNZXNzYWdlX1R5cGUsIERhdGEKICAgLS0gIFR5cGU6 IENsaWVudF9FdmVudAoKICAgLS0gIFRoZSBmb2xsb3dpbmcgZXZlbnQgdHlwZXMgZG8gbm90IHNl ZW0gdG8gaGF2ZSBhbnkgYXNzb2NpYXRlZCB0eXBlOgogICAtLSAgRGVsZXRlLCBEZXN0cm95LCBN YXAsIFVubWFwLCBEcmFnX0VudGVyLCBEcmFnX0xlYXZlLCBEcmFnX01vdGlvbiwKICAgLS0gIERy YWdfU3RhdHVzLCBEcmFnX1N0YXJ0LCBEcmFnX0ZpbmlzaGVkCgogICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNwZWNpZmljIGRlZmluaXRpb24gZm9yIHRo ZSBmaWVsZHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK ICAgdHlwZSBHZGtfRXZlbnRfQ2xpZW50X0RhdGFfRm9ybWF0IGlzCiAgICAgKENoYXJfQXJyYXks IFNob3J0X0FycmF5LCBMb25nX0FycmF5KTsKICAgZm9yIEdka19FdmVudF9DbGllbnRfRGF0YV9G b3JtYXQgdXNlCiAgICAgKENoYXJfQXJyYXkgID0+IDgsIFNob3J0X0FycmF5ID0+IDE2LCBMb25n X0FycmF5ICA9PiAzMik7CiAgIC0tICBWYWx1ZXMgZXh0cmFjdGVkIGZyb20gdGhlIFhDbGllbnRN ZXNzYWdlRXZlbnQgbWFuIHBhZ2UuCgogICBOdW1iZXJfT2ZfQ2hhcmFjdGVycyA6IGNvbnN0YW50 IDo9IDIwOwogICBOdW1iZXJfT2ZfU2hvcnRzICAgICA6IGNvbnN0YW50IDo9IDEwOwogICBOdW1i ZXJfT2ZfTG9uZ3MgICAgICA6IGNvbnN0YW50IDo9IDU7CgogICB0eXBlIEdka19FdmVudF9DbGll bnRfRGF0YQogICAgIChGb3JtYXQgOiBHZGtfRXZlbnRfQ2xpZW50X0RhdGFfRm9ybWF0KSBpcwog ICByZWNvcmQKICAgICAgY2FzZSBGb3JtYXQgaXMKICAgICAgICAgd2hlbiBDaGFyX0FycmF5ID0+ CiAgICAgICAgICAgIEIgOiBTdHJpbmcgKDEgLi4gTnVtYmVyX09mX0NoYXJhY3RlcnMpOwogICAg ICAgICB3aGVuIFNob3J0X0FycmF5ID0+CiAgICAgICAgICAgIFMgOiBHc2hvcnRfQXJyYXkgKDEg Li4gTnVtYmVyX09mX1Nob3J0cyk7CiAgICAgICAgIHdoZW4gTG9uZ19BcnJheSA9PgogICAgICAg ICAgICBMIDogR2xvbmdfQXJyYXkgKDEgLi4gTnVtYmVyX09mX0xvbmdzKTsKICAgICAgZW5kIGNh c2U7CiAgIGVuZCByZWNvcmQ7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICAtLSBBY2Nlc3MgdG8gZmllbGRzIG9mIHRoZSBldmVudCAtLQogICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgSW52YWxpZF9GaWVsZCA6IGV4Y2VwdGlvbjsKICAg LS0gIElmIGEgZmllbGQgZG9lcyBub3QgZXhpc3QgZm9yIHRoZSBldmVudCB5b3UgZ2F2ZSwgYW4g ZXhjZXB0aW9uCiAgIC0tICBJbnZhbGlkX0ZpZWxkIGlzIHJhaXNlZAoKICAgZnVuY3Rpb24gR2V0 X0V2ZW50X1R5cGUgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gVHlwZXMuR2RrX0V2ZW50 X1R5cGU7CiAgIC0tICBUaGUgdHlwZSBvZiB0aGUgZXZlbnQuCgogICBmdW5jdGlvbiBHZXRfU2Vu ZF9FdmVudCAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBCb29sZWFuOwogICAtLSAgU2V0 IHRvIHRydWUgaWYgdGhlIGV2ZW50IHdhcyBnZW5lcmF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLCBG YWxzZQogICAtLSAgaWYgZ2VuZXJhdGVkIGJ5IHRoZSBYIHNlcnZlci9XaW4zMi4KCiAgIGZ1bmN0 aW9uIEdldF9XaW5kb3cgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLldpbmRv dy5HZGtfV2luZG93OwogICAtLSAgVGhlIHdpbmRvdyB0aGUgZXZlbnQgb2NjdXJlZCBvbi4KCiAg IGZ1bmN0aW9uIEdldF9UaW1lICAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR3Vp bnQzMjsKICAgLS0gIFRpbWUgd2hlbiB0aGUgZXZlbnQgb2NjdXJlZC4KCiAgIGZ1bmN0aW9uIEdl dF9YICAgICAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RvdWJsZTsKICAgLS0g IEhvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgbW91c2Ugd2hlbiB0aGUgZXZlbnQgb2NjdXJl ZC4KICAgLS0gIFRoZSBjb29yZGluYXRlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCB3aW5k b3cuCgogICBmdW5jdGlvbiBHZXRfWSAgICAgICAgIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0 dXJuIEdkb3VibGU7CiAgIC0tICBWZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSBtb3VzZSB3aGVu IHRoZSBldmVudCBvY2N1cmVkLgogICAtLSAgVGhlIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0 byB0aGUgcGFyZW50IHdpbmRvdy4KCiAgIGZ1bmN0aW9uIEdldF9YX1Jvb3QgICAgKEV2ZW50IDog aW4gR2RrX0V2ZW50KSByZXR1cm4gR2RvdWJsZTsKICAgLS0gIEhvcml6b250YWwgY29vcmRpbmF0 ZSBvZiB0aGUgbW91c2Ugd2hlbiB0aGUgZXZlbnQgb2NjdXJlZC4KICAgLS0gIFJlbGF0aXZlIHRv IHRoZSByb290IHdpbmRvdy4KCiAgIGZ1bmN0aW9uIEdldF9ZX1Jvb3QgICAgKEV2ZW50IDogaW4g R2RrX0V2ZW50KSByZXR1cm4gR2RvdWJsZTsKICAgLS0gIFZlcnRpY2FsIGNvb3JkaW5hdGUgb2Yg dGhlIG1vdXNlIHdoZW4gdGhlIGV2ZW50IG9jY3VyZWQuCiAgIC0tICBSZWxhdGl2ZSB0byB0aGUg cm9vdCB3aW5kb3cuCgogICBmdW5jdGlvbiBHZXRfQnV0dG9uICAgIChFdmVudCA6IGluIEdka19F dmVudCkgcmV0dXJuIEd1aW50OwogICAtLSAgTnVtYmVyIG9mIHRoZSBidXR0b24gdGhhdCB3YXMg cHJlc3NlZC4KCiAgIGZ1bmN0aW9uIEdldF9TdGF0ZSAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50 KQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZGsuVHlwZXMuR2RrX01vZGlmaWVy X1R5cGU7CiAgIC0tICBTdGF0ZSBvZiB0aGUgbW91c2UgYnV0dG9ucyBhbmQga2V5Ym9hcmQga2V5 cyBqdXN0IHByaW9yIHRvIHRoZSBldmVudC4KCiAgIGZ1bmN0aW9uIEdldF9TdWJ3aW5kb3cgKEV2 ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAtLSAg Q2hpbGQgd2luZG93IGZvciB0aGUgZXZlbnQuCiAgIC0tICBGb3IgYW4gRW50ZXJfTm90aWZ5X0V2 ZW50LCB0aGlzIGlzIHNldCB0byB0aGUgaW5pdGlhbCB3aW5kb3cgZm9yIHRoZQogICAtLSAgcG9p bnRlcjsgZm9yIGFuIExlYXZlX05vdGlmeV9FdmVudCB0aGlzIGlzIHNldCB0byB0aGUgd2luZG93 IG9jY3VwaWVkCiAgIC0tICBieSB0aGUgcG9pbnRlciBpbiBpdHMgbGFzdCBwb3NpdGlvbi4KCiAg IGZ1bmN0aW9uIEdldF9Nb2RlIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdkay5UeXBl cy5HZGtfQ3Jvc3NpbmdfTW9kZTsKICAgLS0gIFJldHVybiB0aGUgbW9kZSBvZiBhbiBFdmVudC4K ICAgLS0gIFNldCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBldmVudHMgYXJlIG5vcm1hbCBldmVu dHMsIHBzZXVkby1tb3Rpb24KICAgLS0gIGV2ZW50cyB3aGVuIGEgZ3JhYiBhY3RpdmF0ZXMgb3Ig cHNldWRvLW1vdGlvbiBldmVudHMgd2hlbiBhIGdyYWIKICAgLS0gIGRlYXRpdmF0ZXMuCgogICBm dW5jdGlvbiBHZXRfRGV0YWlsIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdkay5UeXBl cy5HZGtfTm90aWZ5X1R5cGU7CiAgIC0tICBTZXQgdG8gaW5kaWNhdGUgdGhlIG5vdGlmeSBkZXRh aWxzLgogICAtLSAgTW9zdCBhcHBsaWNhdGlvbnMgY2FuIGlnbm9yZSBldmVudHMgd2l0aCBhIE5v dGlmeSBWaXJ0dWFsIG9yIGEKICAgLS0gIE5vdGlmeV9Ob25fTGluZWFyX1ZpcnR1YWwgZGV0YWls LgoKICAgZnVuY3Rpb24gR2V0X0ZvY3VzIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEJv b2xlYW47CiAgIC0tICBTZXQgdG8gdHJ1ZSBpZiB0aGUgd2luZG93IGZvciB0aGUgZXZlbnQgaXMg dGhlIGZvY3VzIHdpbmRvdy4KCiAgIGZ1bmN0aW9uIEdldF9QcmVzc3VyZSAgKEV2ZW50IDogaW4g R2RrX0V2ZW50KSByZXR1cm4gR2RvdWJsZTsKICAgLS0gIFRoaXMgaXMgc2V0IHRvIGEgY29uc3Rh bnQgaW4gdGhlIGd0aysgY29kZSBpdHNlbGYsIHNvIGl0CiAgIC0tICBpcyBtb3N0IHByb2JhYmx5 IHVzZWxlc3MuLi4gSXRzIHZhbHVlIGlzIDAuNS4KICAgLS0gIEl0IGlzIG9ubHkgdXNlZCB3aXRo IHNvbWUgc3BlY2lhbCBpbnB1dCBkZXZpY2VzLCBsaWtlIGRyYXdpbmcKICAgLS0gIHRhYmxldHMs Li4uCgogICBmdW5jdGlvbiBHZXRfWHRpbHQgICAgIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0 dXJuIEdkb3VibGU7CiAgIC0tICBUaGlzIGlzIHNldCB0byBhIGNvbnN0YW50IGluIHRoZSBndGsr IGNvZGUgaXRzZWxmLCBzbyBpdAogICAtLSAgaXMgbW9zdCBwcm9iYWJseSB1c2VsZXNzLi4uIEl0 cyB2YWx1ZSBpcyAwLjAuCiAgIC0tICBJdCBpcyBvbmx5IHVzZWQgd2l0aCBzb21lIHNwZWNpYWwg aW5wdXQgZGV2aWNlcywgbGlrZSBkcmF3aW5nCiAgIC0tICB0YWJsZXRzLC4uLgoKICAgZnVuY3Rp b24gR2V0X1l0aWx0ICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZG91YmxlOwog ICAtLSAgVGhpcyBpcyBzZXQgdG8gYSBjb25zdGFudCBpbiB0aGUgZ3RrKyBjb2RlIGl0c2VsZiwg c28gaXQKICAgLS0gIGlzIG1vc3QgcHJvYmFibHkgdXNlbGVzcy4uLiBJdHMgdmFsdWUgaXMgMC4w LgogICAtLSAgSXQgaXMgb25seSB1c2VkIHdpdGggc29tZSBzcGVjaWFsIGlucHV0IGRldmljZXMs IGxpa2UgZHJhd2luZwogICAtLSAgdGFibGV0cywuLi4KCiAgIGZ1bmN0aW9uIEdldF9XaWR0aCAo RXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHaW50MTY7CiAgIC0tICBHZXQgdGhlIHdpZHRo IGluIGEgY29uZmlndXJlIGV2ZW50LgoKICAgZnVuY3Rpb24gR2V0X0hlaWdodCAoRXZlbnQgOiBp biBHZGtfRXZlbnQpIHJldHVybiBHaW50MTY7CiAgIC0tICBHZXQgdGhlIGhlaWdodCBpbiBhIGNv bmZpZ3VyZSBldmVudC4KCiAgIGZ1bmN0aW9uIEdldF9Tb3VyY2UKICAgICAoRXZlbnQgOiBpbiBH ZGtfRXZlbnQpIHJldHVybiBHZGsuVHlwZXMuR2RrX0lucHV0X1NvdXJjZTsKICAgLS0gIFNldCB0 byBhIGNvbnN0YW50IGZvciBub3cgaW4gdGhlIGd0aysgc291cmNlLi4uIFByb2JhYmx5IHVzZWxl c3MuCgogICBmdW5jdGlvbiBHZXRfRGV2aWNlX0lkCiAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50 KSByZXR1cm4gR2RrLlR5cGVzLkdka19EZXZpY2VfSWQ7CiAgIC0tICBTZXQgdG8gYSBjb25zdGFu dCBmb3Igbm93IGluIHRoZSBndGsrIHNvdXJjZS4uLiBQcm9iYWJseSB1c2VsZXNzLgogICAtLSAg U2luY2UgbXVsdGlwbGUgaW5wdXQgZGV2aWNlcyBjYW4gYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1l LCBsaWtlIGEgbW91c2UKICAgLS0gIGFuZCBhIGdyYXBoaWMgdGFibGV0LCB0aGlzIGluZGljYXRl ZCB3aGljaCBvbmUgZ2VuZXJhdGVkIHRoZSBldmVudC4KCiAgIGZ1bmN0aW9uIEdldF9BcmVhIChF dmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIFJlY3RhbmdsZS5HZGtfUmVjdGFuZ2xlOwogICAt LSAgVGhlIG1pbmltYWwgYXJlYSBvbiB3aGljaCB0aGUgZXZlbnQgYXBwbGllcy4KICAgLS0gIEZv ciBFeHBvc2VfRXZlbnRzLCB0aGlzIGlzIHRoZSBtaW5pbWFsIGFyZWEgdG8gcmVkcmF3LgoKICAg ZnVuY3Rpb24gR2V0X0NvdW50IChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdpbnQ7CiAg IC0tICBOdW1iZXIgb2YgRXhwb3NlX0V2ZW50cyB0aGF0IGFyZSB0byBmb2xsb3cgdGhpcyBvbmUu CiAgIC0tICBNb3N0IGFwcGxpY2F0aW9ucyBjYW4gaWdub3JlIHRoZSBldmVudCBpZiBDb3VudCBp cyBub3QgMCwgd2hpY2ggYWxzbwogICAtLSAgYWxsb3dzIGZvciBvcHRpbWl6YXRpb25zLgoKICAg ZnVuY3Rpb24gR2V0X0luIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEJvb2xlYW47CiAg IC0tICBUcnVlIGlmIHRoZSB3aW5kb3cgaGFzIGdhaW5lZCB0aGUgZm9jdXMsIEZhbHNlIG90aGVy d2lzZS4KCiAgIGZ1bmN0aW9uIEdldF9Jc19IaW50IChFdmVudCA6IGluIEdka19FdmVudCkgcmV0 dXJuIEJvb2xlYW47CiAgIC0tICA/Pz8KCiAgIGZ1bmN0aW9uIEdldF9LZXlfVmFsIChFdmVudCA6 IGluIEdka19FdmVudCkgcmV0dXJuIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgIC0tICBDb2Rl IG9mIHRoZSBrZXkgdGhhdCB3YXMgcHJlc3NlZCAoYW5kIHRoYXQgZ2VuZXJhdGVkIHRoZSBldmVu dC4KCiAgIGZ1bmN0aW9uIEdldF9TdHJpbmcgIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJu IFN0cmluZzsKICAgLS0gIFN5bWJvbCBvZiB0aGUga2V5IHRoYXQgd2FzIHByZXNzZWQsIGFzIGEg c3RyaW5nLgoKICAgZnVuY3Rpb24gR2V0X0F0b20gKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1 cm4gR2RrLlR5cGVzLkdka19BdG9tOwogICAtLSAgSW5kaWNhdGUgd2hpY2ggcHJvcGVydHkgaGFz IGNoYW5nZWQuCiAgIC0tICA/Pz8gQXRvbSBzaG91bGQgbm90IGJlIGEgR3VpbnQKCiAgIGZ1bmN0 aW9uIEdldF9Qcm9wZXJ0eV9TdGF0ZSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHdWlu dDsKICAgLS0gID8/PyBUaGUgcmV0dXJuIHR5cGUgc2hvdWxkIGJlIGNoYW5nZWQuCgogICBmdW5j dGlvbiBHZXRfVmlzaWJpbGl0eV9TdGF0ZQogICAgIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0 dXJuIEdkay5UeXBlcy5HZGtfVmlzaWJpbGl0eV9TdGF0ZTsKICAgLS0gIFJldHVybiB0aGUgbmV3 IHZpc2liaWxpdHkgc3RhdGUgZm9yIHRoZSB3aW5kb3cuCgogICBmdW5jdGlvbiBHZXRfU2VsZWN0 aW9uIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdkay5UeXBlcy5HZGtfQXRvbTsKICAg LS0gIFdoYXQgd2FzIHNlbGVjdGVkIGluIHRoZSB3aW5kb3cuLi4KCiAgIGZ1bmN0aW9uIEdldF9U YXJnZXQgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVzLkdka19BdG9tOwog ICAtLSAgPz8/CgogICBmdW5jdGlvbiBHZXRfUHJvcGVydHkgKEV2ZW50IDogaW4gR2RrX0V2ZW50 KSByZXR1cm4gR2RrLlR5cGVzLkdka19BdG9tOwogICAtLSAgPz8/CgogICBmdW5jdGlvbiBHZXRf UmVxdWVzdG9yIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEd1aW50MzI7CiAgIC0tICA/ Pz8KCiAgIGZ1bmN0aW9uIEdldF9NZXNzYWdlX1R5cGUgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSBy ZXR1cm4gR2RrLlR5cGVzLkdka19BdG9tOwogICAtLSAgPz8/CgogICBmdW5jdGlvbiBHZXRfRGF0 YSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGtfRXZlbnRfQ2xpZW50X0RhdGE7CiAg IC0tICA/Pz8KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0t IE1vZGlmeWluZyB0aGUgZmllbGRzIG9mIGFuIGV2ZW50IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X1dpbmRvdyAoRXZlbnQgOiBp biBHZGtfRXZlbnQ7IFdpbiA6IEdkay5XaW5kb3cuR2RrX1dpbmRvdyk7CiAgIC0tICBTZXQgdGhl IFdpbmRvdyBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfWCAgICAgIChFdmVu dCA6IGluIEdka19FdmVudDsgWCA6IEdkb3VibGUpOwogICAtLSAgU2V0IHRoZSBYIGZpZWxkIG9m IGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9ZICAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50 OyBZIDogR2RvdWJsZSk7CiAgIC0tICBTZXQgdGhlIFkgZmllbGQgb2YgYW4gZXZlbnQuCgogICBw cm9jZWR1cmUgU2V0X1hyb290ICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IFhyb290IDogR2RvdWJs ZSk7CiAgIC0tICBTZXQgdGhlIFhyb290IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJl IFNldF9Zcm9vdCAgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBZcm9vdCA6IEdkb3VibGUpOwogICAt LSAgU2V0IHRoZSBZcm9vdCBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfV2lk dGggIChFdmVudCA6IGluIEdka19FdmVudDsgV2lkdGggOiBHaW50MTYpOwogICAtLSAgU2V0IHRo ZSBXaWR0aCBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfSGVpZ2h0IChFdmVu dCA6IGluIEdka19FdmVudDsgSGVpZ2h0IDogR2ludDE2KTsKICAgLS0gIFNldCB0aGUgSGVpZ2h0 IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9CdXR0b24gKEV2ZW50IDogaW4g R2RrX0V2ZW50OyBCdXR0b24gOiBHdWludCk7CiAgIC0tICBTZXQgdGhlIEJ1dHRvbiBmaWVsZCBv ZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfVGltZSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7 IFRpbWUgOiBHdWludDMyKTsKICAgLS0gIFNldCB0aGUgdGltZSBmb3IgdGhlIGV2ZW50LgogICAt LSAgSWYgVGltZSBpcyAwLCB0aGVuIGl0IGlzIHNldCB0byB0aGUgY3VycmVudCB0aW1lLgoKICAg cHJvY2VkdXJlIFNldF9TdGF0ZSAgKEV2ZW50IDogaW4gR2RrX0V2ZW50OwogICAgICAgICAgICAg ICAgICAgICAgICAgU3RhdGUgOiBpbiBHZGsuVHlwZXMuR2RrX01vZGlmaWVyX1R5cGUpOwogICAt LSAgU2V0IHRoZSBTdGF0ZSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfU3Vi d2luZG93IChFdmVudCAgOiBpbiBHZGtfRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBXaW5kb3cgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3cpOwogICAtLSAgU2V0IHRoZSBTdWJ3 aW5kb3cgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X01vZGUgICAoRXZlbnQg OiBpbiBHZGtfRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBNb2RlICA6IGluIEdkay5U eXBlcy5HZGtfQ3Jvc3NpbmdfTW9kZSk7CiAgIC0tICBTZXQgdGhlIE1vZGUgZmllbGQgb2YgYW4g ZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X0RldGFpbCAoRXZlbnQgIDogaW4gR2RrX0V2ZW50Owog ICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsIDogaW4gR2RrLlR5cGVzLkdka19Ob3RpZnlf VHlwZSk7CiAgIC0tICBTZXQgdGhlIERldGFpbCBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2Nl ZHVyZSBTZXRfRm9jdXMgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBIYXNfRm9jdXMgOiBCb29sZWFu KTsKICAgLS0gIFNldCB0aGUgRm9jdXMgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUg U2V0X0FyZWEgIChFdmVudCA6IGluIEdka19FdmVudDsgQXJlYSA6IFJlY3RhbmdsZS5HZGtfUmVj dGFuZ2xlKTsKICAgLS0gIFNldCB0aGUgQXJlYSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2Nl ZHVyZSBTZXRfSW4gICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBGb2N1c19JbiA6IEJvb2xlYW4p OwogICAtLSAgU2V0IHRoZSBJbiBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRf SXNfSGludCAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IElzX0hpbnQgOiBCb29sZWFuKTsKICAgLS0g IFNldCB0aGUgSXNfSGludCBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfS2V5 X1ZhbCAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IEtleSA6IEdkay5UeXBlcy5HZGtfS2V5X1R5cGUp OwogICAtLSAgU2V0IHRoZSBLZXlfVmFsIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJl IFNldF9BdG9tIChFdmVudCA6IGluIEdka19FdmVudDsgQXRvbSA6IEdkay5UeXBlcy5HZGtfQXRv bSk7CiAgIC0tICBTZXQgdGhlIEF0b20gZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUg U2V0X1Byb3BlcnR5X1N0YXRlIChFdmVudCA6IGluIEdka19FdmVudDsgU3RhdGUgOiBHdWludCk7 CiAgIC0tICBTZXQgdGhlIFByb3BlcnR5X1N0YXRlIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJv Y2VkdXJlIFNldF9WaXNpYmlsaXR5X1N0YXRlIChFdmVudCA6IGluIEdka19FdmVudDsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSA6IEdkay5UeXBlcy5HZGtfVmlzaWJp bGl0eV9TdGF0ZSk7CiAgIC0tICBTZXQgdGhlIFZpc2liaWxpdHlfU3RhdGUgZmllbGQgb2YgYW4g ZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X1NlbGVjdGlvbiAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb24gOiBHZGsuVHlwZXMuR2RrX0F0 b20pOwogICAtLSAgU2V0IHRoZSBTZWxlY3Rpb24gZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9j ZWR1cmUgU2V0X1RhcmdldCAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IFRhcmdldCA6IEdkay5UeXBl cy5HZGtfQXRvbSk7CiAgIC0tICBTZXQgdGhlIFRhcmdldCBmaWVsZCBvZiBhbiBldmVudC4KCiAg IHByb2NlZHVyZSBTZXRfUHJvcGVydHkgKEV2ZW50IDogaW4gR2RrX0V2ZW50OwogICAgICAgICAg ICAgICAgICAgICAgICAgICBQcm9wZXJ0eSA6IEdkay5UeXBlcy5HZGtfQXRvbSk7CiAgIC0tICBT ZXQgdGhlIFByb3BlcnR5IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9SZXF1 ZXN0b3IgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBSZXF1ZXN0b3IgOiBHdWludDMyKTsKICAgLS0g IFNldCB0aGUgUmVxdWVzdG9yIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9N ZXNzYWdlX1R5cGUgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBUeXAgOiBHZGsuVHlwZXMuR2RrX0F0 b20pOwogICAtLSAgU2V0IHRoZSBNZXNzYWdlX1R5cGUgZmllbGQgb2YgYW4gZXZlbnQuCgogICBw cm9jZWR1cmUgU2V0X1N0cmluZyAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IFN0ciA6IFN0cmluZyk7 CiAgIC0tICBTZXQgdGhlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggYW4gZXZlbnQuCgogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZW5lcmFsIGZ1bmN0aW9ucyAtLQogICAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIERlZXBfQ29weSAoRnJvbSA6IEdka19FdmVu dDsgVG8gOiBvdXQgR2RrX0V2ZW50KTsKICAgLS0gIERlZXAgY29weSBmb3IgYW4gZXZlbnQuIFRo ZSBDIHN0cnVjdHVyZSBpcyBpdHNlbGYgZHVwbGljYXRlZC4KICAgLS0gIFlvdSBuZWVkIHRvIGRl YWxsb2NhdGVkIGl0IHlvdXJzZWxmIHdpdGggYSBjYWxsIHRvIEZyZWUgYmVsb3cuCgogICBwcm9j ZWR1cmUgR2V0X0dyYXBoaWNzX0V4cG9zZQogICAgIChFdmVudCAgOiBvdXQgR2RrX0V2ZW50X0V4 cG9zZTsKICAgICAgV2luZG93IDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93KTsKICAgLS0gIFdh aXRzIGZvciBhIEdyYXBoaWNzRXhwb3NlIG9yIE5vRXhwb3NlIGV2ZW50CiAgIC0tICBJZiBpdCBn ZXRzIGEgR3JhcGhpY3NFeHBvc2UgZXZlbnQsIGl0IHJldHVybnMgYSBwb2ludGVyIHRvIGl0LAog ICAtLSAgb3RoZXJ3aXNlIGl0IHJldHVybnMgYW4gZXZlbnQgZm9yIHdoaWNoIElzX0NyZWF0ZWQg aXMgRmFsc2UuCiAgIC0tCiAgIC0tICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGltcGxl bWVudCBzY3JvbGxpbmc6IHlvdSBtdXN0IGNhbGwKICAgLS0gIEdkay5HQy5TZXRfRXhwb3N1cmVz IHdpdGggVHJ1ZSBvbiB0aGUgR0MgeW91IGFyZSB1c2luZyBmb3IgdGhlCiAgIC0tICBkcmF3aW5n LCBzbyB0aGF0IGEgZXZlbnRzIGFyZSBnZW5lcmF0ZWQgZm9yIG9ic2N1cmVkIGFyZWFzIGFuZCBl dmVyeQogICAtLSAgdGltZSBhIG5ldyBwYXJ0IG9mIHRoZSB3aWRnZXQgaXMgZHJhd24uIEhvd2V2 ZXIsIHRoZXJlIGlzIGEgcmFjZQogICAtLSAgY29uZGl0aW9uIGlmIG11bHRpcGxlIHNjcm9sbHMg aGFwcGVuIGJlZm9yZSB5b3UgaGF2ZSBmaW5pc2hlZAogICAtLSAgcHJvY2Vzc2luZyB0aGUgZmly c3Qgb25lLiBBIHdvcmthcm91bmQgaXMgdG8gY2FsbCBHZXRfR3JhcGhpY3NfRXhwb3NlCiAgIC0t ICBhZnRlciBldmVyeSBzY3JvbGwgdW50aWwgaXQgcmV0dXJucyBhIG51bGwgZXZlbnQuCgogICBm dW5jdGlvbiBFdmVudHNfUGVuZGluZyByZXR1cm4gQm9vbGVhbjsKICAgLS0gIElzIHRoZXJlIGFu eSBldmVudCBwZW5kaW5nIG9uIHRoZSBxdWV1ZSA/CgogICBwcm9jZWR1cmUgR2V0IChFdmVudCA6 IG91dCBHZGtfRXZlbnQpOwogICAtLSAgR2V0IHRoZSBuZXh0IGV2ZW50IG9uIHRoZSBxdWV1ZS4K CiAgIHByb2NlZHVyZSBQZWVrIChFdmVudCA6IG91dCBHZGtfRXZlbnQpOwogICAtLSAgTG9vayBh dCB0aGUgbmV4dCBldmVudCBvbiB0aGUgcXVldWUsIGJ1dCBsZWF2ZSBpZiB0aGVyZS4KCiAgIHBy b2NlZHVyZSBQdXQgKEV2ZW50IDogaW4gR2RrX0V2ZW50KTsKICAgLS0gIEFkZCBhbiBldmVudCBv biB0aGUgcXVldWUgLSBCZXR0ZXIgdG8gdXNlIEd0ay5TaWduYWwuRW1pdF9CeV9OYW1lCgogICBw cm9jZWR1cmUgU2V0X1Nob3dfRXZlbnRzIChTaG93X0V2ZW50cyA6IGluIEJvb2xlYW4gOj0gVHJ1 ZSk7CiAgIC0tICBGb3IgZGVidWcgcHVycG9zZXMsIHlvdSBjYW4gY2hvb3NlIHdoZXRoZXIgeW91 IHdhbnQgdG8gc2VlIHRoZSBldmVudHMKICAgLS0gIEd0a0FkYSByZWNlaXZlcy4KCiAgIGZ1bmN0 aW9uIEdldF9TaG93X0V2ZW50cyByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFJldHVybiB0aGUgY3Vy cmVudCBzdGF0ZSBvZiBTaG93X0V2ZW50cy4KCiAgIHByb2NlZHVyZSBTZW5kX0NsaWVudF9NZXNz YWdlX1RvX0FsbCAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpOwogICAtLSAgTG93IGxldmVsIHJvdXRp bmUgdG8gc2VuZCBhbiBFdmVudCB0byBldmVyeSB3aW5kb3cuCgogICBmdW5jdGlvbiBTZW5kX0Ns aWVudF9NZXNzYWdlCiAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50OwogICAgICBYaWQgICA6IGlu IEd1aW50MzIpIHJldHVybiBCb29sZWFuOwogICAtLSAgTG93IGxldmVsIHJvdXRpbmUgdG8gc2Vu ZCBhbiBFdmVudCB0byBhIHNwZWNpZmllZCBYIHdpbmRvdy4KCiAgIHByb2NlZHVyZSBBbGxvY2F0 ZQogICAgIChFdmVudCAgICAgIDogb3V0IEdka19FdmVudDsKICAgICAgRXZlbnRfVHlwZSA6IGlu IFR5cGVzLkdka19FdmVudF9UeXBlOwogICAgICBXaW5kb3cgICAgIDogaW4gR2RrLldpbmRvdy5H ZGtfV2luZG93KTsKICAgLS0gIENyZWF0ZSBhbiBldmVudCwgd2hvc2UgZmllbGRzIGFyZSB1bmlu aXRpYWxpemVkLgogICAtLSAgWW91IG5lZWQgdG8gdXNlIHRoZSBmdW5jdGlvbiBTZXRfKiBhYm92 ZSB0byBtb2RpZnkgdGhlbSwgYmVmb3JlIHlvdSBjYW4KICAgLS0gIHNlbmQgdGhlIGV2ZW50IHdp dGggRW1pdF9CeV9OYW1lLgogICAtLSAgISFOb3RlISE6IFRoZSBldmVudCBoYXMgdG8gYmUgZnJl ZWQgaWYgeW91IGhhdmUgY2FsbGVkIHRoaXMgZnVuY3Rpb24uCiAgIC0tICBVc2UgdGhlIGZ1bmN0 aW9uIEZyZWUuCgogICBwcm9jZWR1cmUgRnJlZSAoRXZlbnQgOiBpbiBvdXQgR2RrX0V2ZW50KTsK ICAgLS0gIEZyZWUgdGhlIG1lbW9yeSAoYW5kIEMgc3RydWN0dXJlKSBhc3NvY2lhdGVkIHdpdGgg YW4gZXZlbnQuCiAgIC0tICBZb3UgbmVlZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gb25seSBpZiB0 aGUgZXZlbnQgd2FzIGNyZWF0ZWQgdGhyb3VnaAogICAtLSAgQWxsb2NhdGUsIG5vdCBpZiBpdCB3 YXMgY3JlYXRlZCBieSBHdGtBZGEgaXRzZWxmIChvciB5b3Ugd291bGQgZ2V0CiAgIC0tICBhIHNl Z21lbnRhdGlvbiBmYXVsdCkuCgogICB0eXBlIEV2ZW50X0hhbmRsZXJfRnVuYyBpcyBhY2Nlc3Mg cHJvY2VkdXJlCiAgICAgKEV2ZW50IDogU3lzdGVtLkFkZHJlc3M7IERhdGEgOiBTeXN0ZW0uQWRk cmVzcyk7CiAgIC0tICBGdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgbmV3IGV2ZW50IGhh bmRsZXIuCiAgIC0tICBVc2UgRnJvbV9BZGRyZXNzIGJlbG93IHRvIGNvbnZlcnQgdG8gYSByZWFs IGV2ZW50IHR5cGUuCiAgIC0tICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBkaXNwYXRjaCBhbGwgdGhl IGV2ZW50cyBwcm9wZXJseSwgc2luY2UgaXQgcmVwbGFjZXMKICAgLS0gIGNvbXBsZXRseSB0aGUg ZGVmYXVsdCBldmVudCBoYW5kbGVyLiBIb3dldmVyLCBpdCBjYW4gY2FsbAogICAtLSAgR3RrLk1h aW4uRG9fRXZlbnQgdG8gdGFrZSBjYXJlIG9mIHRoZSBldmVudHMgaXQgZG9lcyBub3Qga25vdyBo b3cgdG8KICAgLS0gIGhhbmRsZS4KCiAgIHByb2NlZHVyZSBFdmVudF9IYW5kbGVyX1NldAogICAg IChGdW5jIDogRXZlbnRfSGFuZGxlcl9GdW5jOyBEYXRhIDogU3lzdGVtLkFkZHJlc3MpOwogICAt LSAgU2V0IHVwIGEgbmV3IGV2ZW50IGhhbmRsZXIuCiAgIC0tICBUaGlzIGhhbmRsZXIgcmVwbGFj ZXMgdGhlIGRlZmF1bHQgR3RrQWRhIGV2ZW50IGhhbmRsZXIsIGFuZCB0aHVzIHNob3VsZAogICAt LSAgbWFrZSBzdXJlIHRoYXQgYWxsIGV2ZW50cyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuCiAgIC0t CiAgIC0tICBOb3RlIHRoYXQgbWFuYWdpbmcgdGhlIG1lbW9yeSBmb3IgRGF0YSBpcyB5b3VyIHJl c3BvbnNhYmlsaXR5LCBhbmQKICAgLS0gIERhdGEgaXMgcGFzc2VkIGFzIGlzIHRvIEZ1bmMuCgog ICBmdW5jdGlvbiBGcm9tX0FkZHJlc3MgKEMgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEdka19F dmVudDsKICAgLS0gIENvbnZlcnQgYSBDIGhhbmRsZXIgdG8gdGhlIG1hdGNoaW5nIEV2ZW50IHN0 cnVjdHVyZS4KCiAgIGZ1bmN0aW9uIFRvX0FkZHJlc3MgKEMgOiBHZGtfRXZlbnQpIHJldHVybiBT eXN0ZW0uQWRkcmVzczsKICAgLS0gIENvbnZlcnQgYW4gZXZlbnQgdG8gdGhlIHVuZGVybHlpbmcg QyBoYW5kbGVyLgoKICAgZnVuY3Rpb24gSXNfQ3JlYXRlZCAoRSA6IEdka19FdmVudCkgcmV0dXJu IEJvb2xlYW47CiAgIC0tICBSZXR1cm4gVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBDIGV2ZW50IGhh cyBiZWVuIGNyZWF0ZWQuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIERlc2lnbiBpc3N1 ZXMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgU2VlIGdkay1ldmVudC5hZGIgZm9y IHNvbWUgb2YgdGhlIGRlc2lnbiBpc3N1ZXMgYmVoaW5nIHRoYXQgcGFja2FnZS4KCnByaXZhdGUK ICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0V2ZW50X1R5cGUsICJhZGFfZ2RrX2V2ZW50X2dldF90 eXBlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9XaW5kb3csICJhZGFfZ2RrX2V2ZW50X2dl dF93aW5kb3ciKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1RpbWUsICJnZGtfZXZlbnRfZ2V0 X3RpbWUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUHV0LCAiZ2RrX2V2ZW50X3B1dCIpOwogICBw cmFnbWEgSW1wb3J0CiAgICAgKEMsIFNlbmRfQ2xpZW50X01lc3NhZ2VfVG9fQWxsLCAiZ2RrX2V2 ZW50X3NlbmRfY2xpZW50bWVzc2FnZV90b2FsbCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRf V2luZG93LCAiYWRhX2dka19ldmVudF9zZXRfd2luZG93Iik7CgplbmQgR2RrLkV2ZW50OwoAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9nZGstcmVjdGFuZ2xlLmFkcwAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDA1NDA2ADA3NTUx MTA3NjMyADAxNDU1MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAB1c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBH dGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAt LQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5 OC0xOTk5ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3Qs IEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQot LSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAg ICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT QS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBn ZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRo IG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0 ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRh YmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlz ICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciBy ZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQg YnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKd2l0aCBH bGliOyB1c2UgR2xpYjsKCnBhY2thZ2UgR2RrLlJlY3RhbmdsZSBpcwoKICAgdHlwZSBHZGtfUmVj dGFuZ2xlIGlzIHJlY29yZAogICAgICBYICAgICAgOiBHaW50MTY7CiAgICAgIFkgICAgICA6IEdp bnQxNjsKICAgICAgV2lkdGggIDogR3VpbnQxNjsKICAgICAgSGVpZ2h0IDogR3VpbnQxNjsKICAg ZW5kIHJlY29yZDsKICAgcHJhZ21hIFBhY2sgKEdka19SZWN0YW5nbGUpOwoKICAgRnVsbF9BcmVh IDogY29uc3RhbnQgR2RrX1JlY3RhbmdsZTsKICAgLS0gIFRoZSBjb25zdGFudCBhYm92ZSBjYW4g YmUgdXNlZCBpbiBHdGsuV2lkZ2V0LkRyYXcgd2hlbiB5b3Ugd2FudCB0bwogICAtLSAgcmVkcmF3 IHRoZSB3aG9sZSB3aWRnZXQKCiAgIHByb2NlZHVyZSBJbnRlcnNlY3QKICAgICAoU3JjMSAgICAg IDogaW4gICAgIEdka19SZWN0YW5nbGU7CiAgICAgIFNyYzIgICAgICA6IGluICAgICBHZGtfUmVj dGFuZ2xlOwogICAgICBEZXN0ICAgICAgOiAgICBvdXQgR2RrX1JlY3RhbmdsZTsKICAgICAgSW50 ZXJzZWN0IDogICAgb3V0IEJvb2xlYW4pOwoKICAgcHJvY2VkdXJlIFVuaW9uCiAgICAgKFNyYzEg OiBpbiAgICAgR2RrX1JlY3RhbmdsZTsKICAgICAgU3JjMiA6IGluICAgICBHZGtfUmVjdGFuZ2xl OwogICAgICBEZXN0IDogICAgb3V0IEdka19SZWN0YW5nbGUpOwoKcHJpdmF0ZQoKICAgRnVsbF9B cmVhIDogY29uc3RhbnQgR2RrX1JlY3RhbmdsZSA6PQogICAgIChHaW50MTYnRmlyc3QsIEdpbnQx NidGaXJzdCwgR3VpbnQxNidMYXN0LCBHdWludDE2J0xhc3QpOwoKZW5kIEdkay5SZWN0YW5nbGU7 CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnbmF0YnVnL2dkay13aW5kb3cuYWRzAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAMDEwMDY0NAAwMDAxNzUxADAwMDAwMDAAMDAwMDAwMjcxMzcAMDc1NTExMDc2MzIA MDE0MTIwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFy ICAAc3BhegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAt IEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBC cm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0t Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAg ICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFz IGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNz IGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIg ZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMg bm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8g YmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0t IGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMg d2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUg IEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgQSBHZGtfV2lu ZG93IGlzIHRoZSBwaHlzaWNhbCB3aW5kb3cgdGhhdCBhcHBlYXJzIG9uIHRoZSBzY3JlZW4uCi0t ICBUaGlzIGlzIHRoZSBsb3ctbGV2ZWwgc3RydWN0dXJlIGtub3duIHRvIHRoZSBYIHNlcnZlciBv ciB0byBXaW4zMi4KLS0gIEFsbCB0aGUgd2lkZ2V0cyBhcmUgaW50ZXJuYWxseSBhc3NvY2lhdGVk IHdpdGggYSBzcGVjaWZpYyBHZGtfV2luZG93LAotLSAgdGhhdCBob2xkcyBhdHRyaWJ1dGVzIHN1 Y2ggYXMgdGhlIHdpbmRvdyBkZWNvcmF0aW9uLCB3aGV0aGVyIHRoZSB3aW5kb3cKLS0gIGNhbiBi ZSBpbnRlcmFjdGl2ZWx5IHJlc2l6ZWQsLi4uCi0tCi0tICBPbiBzb21lIHN5c3RlbXMsIHRoZSBn cmFwaGljIHNlcnZlciBrbm93cyBob3cgdG8gZGlzcGxheSBub24tcmVjdGFuZ3VsYXIKLS0gIHdp bmRvd3MgKHRoaXMgaXMgcGFydCBvZiB0aGUgWCBleHRlbnNpb25zKS4KLS0KLS0gIElmIHlvdSBz aW1wbHkgd2FudCB0byBjcmVhdGUgYSBzaW1wbHkgd2luZG93LCB5b3Ugc2hvdWxkIGluc3RlYWQg bG9vawotLSAgYXQgdGhlIGZ1bmN0aW9ucyBwcm92aWRlZCBpbiBHdGsuV2luZG93IGFuZCBHdGsu V2lkZ2V0LCB3aGljaCBhcmUgaGlnaGVyCi0tICBsZXZlbCB0aGFuIHRoZXNlLiBTZWUgYWxzbyB0 aGUgZnVuY3Rpb24gR3RrLldpZGdldC5HZXRfV2luZG93IHRvIGdldCB0aGUKLS0gIEdka19XaW5k b3cgYXNzb2NpYXRlZCB3aXRoIGEgd2lkZ2V0LiBCZSBhd2FyZSB0aGF0IHNvbWUgb2YgdGhlbSBk b24ndCBoYXZlCi0tICBzdWNoIHdpbmRvd3MhCi0tCi0tICBTY3JvbGxpbmcgY2FuIGJlIGltcGxl bWVudGVkIGluIHNldmVyYWwgd2F5cyB3aXRoIEd0a0FkYSAodG9wbGV2ZWwKLS0gIHNjcm9sbGlu ZyBzaG91bGQgYmUgZG9uZSB3aXRoIHRoZSBHdGtfU2Nyb2xsZWRfV2luZG93IHdpZGdldCwgYnV0 IHlvdQotLSAgbWlnaHQgd2FudCB0byBoYW5kbGUgc2Nyb2xsaW5nIHlvdXJzZWxmKS4gU2VlIHRo ZSBmdW5jdGlvbgotLSAgR2RrLkV2ZW50LkdldF9HcmFwaGljc19FeHBvc2UgZm9yIG1vcmUgaW5m b3JtYXRpb24uCi0tICA8Y192ZXJzaW9uPjEuMi43PC9jX3ZlcnNpb24+Cgp3aXRoIFN5c3RlbTsK d2l0aCBHbGliOyB1c2UgR2xpYjsKd2l0aCBHbGliLkdsaXN0Owp3aXRoIEdkazsKd2l0aCBHZGsu Q29sb3I7CndpdGggR2RrLkN1cnNvcjsKd2l0aCBHZGsuVHlwZXM7CndpdGggR2RrLlZpc3VhbDsK d2l0aCBHZGsuV2luZG93X0F0dHI7CndpdGggVW5jaGVja2VkX0NvbnZlcnNpb247CgpwYWNrYWdl IEdkay5XaW5kb3cgaXMKCiAgIHN1YnR5cGUgR2RrX1dpbmRvdyBpcyBHZGsuR2RrX1dpbmRvdzsK CiAgIE51bGxfV2luZG93IDogY29uc3RhbnQgR2RrX1dpbmRvdzsKCiAgIHByb2NlZHVyZSBHZGtf TmV3CiAgICAgKFdpbmRvdyAgICAgICAgICA6IG91dCBHZGtfV2luZG93OwogICAgICBQYXJlbnQg ICAgICAgICAgOiBHZGtfV2luZG93OwogICAgICBBdHRyaWJ1dGVzICAgICAgOiBHZGsuV2luZG93 X0F0dHIuR2RrX1dpbmRvd19BdHRyOwogICAgICBBdHRyaWJ1dGVzX01hc2sgOiBHZGsuVHlwZXMu R2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUpOwoKICAgcHJvY2VkdXJlIEZvcmVpZ25fTmV3IChX aW5kb3cgOiBvdXQgR2RrX1dpbmRvdzsgQW5fSWQgOiBHdWludDMyKTsKCiAgIHByb2NlZHVyZSBE ZXN0cm95IChXaW5kb3cgOiBpbiBvdXQgR2RrX1dpbmRvdyk7CiAgIC0tICBEZXN0cm95IGEgd2lu ZG93IGFuZCBhbGwgaXRzIGNoaWxkcmVuLgoKICAgcHJvY2VkdXJlIFJlZiAoV2luZG93IDogR2Rr X1dpbmRvdyk7CiAgIC0tICBJbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGFzc29jaWF0 ZWQgd2l0aCB3aW5kb3cuCgogICBwcm9jZWR1cmUgVW5yZWYgKFdpbmRvdyA6IEdka19XaW5kb3cp OwogICAtLSAgRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnRlciBhc3NvY2lhdGVkIHdpdGgg d2luZG93LgoKICAgcHJvY2VkdXJlIFdpbmRvd19BdF9Qb2ludGVyCiAgICAgKFdpbl9YICA6IG91 dCBHaW50OwogICAgICBXaW5fWSAgOiBvdXQgR2ludDsKICAgICAgV2luZG93IDogb3V0IEdka19X aW5kb3cpOwogICAtLSAgUmV0dXJuIHRoZSB3aW5kb3cgYW5kIHRoZSBjb29yZGluYXRlcyBjb3Jy ZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50CiAgIC0tICBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yLgoK ICAgcHJvY2VkdXJlIFNob3cgKFdpbmRvdyA6IEdka19XaW5kb3cpOwoKICAgcHJvY2VkdXJlIEhp ZGUgKFdpbmRvdyA6IEdka19XaW5kb3cpOwoKICAgcHJvY2VkdXJlIFdpdGhkcmF3IChXaW5kb3cg OiBHZGtfV2luZG93KTsKCiAgIHByb2NlZHVyZSBNb3ZlCiAgICAgKFdpbmRvdyA6IEdka19XaW5k b3c7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6IEdpbnQpOwoKICAgcHJvY2Vk dXJlIFJlc2l6ZQogICAgIChXaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBXaWR0aCAgOiBHaW50 OwogICAgICBIZWlnaHQgOiBHaW50KTsKCiAgIHByb2NlZHVyZSBNb3ZlX1Jlc2l6ZQogICAgIChX aW5kb3cgOiBHZGtfV2luZG93OwogICAgICBYICAgICAgOiBHaW50OwogICAgICBZICAgICAgOiBH aW50OwogICAgICBXaWR0aCAgOiBHaW50OwogICAgICBIZWlnaHQgOiBHaW50KTsKCiAgIHByb2Nl ZHVyZSBSZXBhcmVudAogICAgIChXaW5kb3cgICAgIDogR2RrX1dpbmRvdzsKICAgICAgTmV3X1Bh cmVudCA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICAgICAgOiBHaW50OwogICAgICBZICAgICAg ICAgIDogR2ludCk7CgogICBwcm9jZWR1cmUgQ2xlYXIgKFdpbmRvdyA6IEdka19XaW5kb3cpOwoK ICAgcHJvY2VkdXJlIENsZWFyX0FyZWEKICAgICAoV2luZG93IDogR2RrX1dpbmRvdzsKICAgICAg WCAgICAgIDogR2ludDsKICAgICAgWSAgICAgIDogR2ludDsKICAgICAgV2lkdGggIDogR2ludDsK ICAgICAgSGVpZ2h0IDogR2ludCk7CiAgIC0tICBEb2VzIG5vdCBnZW5lcmF0ZSBhbiBleHBvc2Ug ZXZlbnQuCgogICBwcm9jZWR1cmUgQ2xlYXJfQXJlYV9FCiAgICAgKFdpbmRvdyA6IEdka19XaW5k b3c7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6IEdpbnQ7CiAgICAgIFdpZHRo ICA6IEdpbnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwogICAtLSAgU2FtZSBhcyBDbGVhcl9BcmVh LCBidXQgZ2VuZXJhdGVzIGFuIGV4cG9zZSBldmVudC4KCiAgIHByb2NlZHVyZSBDb3B5X0FyZWEK ICAgICAoV2luZG93ICAgICAgICA6IEdka19XaW5kb3c7CiAgICAgIEdjICAgICAgICAgICAgOiBH ZGsuR2RrX0dDOwogICAgICBYICAgICAgICAgICAgIDogR2ludDsKICAgICAgWSAgICAgICAgICAg ICA6IEdpbnQ7CiAgICAgIFNvdXJjZV9XaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBTb3VyY2Vf WCAgICAgIDogR2ludDsKICAgICAgU291cmNlX1kgICAgICA6IEdpbnQ7CiAgICAgIFdpZHRoICAg ICAgICAgOiBHaW50OwogICAgICBIZWlnaHQgICAgICAgIDogR2ludCk7CgogICBwcm9jZWR1cmUg R2RrX1JhaXNlIChXaW5kb3cgOiBHZGtfV2luZG93KTsKCiAgIHByb2NlZHVyZSBMb3dlciAoV2lu ZG93IDogR2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUgU2V0X092ZXJyaWRlX1JlZGlyZWN0CiAg ICAgKFdpbmRvdyAgICAgICAgICAgIDogR2RrX1dpbmRvdzsKICAgICAgT3ZlcnJpZGVfUmVkaXJl Y3QgOiBCb29sZWFuIDo9IFRydWUpOwoKICAgcHJvY2VkdXJlIFNldF9DaGlsZF9TaGFwZXMgKFdp bmRvdyA6IEdka19XaW5kb3cpOwoKICAgcHJvY2VkdXJlIE1lcmdlX0NoaWxkX1NoYXBlcyAoV2lu ZG93IDogR2RrX1dpbmRvdyk7CgogICBmdW5jdGlvbiBJc19WaXNpYmxlIChXaW5kb3cgOiBHZGtf V2luZG93KSByZXR1cm4gQm9vbGVhbjsKCiAgIGZ1bmN0aW9uIElzX1ZpZXdhYmxlIChXaW5kb3cg OiBHZGtfV2luZG93KSByZXR1cm4gQm9vbGVhbjsKCiAgIHByb2NlZHVyZSBTZXRfSGludHMKICAg ICAoV2luZG93ICAgICA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICAgICAgOiBHaW50OwogICAg ICBZICAgICAgICAgIDogR2ludDsKICAgICAgTWluX1dpZHRoICA6IEdpbnQ7CiAgICAgIE1pbl9I ZWlnaHQgOiBHaW50OwogICAgICBNYXhfV2lkdGggIDogR2ludDsKICAgICAgTWF4X0hlaWdodCA6 IEdpbnQ7CiAgICAgIEZsYWdzICAgICAgOiBHZGsuVHlwZXMuR2RrX1dpbmRvd19IaW50cyk7Cgog ICBwcm9jZWR1cmUgU2V0X0dlb21ldHJ5X0hpbnRzCiAgICAgKFdpbmRvdyAgIDogR2RrX1dpbmRv dzsKICAgICAgR2VvbWV0cnkgOiBpbiBvdXQgR2RrLlR5cGVzLkdka19HZW9tZXRyeTsKICAgICAg RmxhZ3MgICAgOiBHZGsuVHlwZXMuR2RrX1dpbmRvd19IaW50cyk7CgogICBwcm9jZWR1cmUgU2V0 X1RpdGxlIChXaW5kb3cgOiBHZGtfV2luZG93OyBUaXRsZSA6IFN0cmluZyk7CgogICBwcm9jZWR1 cmUgU2V0X1JvbGUgKFdpbmRvdyA6IEdka19XaW5kb3c7IFJvbGUgOiBTdHJpbmcpOwoKICAgcHJv Y2VkdXJlIFNldF9UcmFuc2llbnRfRm9yCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7IExlYWRl ciA6IEdka19XaW5kb3cpOwoKICAgcHJvY2VkdXJlIFNldF9CYWNrZ3JvdW5kCiAgICAgKFdpbmRv dyA6IEdka19XaW5kb3c7IENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcik7CgogICBwcm9jZWR1 cmUgU2V0X0JhY2tfUGl4bWFwCiAgICAgKFdpbmRvdyAgICAgICAgICA6IEdka19XaW5kb3c7CiAg ICAgIFBpeG1hcCAgICAgICAgICA6IEdkay5HZGtfUGl4bWFwOwogICAgICBQYXJlbnRfUmVsYXRp dmUgOiBCb29sZWFuKTsKCiAgIHByb2NlZHVyZSBTZXRfQ3Vyc29yCiAgICAgKFdpbmRvdyA6IEdk a19XaW5kb3c7IEN1cnNvciA6IEdkay5DdXJzb3IuR2RrX0N1cnNvcik7CiAgIC0tICBOb3RlOiB0 aGUgd2luZG93IG11c3QgYmUgcmVhbGl6ZWQgZmlyc3QsIGllIGhhdmUgYW4gYXNzb2NpYXRlZCBY MTEvV2luMzIKICAgLS0gIHdpbmRvdy4KCiAgIHByb2NlZHVyZSBTZXRfQ29sb3JtYXAKICAgICAo V2luZG93IDogR2RrX1dpbmRvdzsgQ29sb3JtYXAgOiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwKTsK CiAgIHByb2NlZHVyZSBHZXRfR2VvbWV0cnkKICAgICAoV2luZG93IDogR2RrX1dpbmRvdzsKICAg ICAgWCAgICAgIDogb3V0IEdpbnQ7CiAgICAgIFkgICAgICA6IG91dCBHaW50OwogICAgICBXaWR0 aCAgOiBvdXQgR2ludDsKICAgICAgSGVpZ2h0IDogb3V0IEdpbnQ7CiAgICAgIERlcHRoICA6IG91 dCBHaW50KTsKICAgLS0gIFlvdSBjYW4gZ2V0IHRoZSBzaXplIG9mIHRoZSByb290IHdpbmRvdyAo aWUgdGhlIHNpemUgb2YgdGhlIHNjcmVlbikKICAgLS0gIHNpbXBseSBieSBnaXZpbmcgTnVsbF9X aW5kb3cgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoaXMgcHJvY2VkdXJlLgoKICAgcHJvY2Vk dXJlIEdldF9Qb3NpdGlvbgogICAgIChXaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBYICAgICAg OiBvdXQgR2ludDsKICAgICAgWSAgICAgIDogb3V0IEdpbnQpOwoKICAgcHJvY2VkdXJlIEdldF9T aXplCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFdpZHRoICA6IG91dCBHaW50Owog ICAgICBIZWlnaHQgOiBvdXQgR2ludCk7CgogICBmdW5jdGlvbiBHZXRfVmlzdWFsIChXaW5kb3cg OiBHZGtfV2luZG93KSByZXR1cm4gR2RrLlZpc3VhbC5HZGtfVmlzdWFsOwoKICAgZnVuY3Rpb24g R2V0X0NvbG9ybWFwIChXaW5kb3cgOiBHZGtfV2luZG93KSByZXR1cm4gR2RrLkNvbG9yLkdka19D b2xvcm1hcDsKCiAgIGZ1bmN0aW9uIEdldF9UeXBlIChXaW5kb3cgOiBHZGtfV2luZG93KSByZXR1 cm4gR2RrLlR5cGVzLkdka19XaW5kb3dfVHlwZTsKCiAgIHByb2NlZHVyZSBHZXRfT3JpZ2luCiAg ICAgKFdpbmRvdyAgOiBHZGtfV2luZG93OwogICAgICBYICAgICAgIDogb3V0IEdpbnQ7CiAgICAg IFkgICAgICAgOiBvdXQgR2ludDsKICAgICAgU3VjY2VzcyA6IG91dCBCb29sZWFuKTsKCiAgIHBy b2NlZHVyZSBHZXRfRGVza19SZWxhdGl2ZV9PcmlnaW4KICAgICAoV2luZG93ICA6IEdka19XaW5k b3c7CiAgICAgIFggICAgICAgOiBvdXQgR2ludDsKICAgICAgWSAgICAgICA6IG91dCBHaW50Owog ICAgICBTdWNjZXNzIDogb3V0IEJvb2xlYW4pOwoKICAgcHJvY2VkdXJlIEdldF9Sb290X09yaWdp bgogICAgIChXaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBYICAgICAgOiBvdXQgR2ludDsKICAg ICAgWSAgICAgIDogb3V0IEdpbnQpOwoKICAgcHJvY2VkdXJlIEdldF9Qb2ludGVyCiAgICAgKFdp bmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICA6IG91dCBHaW50OwogICAgICBZICAgICAg OiBvdXQgR2ludDsKICAgICAgTWFzayAgIDogb3V0IEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlw ZTsKICAgICAgUmVzdWx0IDogb3V0IEdka19XaW5kb3cpOwoKICAgZnVuY3Rpb24gR2V0X1BhcmVu dCAoV2luZG93IDogR2RrX1dpbmRvdykgcmV0dXJuIEdka19XaW5kb3c7CgogICBmdW5jdGlvbiBH ZXRfVG9wbGV2ZWwgKFdpbmRvdyA6IEdka19XaW5kb3cpIHJldHVybiBHZGtfV2luZG93OwoKICAg ZnVuY3Rpb24gR2V0X0V2ZW50cyAoV2luZG93IDogR2RrX1dpbmRvdykgcmV0dXJuIEdkay5UeXBl cy5HZGtfRXZlbnRfTWFzazsKCiAgIHByb2NlZHVyZSBTZXRfRXZlbnRzCiAgICAgKFdpbmRvdyA6 IEdka19XaW5kb3c7IEV2ZW50X01hc2sgOiBHZGsuVHlwZXMuR2RrX0V2ZW50X01hc2spOwoKICAg cHJvY2VkdXJlIFNldF9JY29uCiAgICAgKFdpbmRvdyAgICAgIDogR2RrX1dpbmRvdzsKICAgICAg SWNvbl9XaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBQaXhtYXAgICAgICA6IEdka19QaXhtYXA7 CiAgICAgIE1hc2sgICAgICAgIDogR2RrX0JpdG1hcCk7CgogICBwcm9jZWR1cmUgU2V0X0ljb25f TmFtZQogICAgIChXaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBOYW1lICAgOiBTdHJpbmcpOwoK ICAgcHJvY2VkdXJlIFNldF9Hcm91cCAoV2luZG93IDogR2RrX1dpbmRvdzsgTGVhZGVyIDogR2Rr X1dpbmRvdyk7CgogICBwcm9jZWR1cmUgU2V0X0RlY29yYXRpb25zCiAgICAgKFdpbmRvdyAgICAg IDogR2RrX1dpbmRvdzsKICAgICAgRGVjb3JhdGlvbnMgOiBHZGsuVHlwZXMuR2RrX1dtX0RlY29y YXRpb24pOwoKICAgcHJvY2VkdXJlIFNldF9GdW5jdGlvbnMKICAgICAoV2luZG93ICAgIDogR2Rr X1dpbmRvdzsKICAgICAgRnVuY3Rpb25zIDogR2RrLlR5cGVzLkdka19XbV9GdW5jdGlvbik7Cgog ICAtLSAgR2RrX1dpbmRvd19MaXN0CiAgIC0tCiAgIGZ1bmN0aW9uIENvbnZlcnQgaXMgbmV3IFVu Y2hlY2tlZF9Db252ZXJzaW9uIChHZGtfV2luZG93LCBTeXN0ZW0uQWRkcmVzcyk7CiAgIGZ1bmN0 aW9uIENvbnZlcnQgaXMgbmV3IFVuY2hlY2tlZF9Db252ZXJzaW9uIChTeXN0ZW0uQWRkcmVzcywg R2RrX1dpbmRvdyk7CgogICBwYWNrYWdlIEdka19XaW5kb3dfTGlzdCBpcyBuZXcKICAgICBHbGli LkdsaXN0LkdlbmVyaWNfTGlzdCAoR3BvaW50ZXIgPT4gR2RrX1dpbmRvdyk7CgogICBmdW5jdGlv biBHZXRfQ2hpbGRyZW4KICAgICAoV2luZG93IDogR2RrX1dpbmRvdykgcmV0dXJuIEdka19XaW5k b3dfTGlzdC5HbGlzdDsKCiAgIGZ1bmN0aW9uIEdldF9Ub3BsZXZlbHMgcmV0dXJuIEdka19XaW5k b3dfTGlzdC5HbGlzdDsKCnByaXZhdGUKCiAgIE51bGxfV2luZG93IDogY29uc3RhbnQgR2RrX1dp bmRvdyA6PSBudWxsOwogICBwcmFnbWEgSW1wb3J0IChDLCBDbGVhciwgImdka193aW5kb3dfY2xl YXIiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgQ2xlYXJfQXJlYSwgImdka193aW5kb3dfY2xlYXJf YXJlYSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBDbGVhcl9BcmVhX0UsICJnZGtfd2luZG93X2Ns ZWFyX2FyZWFfZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBDb3B5X0FyZWEsICJnZGtfd2luZG93 X2NvcHlfYXJlYSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfRXZlbnRzLCAiZ2RrX3dpbmRv d19nZXRfZXZlbnRzIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9HZW9tZXRyeSwgImdka193 aW5kb3dfZ2V0X2dlb21ldHJ5Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9QYXJlbnQsICJn ZGtfd2luZG93X2dldF9wYXJlbnQiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1Bvc2l0aW9u LCAiZ2RrX3dpbmRvd19nZXRfcG9zaXRpb24iKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1Jv b3RfT3JpZ2luLCAiZ2RrX3dpbmRvd19nZXRfcm9vdF9vcmlnaW4iKTsKICAgcHJhZ21hIEltcG9y dCAoQywgR2V0X1NpemUsICJnZGtfd2luZG93X2dldF9zaXplIik7CiAgIHByYWdtYSBJbXBvcnQg KEMsIEdldF9Ub3BsZXZlbCwgImdka193aW5kb3dfZ2V0X3RvcGxldmVsIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIEdldF9UeXBlLCAiZ2RrX3dpbmRvd19nZXRfdHlwZSIpOwogICBwcmFnbWEgSW1w b3J0IChDLCBIaWRlLCAiZ2RrX3dpbmRvd19oaWRlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIExv d2VyLCAiZ2RrX3dpbmRvd19sb3dlciIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBNZXJnZV9DaGls ZF9TaGFwZXMsICJnZGtfd2luZG93X21lcmdlX2NoaWxkX3NoYXBlcyIpOwogICBwcmFnbWEgSW1w b3J0IChDLCBNb3ZlLCAiZ2RrX3dpbmRvd19tb3ZlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIE1v dmVfUmVzaXplLCAiZ2RrX3dpbmRvd19tb3ZlX3Jlc2l6ZSIpOwogICBwcmFnbWEgSW1wb3J0IChD LCBHZGtfUmFpc2UsICJnZGtfd2luZG93X3JhaXNlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJl ZiwgImdka193aW5kb3dfcmVmIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlcGFyZW50LCAiZ2Rr X3dpbmRvd19yZXBhcmVudCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBSZXNpemUsICJnZGtfd2lu ZG93X3Jlc2l6ZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQ2hpbGRfU2hhcGVzLCAiZ2Rr X3dpbmRvd19zZXRfY2hpbGRfc2hhcGVzIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9EZWNv cmF0aW9ucywgImdka193aW5kb3dfc2V0X2RlY29yYXRpb25zIik7CiAgIHByYWdtYSBJbXBvcnQg KEMsIFNldF9FdmVudHMsICJnZGtfd2luZG93X3NldF9ldmVudHMiKTsKICAgcHJhZ21hIEltcG9y dCAoQywgU2V0X0Z1bmN0aW9ucywgImdka193aW5kb3dfc2V0X2Z1bmN0aW9ucyIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBTZXRfR2VvbWV0cnlfSGludHMsICJnZGtfd2luZG93X3NldF9nZW9tZXRy eV9oaW50cyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfR3JvdXAsICJnZGtfd2luZG93X3Nl dF9ncm91cCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfSGludHMsICJnZGtfd2luZG93X3Nl dF9oaW50cyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfVHJhbnNpZW50X0ZvciwgImdka193 aW5kb3dfc2V0X3RyYW5zaWVudF9mb3IiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2hvdywgImdk a193aW5kb3dfc2hvdyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBVbnJlZiwgImdka193aW5kb3df dW5yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgV2l0aGRyYXcsICJnZGtfd2luZG93X3dpdGhk cmF3Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9DdXJzb3IsICJnZGtfd2luZG93X3NldF9j dXJzb3IiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0NvbG9ybWFwLCAiZ2RrX3dpbmRvd19n ZXRfY29sb3JtYXAiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1Zpc3VhbCwgImdka193aW5k b3dfZ2V0X3Zpc3VhbCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQ29sb3JtYXAsICJnZGtf d2luZG93X3NldF9jb2xvcm1hcCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfSWNvbiwgImdk a193aW5kb3dfc2V0X2ljb24iKTsKZW5kIEdkay5XaW5kb3c7CgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdu YXRidWcvZ2RrLWN1cnNvci5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEA MDAwMDAwMAAwMDAwMDAwNzI3NQAwNzU1MTEwNzYzMgAwMTQxMjcAIDAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdp bXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJs ZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAg LS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws ICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0g Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYg b3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBv ciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0K LS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhl IHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2 ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJs ZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAg LS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tICBUaGlzIHBhY2thZ2UgcHJv dmlkZXMgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIHByZWRlZmluZWQgbW91c2UgY3Vyc29ycwot LSAgYXMgd2VsbCBhcyB1c2VyIGRlZmluZWQgb25lcy4KLS0gIDwvZGVzY3JpcHRpb24+Ci0tICA8 Y192ZXJzaW9uPjEuMi44PC9jX3ZlcnNpb24+Cgp3aXRoIEdsaWI7CndpdGggR2RrLlR5cGVzOwp3 aXRoIEdkay5Db2xvcjsKCnBhY2thZ2UgR2RrLkN1cnNvciBpcwoKICAgdHlwZSBHZGtfQ3Vyc29y IGlzIG5ldyBHZGsuQ19Qcm94eTsKICAgTnVsbF9DdXJzb3IgOiBjb25zdGFudCBHZGtfQ3Vyc29y OwoKICAgcHJvY2VkdXJlIEdka19OZXcKICAgICAoV2lkZ2V0ICAgICAgOiBvdXQgR2RrX0N1cnNv cjsKICAgICAgQ3Vyc29yX1R5cGUgOiBpbiAgR2RrLlR5cGVzLkdka19DdXJzb3JfVHlwZSk7CiAg IC0tICBDcmVhdGUgYSBuZXcgc3RhbmRhcmQgY3Vyc29yLgoKICAgcHJvY2VkdXJlIEdka19OZXcK ICAgICAoV2lkZ2V0IDogb3V0IEdka19DdXJzb3I7CiAgICAgIFNvdXJjZSA6IGluIEdkay5HZGtf UGl4bWFwOwogICAgICBNYXNrICAgOiBpbiBHZGsuR2RrX1BpeG1hcDsKICAgICAgRmcgICAgIDog aW4gR2RrLkNvbG9yLkdka19Db2xvcjsKICAgICAgQmcgICAgIDogaW4gR2RrLkNvbG9yLkdka19D b2xvcjsKICAgICAgWCAgICAgIDogaW4gR2xpYi5HaW50OwogICAgICBZICAgICAgOiBpbiBHbGli LkdpbnQpOwogICAtLSAgQ3JlYXRlIGEgbmV3IGN1cnNvciBmcm9tIGEgZ2l2ZW4gcGl4bWFwIGFu ZCBtYXNrLgogICAtLSAgQm90aCB0aGUgcGl4bWFwIGFuZCBtYXNrIG11c3QgaGF2ZSBhIGRlcHRo IG9mIDEgKGkuZS4gZWFjaCBwaXhlbCBoYXMKICAgLS0gIG9ubHkgMiB2YWx1ZXMgLSBvbiBvciBv ZmYpLiBUaGUgc3RhbmRhcmQgY3Vyc29yIHNpemUgaXMgMTYgYnkgMTYgcGl4ZWxzLgogICAtLSAg IC0gU291cmNlIGlzIHRoZSBwaXhtYXAgc3BlY2lmeWluZyB0aGUgY3Vyc29yLgogICAtLSAgIC0g TWFzayBpcyB0aGUgcGl4bWFwIHNwZWNpZnlpbmcgdGhlIG1hc2ssIHdoaWNoIG11c3QgYmUgdGhl IHNhbWUgc2l6ZQogICAtLSAgIGFzIHNvdXJjZS4KICAgLS0gICAtIEZnIGlzIHRoZSBmb3JlZ3Jv dW5kIGNvbG9yLCB1c2VkIGZvciB0aGUgYml0cyBpbiB0aGUgc291cmNlIHdoaWNoIGFyZQogICAt LSAgIGVuYWJsZWQuIFRoZSBjb2xvciBkb2VzIG5vdCBoYXZlIHRvIGJlIGFsbG9jYXRlZCBmaXJz dC4KICAgLS0gICAtIEJnIGlzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLCB1c2VkIGZvciB0aGUgYml0 cyBpbiB0aGUgc291cmNlIHdoaWNoIGFyZQogICAtLSAgIGRpc2FibGVkLiBUaGUgY29sb3IgZG9l cyBub3QgaGF2ZSB0byBiZSBhbGxvY2F0ZWQgZmlyc3QuCiAgIC0tICAgLSBYIGlzIHRoZSBob3Jp em9udGFsIG9mZnNldCBvZiB0aGUgJ2hvdHNwb3QnIG9mIHRoZSBjdXJzb3IuCiAgIC0tICAgLSBZ IGlzIHRoZSB2ZXJ0aWNhbCBvZmZzZXQgb2YgdGhlICdob3RzcG90JyBvZiB0aGUgY3Vyc29yLgoK ICAgcHJvY2VkdXJlIERlc3Ryb3kgKEN1cnNvciA6IGluIEdka19DdXJzb3IpOwogICAtLSAgRGVz dHJveSBhIGN1cnNvciwgZnJlZWluZyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgaXQuCgpw cml2YXRlCiAgIE51bGxfQ3Vyc29yIDogY29uc3RhbnQgR2RrX0N1cnNvciA6PSBudWxsOwogICBw cmFnbWEgSW1wb3J0IChDLCBEZXN0cm95LCAiZ2RrX2N1cnNvcl9kZXN0cm95Iik7CmVuZCBHZGsu Q3Vyc29yOwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGduYXRidWcvZ2Rr LXdpbmRvd19hdHRyLmFkcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAwMAAw MDAwMDAxNjQ1NwAwNzU1MTEwNzYzMgAwMTUxNTUAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtp dCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBD b3B5cmlnaHQgKEMpIDE5OTgtMTk5OSAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAg IEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAg ICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy ICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0g YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmls ZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGlu ayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0 YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGlu ZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxp ZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBt aWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCndpdGggR2RrLkNvbG9yOwp3aXRoIEdkay5DdXJzb3I7CndpdGggR2RrLlR5cGVz Owp3aXRoIEdkay5WaXN1YWw7CndpdGggR2xpYjsKCnBhY2thZ2UgR2RrLldpbmRvd19BdHRyIGlz CgogICB0eXBlIEdka19XaW5kb3dfQXR0ciBpcyBuZXcgQ19Qcm94eTsKICAgTnVsbF9XaW5kb3df QXR0ciA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cjsKCiAgIHByb2NlZHVyZSBHZGtfTmV3CiAg ICAgKFdpbmRvd19BdHRyICAgICAgIDogICAgb3V0IEdka19XaW5kb3dfQXR0cjsKICAgICAgVGl0 bGUgICAgICAgICAgICAgOiBpbiAgICAgU3RyaW5nIDo9ICIiOwogICAgICBFdmVudF9NYXNrICAg ICAgICA6IGluICAgICBHZGsuVHlwZXMuR2RrX0V2ZW50X01hc2sgOj0KICAgICAgICBHZGsuVHlw ZXMuTnVsbF9FdmVudF9NYXNrOwogICAgICBYLCBZICAgICAgICAgICAgICA6IGluICAgICBHbGli LkdpbnQxNiA6PSAwOwogICAgICBXaWR0aCAgICAgICAgICAgICA6IGluICAgICBHbGliLkdpbnQx NiA6PSAwOwogICAgICBIZWlnaHQgICAgICAgICAgICA6IGluICAgICBHbGliLkdpbnQxNiA6PSAw OwogICAgICBXY2xhc3MgICAgICAgICAgICA6IGluICAgICBHZGsuVHlwZXMuR2RrX1dpbmRvd19D bGFzcyA6PQogICAgICAgIEdkay5UeXBlcy5JbnB1dF9PdXRwdXQ7CiAgICAgIFZpc3VhbCAgICAg ICAgICAgIDogaW4gICAgIEdkay5WaXN1YWwuR2RrX1Zpc3VhbCA6PQogICAgICAgIEdkay5WaXN1 YWwuTnVsbF9WaXN1YWw7CiAgICAgIENvbG9ybWFwICAgICAgICAgIDogaW4gICAgIEdkay5Db2xv ci5HZGtfQ29sb3JtYXAgOj0KICAgICAgICBHZGsuQ29sb3IuTnVsbF9Db2xvcm1hcDsKICAgICAg V2luZG93X1R5cGUgICAgICAgOiBpbiAgICAgR2RrLlR5cGVzLkdka19XaW5kb3dfVHlwZSA6PQog ICAgICAgIEdkay5UeXBlcy5XaW5kb3dfUm9vdDsKICAgICAgQ3Vyc29yICAgICAgICAgICAgOiBp biAgICAgR2RrLkN1cnNvci5HZGtfQ3Vyc29yIDo9CiAgICAgICAgR2RrLkN1cnNvci5OdWxsX0N1 cnNvcjsKICAgICAgV21jbGFzc19OYW1lICAgICAgOiBpbiAgICAgU3RyaW5nIDo9ICIiOwogICAg ICBXbWNsYXNzX0NsYXNzICAgICA6IGluICAgICBTdHJpbmcgOj0gIiI7CiAgICAgIE92ZXJyaWRl X1JlZGlyZWN0IDogaW4gICAgIEJvb2xlYW4gOj0gVHJ1ZSk7CgogICBwcm9jZWR1cmUgRGVzdHJv eSAoV2luZG93X0F0dHIgOiBpbiBvdXQgR2RrX1dpbmRvd19BdHRyKTsKCiAgIHByb2NlZHVyZSBT ZXRfVGl0bGUKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIFRp dGxlICAgICAgIDogaW4gU3RyaW5nKTsKCiAgIGZ1bmN0aW9uIEdldF9UaXRsZSAoV2luZG93X0F0 dHIgOiBpbiBHZGtfV2luZG93X0F0dHIpIHJldHVybiBTdHJpbmc7CgogICBwcm9jZWR1cmUgU2V0 X0V2ZW50X01hc2sKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAg IEV2ZW50X01hc2sgIDogaW4gR2RrLlR5cGVzLkdka19FdmVudF9NYXNrKTsKCiAgIGZ1bmN0aW9u IEdldF9FdmVudF9NYXNrCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyKQog ICAgICByZXR1cm4gR2RrLlR5cGVzLkdka19FdmVudF9NYXNrOwoKICAgcHJvY2VkdXJlIFNldF9Y CiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyOwogICAgICBYICAgICAgICAg ICA6IGluIEdsaWIuR2ludDE2KTsKCiAgIGZ1bmN0aW9uIEdldF9YIChXaW5kb3dfQXR0ciA6IGlu IEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEdsaWIuR2ludDE2OwoKCiAgIHByb2NlZHVyZSBTZXRf WQogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cjsKICAgICAgWSAgICAgICAg ICAgOiBpbiBHbGliLkdpbnQxNik7CgogICBmdW5jdGlvbiBHZXRfWSAoV2luZG93X0F0dHIgOiBp biBHZGtfV2luZG93X0F0dHIpIHJldHVybiBHbGliLkdpbnQxNjsKCiAgIHByb2NlZHVyZSBTZXRf V2lkdGgKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIFdpZHRo ICAgICAgIDogaW4gR2xpYi5HaW50MTYpOwoKICAgZnVuY3Rpb24gR2V0X1dpZHRoIChXaW5kb3df QXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEdsaWIuR2ludDE2OwoKICAgcHJvY2Vk dXJlIFNldF9IZWlnaHQKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAg ICAgIEhlaWdodCAgICAgIDogaW4gR2xpYi5HaW50MTYpOwoKICAgZnVuY3Rpb24gR2V0X0hlaWdo dCAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHIpIHJldHVybiBHbGliLkdpbnQxNjsK CiAgIHByb2NlZHVyZSBTZXRfV2luZG93X0NsYXNzCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2Rr X1dpbmRvd19BdHRyOwogICAgICBXY2xhc3MgICAgICA6IGluIEdkay5UeXBlcy5HZGtfV2luZG93 X0NsYXNzKTsKCiAgIGZ1bmN0aW9uIEdldF9XaW5kb3dfQ2xhc3MKICAgICAoV2luZG93X0F0dHIg OiBpbiBHZGtfV2luZG93X0F0dHIpIHJldHVybiBHZGsuVHlwZXMuR2RrX1dpbmRvd19DbGFzczsK CiAgIHByb2NlZHVyZSBTZXRfVmlzdWFsCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRv d19BdHRyOwogICAgICBWaXN1YWwgICAgICA6IGluIEdkay5WaXN1YWwuR2RrX1Zpc3VhbCk7Cgog ICBmdW5jdGlvbiBHZXRfVmlzdWFsCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19B dHRyKSByZXR1cm4gR2RrLlZpc3VhbC5HZGtfVmlzdWFsOwoKICAgcHJvY2VkdXJlIFNldF9Db2xv cm1hcAogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cjsKICAgICAgQ29sb3Jt YXAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwKTsKCiAgIGZ1bmN0aW9uIEdldF9Db2xv cm1hcAogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEdkay5D b2xvci5HZGtfQ29sb3JtYXA7CgogICBwcm9jZWR1cmUgU2V0X1dpbmRvd19UeXBlCiAgICAgKFdp bmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyOwogICAgICBXaW5kb3dfVHlwZSA6IGluIEdk ay5UeXBlcy5HZGtfV2luZG93X1R5cGUpOwoKICAgZnVuY3Rpb24gR2V0X1dpbmRvd19UeXBlCiAg ICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyKSByZXR1cm4gR2RrLlR5cGVzLkdk a19XaW5kb3dfVHlwZTsKCiAgIHByb2NlZHVyZSBTZXRfQ3Vyc29yCiAgICAgKFdpbmRvd19BdHRy IDogaW4gR2RrX1dpbmRvd19BdHRyOwogICAgICBDdXJzb3IgICAgICA6IGluIEdkay5DdXJzb3Iu R2RrX0N1cnNvcik7CgogICBmdW5jdGlvbiBHZXRfQ3Vyc29yCiAgICAgKFdpbmRvd19BdHRyIDog aW4gR2RrX1dpbmRvd19BdHRyKQogICAgICByZXR1cm4gR2RrLkN1cnNvci5HZGtfQ3Vyc29yOwoK ICAgcHJvY2VkdXJlIFNldF9XbWNsYXNzX05hbWUKICAgICAoV2luZG93X0F0dHIgIDogaW4gR2Rr X1dpbmRvd19BdHRyOwogICAgICBXbWNsYXNzX05hbWUgOiBpbiBTdHJpbmcpOwoKICAgZnVuY3Rp b24gR2V0X1dtY2xhc3NfTmFtZSAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHIpIHJl dHVybiBTdHJpbmc7CgoKICAgcHJvY2VkdXJlIFNldF9XbWNsYXNzX0NsYXNzCiAgICAgKFdpbmRv d19BdHRyICAgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIFdtY2xhc3NfQ2xhc3MgOiBpbiBT dHJpbmcpOwoKICAgZnVuY3Rpb24gR2V0X1dtY2xhc3NfQ2xhc3MgKFdpbmRvd19BdHRyIDogaW4g R2RrX1dpbmRvd19BdHRyKSByZXR1cm4gU3RyaW5nOwoKICAgcHJvY2VkdXJlIFNldF9PdmVycmlk ZV9SZWRpcmVjdAogICAgIChXaW5kb3dfQXR0ciAgICAgICA6IGluIEdka19XaW5kb3dfQXR0cjsK ICAgICAgT3ZlcnJpZGVfUmVkaXJlY3QgOiBpbiBCb29sZWFuKTsKCiAgIGZ1bmN0aW9uIEdldF9P dmVycmlkZV9SZWRpcmVjdAogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikg cmV0dXJuIEJvb2xlYW47Cgpwcml2YXRlCiAgIE51bGxfV2luZG93X0F0dHIgOiBjb25zdGFudCBH ZGtfV2luZG93X0F0dHIgOj0gbnVsbDsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0NvbG9ybWFw LCAiYWRhX2dka193aW5kb3dfYXR0cl9nZXRfY29sb3JtYXAiKTsKICAgcHJhZ21hIEltcG9ydCAo QywgR2V0X0N1cnNvciwgImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X2N1cnNvciIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBHZXRfRXZlbnRfTWFzaywgImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X2V2 ZW50X21hc2siKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0hlaWdodCwgImFkYV9nZGtfd2lu ZG93X2F0dHJfZ2V0X2hlaWdodCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfVmlzdWFsLCAi YWRhX2dka193aW5kb3dfYXR0cl9nZXRfdmlzdWFsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdl dF9XaWR0aCwgImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X3dpZHRoIik7CiAgIHByYWdtYSBJbXBv cnQgKEMsIEdldF9XaW5kb3dfQ2xhc3MsICJhZGFfZ2RrX3dpbmRvd19hdHRyX2dldF93Y2xhc3Mi KTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1dpbmRvd19UeXBlLCAiYWRhX2dka193aW5kb3df YXR0cl9nZXRfd2luZG93X3R5cGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1gsICJhZGFf Z2RrX3dpbmRvd19hdHRyX2dldF94Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9ZLCAiYWRh X2dka193aW5kb3dfYXR0cl9nZXRfeSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQ29sb3Jt YXAsICJhZGFfZ2RrX3dpbmRvd19hdHRyX3NldF9jb2xvcm1hcCIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBTZXRfQ3Vyc29yLCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRfY3Vyc29yIik7CiAgIHBy YWdtYSBJbXBvcnQgKEMsIFNldF9FdmVudF9NYXNrLCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRf ZXZlbnRfbWFzayIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfSGVpZ2h0LCAiYWRhX2dka193 aW5kb3dfYXR0cl9zZXRfaGVpZ2h0Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9WaXN1YWws ICJhZGFfZ2RrX3dpbmRvd19hdHRyX3NldF92aXN1YWwiKTsKICAgcHJhZ21hIEltcG9ydCAoQywg U2V0X1dpZHRoLCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRfd2lkdGgiKTsKICAgcHJhZ21hIElt cG9ydCAoQywgU2V0X1dpbmRvd19DbGFzcywgImFkYV9nZGtfd2luZG93X2F0dHJfc2V0X3djbGFz cyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfV2luZG93X1R5cGUsICJhZGFfZ2RrX3dpbmRv d19hdHRyX3NldF93aW5kb3dfdHlwZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfWCwgImFk YV9nZGtfd2luZG93X2F0dHJfc2V0X3giKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1ksICJh ZGFfZ2RrX3dpbmRvd19hdHRyX3NldF95Iik7CmVuZCBHZGsuV2luZG93X0F0dHI7CgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9nZGstYml0bWFwLmFkcwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDEwMzQ3ADA3NTUx MTA3NjMyADAxNDA2MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAB1c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICAg ICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIEd0aysvR25vbWUgICAgICAgICAgICAgICAt LQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAwIEUuIEJyaW90LCBK LiBCcm9iZWNrZXIgYW5kIEEuIENoYXJsZXQgICAtLQotLSAgICAgICAgICAgICAgICBDb3B5cmln aHQgKEMpIDIwMDAtMjAwMSBBQ1QtRXVyb3BlICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQot LSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAg ICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT QS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBn ZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRo IG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0 ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRh YmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlz ICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciBy ZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQg YnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxk ZXNjcmlwdGlvbj4KLS0KLS0gIFBpeG1hcHMgYXJlIG9mZi1zY3JlZW4gZHJhd2FibGVzLiBUaGV5 IGNhbiBiZSBkcmF3biB1cG9uIHdpdGggdGhlIHN0YW5kYXJkCi0tICBkcmF3aW5nIHByaW1pdGl2 ZXMsIHRoZW4gY29waWVkIHRvIGFub3RoZXIgZHJhd2FibGUgKHN1Y2ggYXMgYSBHZGtfV2luZG93 KQotLSAgd2l0aCBHZGsuUGl4bWFwLkRyYXcuIFRoZSBkZXB0aCBvZiBhIHBpeG1hcCBpcyB0aGUg bnVtYmVyIG9mIGJpdHMgcGVyCi0tICBwaXhlbHMuIEJpdG1hcHMgYXJlIHNpbXBseSBwaXhtYXBz IHdpdGggYSBkZXB0aCBvZiAxLiAoVGhhdCBpcywgdGhleSBhcmUKLS0gIG1vbm9jaHJvbWUgYml0 bWFwcyAtIGVhY2ggcGl4ZWwgY2FuIGJlIGVpdGhlciBvbiBvciBvZmYpLgotLSAgQHB4cmVme1Bh Y2thZ2VfR2RrLlBpeG1hcH0gZm9yIG1vcmUgZGV0YWlscyBvbiBwaXhtYXAgaGFuZGxpbmcuCi0t Ci0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNzwvY192ZXJzaW9uPgoKd2l0 aCBHbGliOyB1c2UgR2xpYjsKCndpdGggR2RrLldpbmRvdzsKCnBhY2thZ2UgR2RrLkJpdG1hcCBp cwoKICAgc3VidHlwZSBHZGtfQml0bWFwIGlzIEdkay5HZGtfQml0bWFwOwogICAtLSAgQSBibGFj ayBhbmQgd2hpdGUgaW1hZ2UuCiAgIC0tICBUaGlzIHR5cGUgaXMgbWFpbmx5IHVzZWQgYXMgYSBt YXNrIHdoZW4gZHJhd2luZyBvdGhlciBjb2xvcmVkIGltYWdlcy4KICAgLS0gIEVhY2ggcGl4ZWwg Y2FuIGhhdmUgdHdvIHZhbHVlcywgMCBvciAxLgoKICAgTnVsbF9CaXRtYXAgOiBjb25zdGFudCBH ZGtfQml0bWFwOwoKICAgcHJvY2VkdXJlIEdka19OZXcgKEJpdG1hcCA6IG91dCBHZGtfQml0bWFw OwogICAgICAgICAgICAgICAgICAgICAgV2luZG93IDogaW4gIEdkay5XaW5kb3cuR2RrX1dpbmRv dzsKICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICA6IGluICBHaW50OwogICAgICAgICAgICAg ICAgICAgICAgSGVpZ2h0IDogaW4gIEdpbnQpOwogICAtLSAgQ3JlYXRlIGEgbmV3IGJpdG1hcCB3 aXRoIGEgZ2l2ZW4gc2l6ZS4KICAgLS0gIFdpbmRvdyBpcyB1c2VkIHRvIGRldGVybWluZSBkZWZh dWx0IHZhbHVlcyBmb3IgdGhlIG5ldyBiaXRtYXAuCiAgIC0tICBDYW4gYmUgZXZlbnR1YWxseSBu dWxsIGluIHdoaWNoIGNhc2UgdGhlIHJvb3Qgd2luZG93IGlzIHVzZWQuCiAgIC0tICBXaWR0aCBp cyB0aGUgd2lkdGggb2YgdGhlIG5ldyBiaXRtYXAgaW4gcGl4ZWxzLgogICAtLSAgSGVpZ2h0IGlz IHRoZSBoZWlnaHQgb2YgdGhlIG5ldyBiaXRtYXAgaW4gcGl4ZWxzLgoKICAgcHJvY2VkdXJlIFJl ZiAoQml0bWFwIDogaW4gR2RrX0JpdG1hcCk7CiAgIC0tICBBZGQgYSByZWZlcmVuY2UgdG8gYSBi aXRtYXAuCgogICBwcm9jZWR1cmUgVW5yZWYgKEJpdG1hcCA6IGluIEdka19CaXRtYXApOwogICAt LSAgVGhpcyBpcyB0aGUgdXN1YWwgd2F5IHRvIGRlc3Ryb3kgYSBiaXRtYXAuIFRoZSBtZW1vcnkg aXMgZnJlZWQgd2hlbgogICAtLSAgdGhlcmUgaXMgbm8gbW9yZSByZWZlcmVuY2UKCiAgIHByb2Nl ZHVyZSBDcmVhdGVfRnJvbV9EYXRhIChCaXRtYXAgOiAgICBvdXQgR2RrX0JpdG1hcDsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyA6IGluICAgICBHZGsuV2luZG93Lkdka19X aW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgOiBpbiAgICAgU3Ry aW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGggIDogaW4gICAgIEdpbnQ7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWlnaHQgOiBpbiAgICAgR2ludCk7CiAg IC0tICBDcmVhdGUgYSBiaXRtYXAgZnJvbSBkYXRhIGluIFhCTSBmb3JtYXQuCiAgIC0tICBXaW5k b3cgaXMgdXNlZCB0byBkZXRlcm1pbmUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBuZXcgYml0bWFw LCBjYW4gYmUKICAgLS0gIG51bGwgaW4gd2hpY2ggY2FzZSB0aGUgcm9vdCB3aW5kb3cgaXMgdXNl ZC4KICAgLS0gIERhdGEgaXMgdGhlIFhCTSBkYXRhLgogICAtLSAgV2lkdGggaXMgdGhlIHdpZHRo IG9mIHRoZSBuZXcgYml0bWFwIGluIHBpeGVscy4KICAgLS0gIEhlaWdodCBpcyB0aGUgaGVpZ2h0 IG9mIHRoZSBuZXcgYml0bWFwIGluIHBpeGVscy4KCnByaXZhdGUKICAgTnVsbF9CaXRtYXAgOiBj b25zdGFudCBHZGtfQml0bWFwIDo9IG51bGw7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZiwgImdk a19iaXRtYXBfcmVmIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVucmVmLCAiZ2RrX2JpdG1hcF91 bnJlZiIpOwplbmQgR2RrLkJpdG1hcDsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABnbmF0YnVnL2d0ay1hY2NlbF9ncm91cC5hZHMAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDEwMDY0NAAwMDAxNzUxADAwMDAwMDAAMDAwMDAwMTYwMzEAMDc1NTExMDc2MzIAMDE1 MTAzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAA c3BhegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFk YTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9i ZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRo aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0t Ci0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2Ug YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAg IC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEg c3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZy b20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmls ZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90 ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUg Y292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4 Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5 IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdO VSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp3aXRoIEdkazsgdXNlIEdk azsKd2l0aCBHZGsuVHlwZXM7CndpdGggR3RrLk9iamVjdDsKCnBhY2thZ2UgR3RrLkFjY2VsX0dy b3VwIGlzCgogICB0eXBlIEd0a19BY2NlbF9Hcm91cCBpcyBuZXcgR2RrLkNfUHJveHk7CiAgIHR5 cGUgR3RrX0FjY2VsX0VudHJ5IGlzIG5ldyBHZGsuQ19Qcm94eTsKCiAgIHR5cGUgR3RrX0FjY2Vs X0ZsYWdzIGlzIG5ldyBHdWludDsKICAgQWNjZWxfVmlzaWJsZSAgICAgICAgOiBjb25zdGFudCBH dGtfQWNjZWxfRmxhZ3M7CiAgIEFjY2VsX1NpZ25hbF9WaXNpYmxlIDogY29uc3RhbnQgR3RrX0Fj Y2VsX0ZsYWdzOwogICBBY2NlbF9Mb2NrZWQgICAgICAgICA6IGNvbnN0YW50IEd0a19BY2NlbF9G bGFnczsKICAgQWNjZWxfTWFzayAgICAgICAgICAgOiBjb25zdGFudCBHdGtfQWNjZWxfRmxhZ3M7 CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgQWNjZWxlcmF0b3IgR3JvdXBz ICAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEd0a19OZXcg KFdpZGdldCA6IG91dCBHdGtfQWNjZWxfR3JvdXApOwoKICAgZnVuY3Rpb24gR2V0X0RlZmF1bHQg cmV0dXJuIEd0a19BY2NlbF9Hcm91cDsKCiAgIC0tICBwcm9jZWR1cmUgUmVmCiAgIC0tICBwcm9j ZWR1cmUgVW5yZWYKCiAgIGZ1bmN0aW9uIEFjdGl2YXRlCiAgICAgKEFjY2VsX0dyb3VwIDogaW4g R3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICA6IGluIEdkay5UeXBlcy5HZGtfS2V5 X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgIDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBl KSByZXR1cm4gQm9vbGVhbjsKCiAgIGZ1bmN0aW9uIEFjY2VsX0dyb3Vwc19BY3RpdmF0ZQogICAg IChPYmplY3QgICAgIDogYWNjZXNzIEd0ay5PYmplY3QuR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7 CiAgICAgIEFjY2VsX0tleSAgOiBpbiBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2Nl bF9Nb2RzIDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKSByZXR1cm4gQm9vbGVhbjsK CiAgIHByb2NlZHVyZSBBdHRhY2gKICAgICAoQWNjZWxfR3JvdXAgOiBpbiBHdGtfQWNjZWxfR3Jv dXA7CiAgICAgIE9iamVjdCAgICAgIDogYWNjZXNzIEd0ay5PYmplY3QuR3RrX09iamVjdF9SZWNv cmQnQ2xhc3MpOwogICAtLSAgT2JqZWN0IHNob3VsZCBiZSBhYmxlIHRvIGdldCBrZXlfcHJlc3Mg YW5kIGtleV9yZWxlYXNlIGV2ZW50cyAoaWUKICAgLS0gIHRoaXMgd29uJ3Qgd29yayBpbiBhIEd0 a19Cb3ggd2hpY2ggaGFzIG5vIHdpbmRvdykuCiAgIC0tICBUaGUgcmVjb21tZW5kZWQgd2F5IGlz IHRvIGF0dGFjaCB0aGUgQWNjZWxfR3JvdXAgdG8gdGhlIHRvcGxldmVsIHdpbmRvdy4KCiAgIHBy b2NlZHVyZSBEZXRhY2gKICAgICAoQWNjZWxfR3JvdXAgOiBpbiBHdGtfQWNjZWxfR3JvdXA7CiAg ICAgIE9iamVjdCAgICAgIDogYWNjZXNzIEd0ay5PYmplY3QuR3RrX09iamVjdF9SZWNvcmQnQ2xh c3MpOwoKICAgcHJvY2VkdXJlIExvY2sgKEFjY2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3Vw KTsKCiAgIHByb2NlZHVyZSBVbmxvY2sgKEFjY2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3Vw KTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgQWNjZWxlcmF0 b3IgR3JvdXAgRW50cmllcyAgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgogICBmdW5jdGlvbiBHZXRfRW50cnkKICAgICAoQWNjZWxfR3JvdXAgOiBpbiBHdGtfQWNjZWxf R3JvdXA7CiAgICAgIEFjY2VsX0tleSAgIDogaW4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAg ICAgQWNjZWxfTW9kcyAgOiBpbiBHZGsuVHlwZXMuR2RrX01vZGlmaWVyX1R5cGUpIHJldHVybiBH dGtfQWNjZWxfRW50cnk7CgogICBwcm9jZWR1cmUgTG9ja19FbnRyeQogICAgIChBY2NlbF9Hcm91 cCA6IGluIEd0a19BY2NlbF9Hcm91cDsKICAgICAgQWNjZWxfS2V5ICAgOiBpbiBHZGsuVHlwZXMu R2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9Nb2RzICA6IGluIEdkay5UeXBlcy5HZGtfTW9kaWZp ZXJfVHlwZSk7CgogICBwcm9jZWR1cmUgVW5sb2NrX0VudHJ5CiAgICAgKEFjY2VsX0dyb3VwIDog aW4gR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICA6IGluIEdkay5UeXBlcy5HZGtf S2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgIDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9U eXBlKTsKCiAgIHByb2NlZHVyZSBBZGQKICAgICAoQWNjZWxfR3JvdXAgIDogaW4gR3RrX0FjY2Vs X0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAgOiBpbiAgICAgR2RrLlR5cGVzLkdka19LZXlfVHlw ZTsKICAgICAgQWNjZWxfTW9kcyAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlw ZTsKICAgICAgQWNjZWxfRmxhZ3MgIDogaW4gICAgIEd0a19BY2NlbF9GbGFnczsKICAgICAgT2Jq ZWN0ICAgICAgIDogYWNjZXNzIEd0ay5PYmplY3QuR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAg ICAgIEFjY2VsX1NpZ25hbCA6IGluICAgICBTdHJpbmcpOwoKICAgcHJvY2VkdXJlIFJlbW92ZQog ICAgIChBY2NlbF9Hcm91cCA6IGluIEd0a19BY2NlbF9Hcm91cDsKICAgICAgQWNjZWxfS2V5ICAg OiBpbiAgICAgR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgICAgQWNjZWxfTW9kcyAgOiBpbiAg ICAgR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlOwogICAgICBPYmplY3QgICAgICA6IGFjY2Vz cyBHdGsuT2JqZWN0Lkd0a19PYmplY3RfUmVjb3JkJ0NsYXNzKTsKCiAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAtLSAgQWNjZWxlcmF0b3IgU2lnbmFscyAgLS0KICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgSGFuZGxlX0FkZAogICAgIChPYmplY3Qg ICAgICAgICAgOiBhY2Nlc3MgR3RrLk9iamVjdC5HdGtfT2JqZWN0X1JlY29yZCdDbGFzczsKICAg ICAgQWNjZWxfU2lnbmFsX0lkIDogaW4gICAgIEd1aW50OwogICAgICBBY2NlbF9Hcm91cCAgICAg OiBpbiAgICAgR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAgICAgOiBpbiAgICAg R2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgICAgQWNjZWxfTW9kcyAgICAgIDogaW4gICAgIEdk ay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZTsKICAgICAgQWNjZWxfRmxhZ3MgICAgIDogaW4gICAg IEd0a19BY2NlbF9GbGFncyk7CgogICBwcm9jZWR1cmUgSGFuZGxlX1JlbW92ZQogICAgIChPYmpl Y3QgICAgICA6IGFjY2VzcyBHdGsuT2JqZWN0Lkd0a19PYmplY3RfUmVjb3JkJ0NsYXNzOwogICAg ICBBY2NlbF9Hcm91cCA6IGluICAgICBHdGtfQWNjZWxfR3JvdXA7CiAgICAgIEFjY2VsX0tleSAg IDogaW4gICAgIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgIDogaW4g ICAgIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7CgogICAtLSAgZnVuY3Rpb24gQ3JlYXRl X0FkZAogICAtLSAgZnVuY3Rpb24gQ3JlYXRlX1JlbW92ZQogICAtLSAgcHJvY2VkdXJlIE1hcnNo YWxfQWRkCiAgIC0tICBwcm9jZWR1cmUgTWFyc2hhbF9SZW1vdmUKCiAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICAtLSAgTWlzY2VsbGFuZW91cyAgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgogICAtLSAgZnVuY3Rpb24gQWNjZWxfR3JvdXBzX0Zyb21fT2JqZWN0CiAgIC0tICBmdW5jdGlv biBFbnRyaWVzX0Zyb21fT2JqZWN0CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgQWNj ZWxlcmF0b3JzICAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gQWNjZWxl cmF0b3JfVmFsaWQKICAgICAoS2V5dmFsICAgIDogaW4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsK ICAgICAgTW9kaWZpZXJzIDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKSByZXR1cm4g Qm9vbGVhbjsKCiAgIHByb2NlZHVyZSBBY2NlbGVyYXRvcl9QYXJzZQogICAgIChBY2NlbGVyYXRv ciAgICAgIDogaW4gICAgIFN0cmluZzsKICAgICAgQWNjZWxlcmF0b3JfS2V5ICA6ICAgIG91dCBH ZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbGVyYXRvcl9Nb2RzIDogICAgb3V0IEdk ay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7CgogICBmdW5jdGlvbiBBY2NlbGVyYXRvcl9OYW1l CiAgICAgKEFjY2VsZXJhdG9yX0tleSAgOiBpbiBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAg ICBBY2NlbGVyYXRvcl9Nb2RzIDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKSByZXR1 cm4gU3RyaW5nOwoKICAgcHJvY2VkdXJlIEFjY2VsZXJhdG9yX1NldF9EZWZhdWx0X01vZF9NYXNr CiAgICAgKERlZmF1bHRfTW9kX01hc2sgOiBpbiBHZGsuVHlwZXMuR2RrX01vZGlmaWVyX1R5cGUp OwoKICAgZnVuY3Rpb24gQWNjZWxlcmF0b3JfR2V0X0RlZmF1bHRfTW9kX01hc2sKICAgICByZXR1 cm4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlOwoKcHJpdmF0ZQoKICAgQWNjZWxfVmlzaWJs ZSAgICAgICAgOiBjb25zdGFudCBHdGtfQWNjZWxfRmxhZ3MgOj0gMiAqKiAwOwogICBBY2NlbF9T aWduYWxfVmlzaWJsZSA6IGNvbnN0YW50IEd0a19BY2NlbF9GbGFncyA6PSAyICoqIDE7CiAgIEFj Y2VsX0xvY2tlZCAgICAgICAgIDogY29uc3RhbnQgR3RrX0FjY2VsX0ZsYWdzIDo9IDIgKiogMjsK ICAgQWNjZWxfTWFzayAgICAgICAgICAgOiBjb25zdGFudCBHdGtfQWNjZWxfRmxhZ3MgOj0gMTYj MDcjOwoKICAgcHJhZ21hIEltcG9ydCAoQywgQWNjZWxlcmF0b3JfU2V0X0RlZmF1bHRfTW9kX01h c2ssCiAgICAgICAgICAgICAgICAgICJndGtfYWNjZWxlcmF0b3Jfc2V0X2RlZmF1bHRfbW9kX21h c2siKTsKICAgcHJhZ21hIEltcG9ydCAoQywgQWNjZWxlcmF0b3JfR2V0X0RlZmF1bHRfTW9kX01h c2ssCiAgICAgICAgICAgICAgICAgICJndGtfYWNjZWxlcmF0b3JfZ2V0X2RlZmF1bHRfbW9kX21h c2siKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0RlZmF1bHQsICJndGtfYWNjZWxfZ3JvdXBf Z2V0X2RlZmF1bHQiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgTG9jaywgImd0a19hY2NlbF9ncm91 cF9sb2NrIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVubG9jaywgImd0a19hY2NlbF9ncm91cF91 bmxvY2siKTsKZW5kIEd0ay5BY2NlbF9Hcm91cDsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAGduYXRidWcvZ3RrLW9iamVjdC5hZHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAw MDE3NTEAMDAwMDAwMAAwMDAwMDA0MDY1MgAwNzU1MTEwNzYzMgAwMTQwNzQAIDAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAALS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3Ig dGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVk IENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAg ICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAg LS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlv biwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1 bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFu ICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVz ZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90 IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhl Y3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNl LiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tICBUaGlzIGlzIHRo ZSBiYXNlIGNsYXNzIG9mIHRoZSB3aWRnZXQgaGllcmFyY2h5LgotLSAgRXZlcnl0aGluZyBpbiBH dGtBZGEgaW5oZXJpdHMgZnJvbSB0aGlzIGNsYXNzIEd0a19PYmplY3QsIGV4Y2VwdCBmb3IgYSBm ZXcKLS0gIHN0cnVjdHVyZXMgaW4gdGhlIEdkay4qIHBhY2thZ2VzIChsb3ctbGV2ZWwgZHJhd2lu ZyByb3V0aW5lcykuCi0tCi0tICBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2V0IG9mIGhhbmRmdWwg ZmVhdHVyZXMgdGhhdCB5b3UgY2FuIGNob29zZSB0byByZXVzZQotLSAgaW4geW91ciBhcHBsaWNh dGlvbnM6Ci0tCi0tICAtIFJlZmVyZW5jZSBjb3VudGluZzogYW4gb2JqZWN0IGlzIG5vdCBkZWxl dGVkIHdoaWxlIHRoZXJlIGV4aXN0cyBhdCBsZWFzdAotLSAgICBvbmUgcmVmZXJlbmNlIHRvIGl0 LiBBbHRob3VnaCBHdGtBZGEgbW9zdGx5IHRha2VzIGNhcmUgb2YgdGhhdCBhc3BlY3QKLS0gICAg dHJhbnNwYXJlbnRseSwgeW91IG1pZ2h0IG5lZWQgaW4gc29tZSBvYnNjdXJlIGNhc2VzIHRvIGlu Y3JlbWVudCBvcgotLSAgICBkZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYSB3 aWRnZXQgbWFudWFsbHksIHNvIHRoYXQgaXQgaXMgbm90Ci0tICAgIHJlbW92ZWQgZnJvbSBtZW1v cnkgd2hpbGUgeW91IHN0aWxsIG5lZWQgaXQuCi0tCi0tICAtIFVzZXIgZGF0YTogYW55IG51bWJl ciBvZiBkYXRhIGNhbiBiZSBhdHRhY2hlZCB0byBhIEd0a19PYmplY3Qgb3Igb25lIG9mCi0tICAg IGl0cyBjaGlsZHJlbi4gVGhlc2VzIGRhdGEgYXJlIHJlZmVyZW5jZXMgYnkgYSBTdHJpbmcsIGlu IGEgaGFzaC10YWJsZS4KLS0gICAgR3RrQWRhIGl0c2VsZiB1c2VzIHRoaXMgZmVhdHVyZSB0byBw cm92aWRlIGFuIGVhc3kgY29udmVyc2lvbiBiZXR3ZWVuIEMKLS0gICAgYW5kIEFkYSB3aWRnZXRz LgotLSAgICBBbHRob3VnaCB5b3UgbWlnaHQgcHJlZmVyIHRvIGhhdmUgYSBjb21wbGV0ZWx5IG9i amVjdC1vcmllbnRlZAotLSAgICBhcHBsaWNhdGlvbiAoYW5kIHRodXMgYXNzb2NpYXRlIGRhdGEg dGhyb3VnaCBjbGFzcyBpbmhlcml0YW5jZSksIGl0Ci0tICAgIG1pZ2h0IGJlIGNvbnZlbmllbnQg dG8gZGlyZWN0bHkgYXR0YWNoIHNvbWUgZGF0YSB0byB5b3VyIG9iamVjdHMuCi0tCi0tICAtIEl0 IGFsc28gY29udGFpbnMgdGhlIGJhc2ljIHN0cnVjdHVyZXMgYW5kIHN1YnByb2dyYW1zIHJlcXVp cmVkIGZvciBzaWduYWwKLS0gICAgZW1pc3Npb24uIFRoaXMgaXMgb2YgY291cnNlIHVzZWQgdG8g aW1wbGVtZW50IHRoZSBzaWduYWwgbWVjaGFuaXNtIGluCi0tICAgIEd0a0FkYSBpdHNlbGYsIGJ1 dCBjYW4gYWxzbyBiZSB1c2VkIHRvIGltcGxlbWVudCBhIE1vZGVsL1ZpZXcvQ29udHJvbGxlcgot LSAgICBmcmFtZXdvcmsuCi0tCi0tICBOb3RlIHRoYXQgYSBsb3Qgb2YgZnVuY3Rpb25zIHByb3Zp ZGVkIGluIHRoZSBDIGludGVyZmFjZSBhcmUgbm90IHByb3ZpZGVkCi0tICBoZXJlLiBUaGV5IGFy ZSB1c2VkIHRvIGVtdWxhdGUgYW4gb2JqZWN0LW9yaWVudGVkIGxhbmd1YWdlIGluIEMsIHdoaWNo IGNhbgotLSAgb2YgY291cnNlIGJlIGRvbmUgbXVjaCBtb3JlIGNvbnZlbmllbnRseSBpbiBBZGEu IFRoZXJlZm9yZSBtb3N0IG9mIHRoZXNlCi0tICBmdW5jdGlvbnMgYXJlIG5vdCBuZWVkZWQuCi0t Ci0tICBIZXJlIGlzIGEgYnJpZWYgZXhwbGFuYXRpb24gb24gaG93IHRoZSByZWZlcmVuY2UgY291 bnRpbmcgYW5kIGRlc3RydWN0aW9uCi0tICBwcm9jZXNzIHdvcmsuIFlvdSBzaG91bGQgbm90IGhh dmUgdG8gdW5kZXJzdGFuZCBhbGwgdGhpcyB0byB1c2UgR3RrQWRhLCBidXQKLS0gIGl0IG1pZ2h0 IGhlbHAgYW55d2F5LgotLQotLSAgV2hlbiBhbiBvYmplY3QgKGRlc2NlbmRhbnQgb2YgR3RrLk9i amVjdCkgaXMgY3JlYXRlZCwgaXQgaGFzIGluaXRpYWxseSBhCi0tICByZWZfY291bnQgb2YgMS4g QSBmbGFnIGlzIHNldCB0byBzYXkgdGhlIG9iamVjdCBpcyAiZmxvYXRpbmciLiAgU2VlIHRoZQot LSAgRmxhZ3MgZnVuY3Rpb25zIGluIHRoaXMgcGFja2FnZSBmb3IgaG93IHRvIHJldHJpZXZlIHRo ZSBzdGF0dXMgb2YgdGhpcwotLSAgZmxhZy4KLS0KLS0gIFdoZW4gdGhlIG9iamVjdCBnZXRzIGEg cGFyZW50IChpZSBHdGsuV2lkZ2V0LlNldF9QYXJlbnQgaXMgY2FsbGVkLCBwb3NzaWJseQotLSAg ZnJvbSBvdGhlciBzdWJwcm9ncmFtcyBsaWtlIEd0ay5Db250YWluZXIuQWRkLCBHdGsuQm94LlBh Y2tfU3RhcnQsIC4uLiksCi0tICB0aGUgcmVmX2NvdW50IG9mIHRoZSBvYmplY3QgaXMgaW5jcmVt ZW50ZWQgdG8gMi4KLS0gIElmIHRoZSBvYmplY3Qgd2FzIHN0aWxsICJmbG9hdGluZyIsIGl0IGlz IGFsc28gInNpbmtlZCIsIGllIGl0cyByZWZfY291bnQKLS0gIGlzIGRlY3JlbWVudGVkIHRvIDEs IGFuZCB0aGUgImZsb2F0aW5nIiBmbGFnIGlzIGNsZWFyZWQuCi0tCi0tICBUaGUgc2FtZSBiZWhh dmlvciBhcyBhYm92ZSBoYXBwZW5zIHdoZW4gdGhlIG9iamVjdCBpcyByZWdpc3RlcmVkIGFzIGEK LS0gIHRvcC1sZXZlbCB3aWRnZXQgKGkuZS4gd2Uga25vdyBpdCB3b24ndCBoYXZlIGFueSBwYXJl bnQpLgotLQotLSAgVGh1cyB0aGUgbm9ybWFsIGxpZmUgY3ljbGUgb2YgYW4gb2JqZWN0IGlzIHRv IGhhdmUgYSByZWZfY291bnQgdG8gMSwgYW5kCi0tICBub3QgYmUgYSAiZmxvYXRpbmciIG9iamVj dC4KLS0KLS0gIFdoZW4gdGhlIG9iamVjdCBpcyBkZXN0cm95ZWQsIHRoZSBmb2xsb3dpbmcgaGFw cGVuczoKLS0gICAgIEEgdGVtcG9yYXJ5IHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IGlzIGNyZWF0 ZWQgKGNhbGwgdG8gUmVmKSwgYW5kCi0tICAgICAgICByZWZfY291bnQgdG8gMi4KLS0gICAgIFRo ZSBvYmplY3QgaXMgc2h1dGRvd246Ci0tICAgICAgICBJdCBpcyByZW1vdmVkIGZyb20gaXRzIHBh cmVudCAoaWYgYW55KSwgYW5kIGl0cyByZWZfY291bnQgaXMKLS0gICAgICAgICAgZGVjcmVtZW50 ZWQgdG8gMS4KLS0gICAgICAgIFRoZSAiZGVzdHJveSIgc2lnbmFsIGlzIGVtaXR0ZWQsIHRoZSB1 c2VyJ3MgaGFuZGxlcnMgYXJlIGNhbGxlZCwKLS0gICAgICAgICAgYW5kIHRoZW4gYWxsIHRoZSBo YW5kbGVycyBjb25uZWN0ZWQgdG8gdGhlIG9iamVjdCBhcmUgZGVzdHJveWVkLgotLSAgICAgVGhl IG9iamVjdCBpcyB1bnJlZi1lZC4gSWYgaXRzIHJlZl9jb3VudCBnb2VzIGRvd24gdG8gMCAobm9y bWFsIGNhc2UpLAotLSAgICAgICAgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBvYmplY3QgYW5kIGl0 cyB1c2VyX2RhdGEgaXMgZnJlZWQuCi0tCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lv bj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBTeXN0ZW07CndpdGggR3RrYWRhLlR5cGVzOwoKcGFj a2FnZSBHdGsuT2JqZWN0IGlzCgogICB0eXBlIEd0a19PYmplY3RfUmVjb3JkIGlzIG5ldyBHdGsu Um9vdF9UeXBlIHdpdGggcHJpdmF0ZTsKICAgdHlwZSBHdGtfT2JqZWN0IGlzIGFjY2VzcyBhbGwg R3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CgogICBwcm9jZWR1cmUgUmVmIChPYmplY3QgOiBhY2Nl c3MgR3RrX09iamVjdF9SZWNvcmQpOwogICAtLSAgSW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291 bnQgb24gdGhlIG9iamVjdC4KICAgLS0gIFNpbmNlIGFuIG9iamVjdCBpcyBub3QgZGVsZXRlZCB3 aGlsZSBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG5vdCBudWxsLAogICAtLSAgdGhpcyBpcyBhIHdh eSB0byBrZWVwIGFuIG9iamVjdCBpbiBtZW1vcnkuCiAgIC0tICBHdGtBZGEgbW9zdGx5IHRha2Vz IGNhcmUgb2YgZXZlcnl0aGluZywgYW5kIHlvdSBzaG91bGQgbm90IG5lZWQgdGhpcwogICAtLSAg ZnVuY3Rpb24gZXhjZXB0IGluIHNwZWNpYWwgY2FzZXMuCgogICBwcm9jZWR1cmUgVW5yZWYgKE9i amVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCk7CiAgIC0tICBEZWNyZW1lbnQgdGhlIHJl ZmVyZW5jZSBjb3VudCBmb3IgYW4gb2JqZWN0LgogICAtLSAgSWYgaXQgcGFzc2VkIGZyb20gMSB0 byAwLCB0aGVuIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgb2JqZWN0IGlzCiAgIC0tICBm cmVlZCwgYW5kIHRoZSBvYmplY3Qgbm8gbG9uZ2VyIHVzYWJsZS4KICAgLS0gIEl0IGlzIGJldHRl ciB0byB1c2UgRGVzdHJveSB0aGFuIFVucmVmIHRvIGRlc3Ryb3kgYW4gb2JqZWN0LCBhbHRob3Vn aAogICAtLSAgYm90aCBtaWdodCBiZSBhY2NlcHRhYmxlLgoKICAgcHJvY2VkdXJlIFNpbmsgKE9i amVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCk7CiAgIC0tICBTaW5rIHRoZSBvYmplY3Qu CiAgIC0tICBJZiB0aGUgb2JqZWN0IGlzIGZsb2F0aW5nIChkb2VzIG5vdCBoYXZlIGEgcGFyZW50 IHlldCksIGl0IGlzIHVucmVmLWVkCiAgIC0tICBvbmNlIGFuZCB0aGUgZmxvYXRpbmcgZmxhZyBp cyBjbGVhcmVkLgoKICAgcHJvY2VkdXJlIERlc3Ryb3kgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2Jq ZWN0X1JlY29yZCk7CiAgIC0tICBEZXN0cm95IHRoZSBvYmplY3QuCiAgIC0tICBUaGlzIGVtaXRz IGEgImRlc3Ryb3kiIHNpZ25hbCwgY2FsbHMgYWxsIHlvdXIgaGFuZGxlcnMsIGFuZCB0aGVuCiAg IC0tICB1bmNvbm5lY3RzIHRoZW0gYWxsLiBUaGUgb2JqZWN0IGlzIHRoZW4gdW5yZWYtZWQsIGFu ZCBpZiBpdHMgcmVmZXJlbmNlCiAgIC0tICBjb3VudCBnb2VzIGRvd24gdG8gMCwgdGhlIG1lbW9y eSBhc3NvY2lhdGVkIHdpdGggdGhlIG9iamVjdCBhbmQgaXRzCiAgIC0tICB1c2VyIGRhdGEgaXMg ZnJlZWQuCiAgIC0tICBOb3RlIHRoYXQgd2hlbiB5b3UgZGVzdHJveSBoYW5kbGVycyBhcmUgY2Fs bGVkLCB0aGUgdXNlcl9kYXRhIGlzIHN0aWxsCiAgIC0tICBhdmFpbGFibGUuCgogICBmdW5jdGlv biBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSBpbnRlcm5h bCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBHdGtfT2JqZWN0IGludGVybmFsbHkuCiAgIHByYWdt YSBJbXBvcnQgKEMsIEdldF9UeXBlLCAiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwoKICAgZnVuY3Rp b24gR2V0X1R5cGUgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCkgcmV0dXJuIEd0 a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSB0eXBlIG9mIE9iamVjdC4KICAgLS0gIFRoaXMgZnVu Y3Rpb24gaXMgbW9zdGx5IHVzZWQgaW50ZXJuYWxseSwgc2luY2UgaW4gQWRhIHlvdSBjYW4gc2lt cGx5CiAgIC0tICB0ZXN0IHdoZXRoZXIgYW4gb2JqZWN0IGJlbG9uZyB0byBhIGNsYXNzIHdpdGgg YSBzdGF0ZW1lbnQgbGlrZToKICAgLS0KICAgLS0gICAgIGlmIE9iamVjdCBpbiBHdGtfQnV0dG9u X1JlY29yZCdDbGFzcyB0aGVuIC4uLgogICAtLQogICAtLSAgd2hpY2ggaXMgZWFzaWVyLgoKICAg LS0tLS0tLS0tLS0tLQogICAtLSAgRmxhZ3MgIC0tCiAgIC0tLS0tLS0tLS0tLS0KICAgLS0gIEVh Y2ggb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNldCBvZiBmbGFncywgdGhhdCByZXBvcnRz IHRoZSBzdGF0ZQogICAtLSAgb2YgdGhlIG9iamVjdC4KICAgLS0gIFRoZSBmb2xsb3dpbmcgZmxh Z3MgYXJlIGtub3duIGJ5IGFsbCBvYmplY3RzOgogICAtLQogICAtLSAgLSAiRGVzdHJveWVkIjoK ICAgLS0gICAgIFNldCBpZiB0aGUgb2JqZWN0IGlzIG1hcmtlZCBhcyBkZXN0cm95ZWQgKGlmIGl0 cyByZWZlcmVuY2UgY291bnQgaXMKICAgLS0gICAgIG5vdCB5ZXQgMCwgdGhlIG1lbW9yeSBoYXMg bm90IGJlZW4gZnJlZWQsIGJ1dCB5b3Ugc2hvdWxkIG5vdCB1c2UgaXQKICAgLS0gICAgIGFueXdh eSkuCiAgIC0tCiAgIC0tICAtICJGbG9hdGluZyI6CiAgIC0tICAgICBUaGUgb2JqZWN0IGhhcyBu byBwYXJlbnQgeWV0LCBzaW5jZSBpdCB3YXMganVzdCBjcmVhdGVkLiBJdHMKICAgLS0gICAgIHJl ZmVyZW5jZSBjb3VudCBpcyBzdGlsbCAxIChhcyBpdCB3YXMgaW5pdGlhbGx5KS4gVGhpcyBmbGFn IGlzCiAgIC0tICAgICBjbGVhcmVkIGFzIHNvb24gYXMgU2V0X1BhcmVudCBpcyBjYWxsZWQgb24g dGhlIHdpZGdldCBvciB0aGUgd2lkZ2V0CiAgIC0tICAgICBpcyBxdWFsaWZpZWQgYXMgYSB0b3Bs ZXZlbCB3aWRnZXQgKHNlZQogICAtLSAgICAgR3RrLkNvbnRhaW5lci5SZWdpc3Rlcl9Ub3BsZXZl bCkuCiAgIC0tCiAgIC0tICAtICJDb25uZWN0ZWQiOgogICAtLSAgICAgU2V0IGlmIHRoZSBvYmpl Y3QgaXMgY29ubmVjdGVkIHRvIGF0IGxlYXN0IG9uZSBoYW5kbGVyCiAgIC0tCiAgIC0tICAtICJD b25zdHJ1Y3RlZCI6CiAgIC0tICAgICBTZXQgaWYgdGhlIG9iamVjdCBoYXMgYmVlbiBmdWxseSBj b25zdHJ1Y3RlZCwgYW5kIGlzIG5vdyB1c2FibGUuCiAgIC0tICAgICBFdmVyeSB0aW1lIHlvdSBj cmVhdGUgYW4gb2JqZWN0IGF0IHRoZSBHdGtBZGEgbGV2ZWwsIHRoZSBvYmplY3Qgd2lsbAogICAt LSAgICAgYmUgZnVsbHkgY29uc3RydWN0ZWQsIGFuZCB5b3Ugc2hvdWxkbid0IGhhdmUgdG8gd29y cnkgYWJvdXQgdGhhdAogICAtLSAgICAgZmxhZy4KCiAgIERlc3Ryb3llZCAgIDogY29uc3RhbnQg Oj0gMiAqKiAwOwogICBGbG9hdGluZyAgICA6IGNvbnN0YW50IDo9IDIgKiogMTsKICAgQ29ubmVj dGVkICAgOiBjb25zdGFudCA6PSAyICoqIDI7CiAgIENvbnN0cnVjdGVkIDogY29uc3RhbnQgOj0g MiAqKiAzOwoKICAgZnVuY3Rpb24gRmxhZ3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1Jl Y29yZCkgcmV0dXJuIEd1aW50MzI7CiAgIC0tICBSZXR1cm4gdGhlIGZsYWdzIHRoYXQgYXJlIHNl dCBmb3IgdGhlIG9iamVjdCwgYXMgYSBiaW5hcnkgbWFzay4KCiAgIHByb2NlZHVyZSBTZXRfRmxh Z3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZDsKICAgICAgICAgICAgICAgICAg ICAgICAgRmxhZ3MgIDogaW4gICAgIEd1aW50MzIpOwogICAtLSAgU2V0IHNvbWUgc3BlY2lmaWMg ZmxhZ3MgZm9yIHRoZSBvYmplY3QuCiAgIC0tICBGbGFncyBpcyBhIG1hc2sgdGhhdCB3aWxsIGJl IGFkZGVkIHRvIHRoZSBjdXJyZW50IGZsYWdzIG9mIHRoZSBvYmplY3QuCgogICBwcm9jZWR1cmUg VW5zZXRfRmxhZ3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZDsKICAgICAgICAg ICAgICAgICAgICAgICAgICBGbGFncyAgOiBpbiAgICAgR3VpbnQzMik7CiAgIC0tICBVbnNldCBz b21lIHNwZWNpZmljIGZsYWdzIGZvciB0aGUgb2JqZWN0LgogICAtLSAgRmxhZ3MgaXMgYSBtYXNr IHRoYXQgd2lsbCBiZSBkZWxldGVkIGZyb20gdGhlIGN1cnJlbnQgZmxhZ3Mgb2YgdGhlCiAgIC0t ICBvYmplY3QuCgogICBmdW5jdGlvbiBGbGFnX0lzX1NldCAoT2JqZWN0IDogYWNjZXNzIEd0a19P YmplY3RfUmVjb3JkOwogICAgICAgICAgICAgICAgICAgICAgICAgRmxhZyAgIDogaW4gICAgIEd1 aW50MzIpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLSAgUmV0 dXJuIFRydWUgaWYgdGhlIHNwZWNpZmljIGZsYWcgRmxhZyBpcyBzZXQgZm9yIHRoZSBvYmplY3Qu CgogICBmdW5jdGlvbiBEZXN0cm95ZWRfSXNfU2V0IChPYmplY3QgOiBhY2Nlc3MgR3RrX09iamVj dF9SZWNvcmQnQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xl YW47CiAgIC0tICBUZXN0IGlmIHRoZSBEZXN0cm95ZWQgZmxhZyBpcyBzZXQgZm9yIHRoZSBvYmpl Y3QuCgogICBmdW5jdGlvbiBGbG9hdGluZ19Jc19TZXQgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2Jq ZWN0X1JlY29yZCdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29s ZWFuOwogICAtLSAgVGVzdCBpZiB0aGUgRmxvYXRpbmcgZmxhZyBpcyBzZXQgZm9yIHRoZSBvYmpl Y3QuCgogICBmdW5jdGlvbiBDb25uZWN0ZWRfSXNfU2V0IChPYmplY3QgOiBhY2Nlc3MgR3RrX09i amVjdF9SZWNvcmQnQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJv b2xlYW47CiAgIC0tICBUZXN0IGlmIHRoZSBDb25uZWN0ZWQgZmxhZyBpcyBzZXQgZm9yIHRoZSBv YmplY3QuCgogICBmdW5jdGlvbiBDb25zdHJ1Y3RlZF9Jc19TZXQgKE9iamVjdCA6IGFjY2VzcyBH dGtfT2JqZWN0X1JlY29yZCdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBCb29sZWFuOwogICAtLSAgVGVzdCBpZiB0aGUgQ29uc3RydWN0ZWQgZmxhZyBpcyBzZXQg Zm9yIHRoZSBvYmplY3QKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIENyZWF0 aW5nIG5ldyB3aWRnZXRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBU aGVzZSB0eXBlcyBhbmQgZnVuY3Rpb25zIGFyZSB1c2VkIG9ubHkgd2hlbiBjcmVhdGluZyBuZXcg d2lkZ2V0IHR5cGVzCiAgIC0tICBkaXJlY3RseSBpbiBBZGEuIFRoZXNlIGZ1bmN0aW9ucyBpbml0 aWFsaXplIHRoZSBjbGFzc2VzIHNvIHRoYXQgdGhleSBhcmUKICAgLS0gIGNvcnJlY3RseSByZWNv Z25pemVkIGJ5IGd0aysgaXRzZWxmCiAgIC0tICBTZWUgdGhlIEd0a0FkYSB1c2VyJ3MgZ3VpZGUg Zm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSB5b3VyCiAgIC0tICBvd24gd2lk Z2V0IHR5cGVzIGluIEFkYS4KCiAgIHR5cGUgU2lnbmFsX1BhcmFtZXRlcl9UeXBlcyBpcyBhcnJh eSAoTmF0dXJhbCByYW5nZSA8PiwgTmF0dXJhbCByYW5nZSA8PikKICAgICBvZiBHdGtfVHlwZTsK ICAgLS0gIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVycyBmb3IgZWFjaCBldmVudC4K ICAgLS0gIEVhY2ggZXZlbnQgZGVmaW5lZCB3aXRoIEluaXRpYWxpemVfQ2xhc3NfUmVjb3JkIGJl bG93IHNob3VsZCBoYXZlIGFuCiAgIC0tICBlbnRyeSBpbiB0aGlzIHRhYmxlLiBJZiBHdGtfVHlw ZV9Ob25lIGlzIGZvdW5kIGluIHRoZSB0YWJsZSwgaXQgaXMKICAgLS0gIGlnbm9yZWQuIEZvciBp bnN0YW5jZSwgYSBTaWduYWxfUGFyYW1ldGVyX1R5cGUgbGlrZToKICAgLS0gICAgKDEgPT4gKDEg PT4gR2RrX1R5cGVfR2RrX0V2ZW50LCAyID0+IEdka19UeXBlX05vbmRlKSwKICAgLS0gICAgIDIg PT4gKDEgPT4gR2RrX1R5cGVfSW50LCAgICAgICAyID0+IEdka19UeXBlX0ludCkpOwogICAtLSAg ZGVmaW5lcyB0d28gc2lnbmFscywgdGhlIGZpcnN0IHdpdGggYSBzaW5nbGUgR2RrX0V2ZW50IHBh cmFtZXRlciwgdGhlCiAgIC0tICBzZWNvbmQgd2l0aCB0d28gaW50cyBwYXJhbWV0ZXJzLgoKICAg TnVsbF9QYXJhbWV0ZXJfVHlwZXMgOiBjb25zdGFudCBTaWduYWxfUGFyYW1ldGVyX1R5cGVzICgx IC4uIDAsIDEgLi4gMCkgOj0KICAgICAob3RoZXJzID0+IChvdGhlcnMgPT4gR3RrX1R5cGVfTm9u ZSkpOwogICAtLSAgQW4gZW1wdHkgYXJyYXksIHVzZWQgYXMgYSBkZWZhdWx0IHBhcmFtZXRlciBp biBJbml0aWFsaXplX0NsYXNzX1JlY29yZC4KCiAgIHByb2NlZHVyZSBJbml0aWFsaXplX0NsYXNz X1JlY29yZAogICAgIChPYmplY3QgICAgICAgICAgICAgICAgICAgIDogYWNjZXNzIEd0a19PYmpl Y3RfUmVjb3JkJ0NsYXNzOwogICAgICBTaWduYWxzICAgICAgICAgICAgICAgICAgIDogR3RrYWRh LlR5cGVzLkNoYXJzX1B0cl9BcnJheTsKICAgICAgQ2xhc3NfUmVjb3JkICAgICAgICAgICAgICA6 IGluIG91dCBTeXN0ZW0uQWRkcmVzczsKICAgICAgUGFyYW1ldGVycyAgICAgICAgICAgICAgICA6 IFNpZ25hbF9QYXJhbWV0ZXJfVHlwZXMgOj0KICAgICAgICBOdWxsX1BhcmFtZXRlcl9UeXBlczsK ICAgICAgU2Nyb2xsX0FkanVzdG1lbnRzX1NpZ25hbCA6IEd1aW50IDo9IDApOwogICAtLSAgQ3Jl YXRlIHRoZSBjbGFzcyByZWNvcmQgZm9yIGEgbmV3IHdpZGdldCB0eXBlLgogICAtLSAgSXQgaXMg YXNzb2NpYXRlZCB3aXRoIFNpZ25hbHMnTGVuZ3RoIG5ldyBzaWduYWxzLiBBIHBvaW50ZXIgdG8g dGhlCiAgIC0tICBuZXdseSBjcmVhdGVkIHN0cnVjdHVyZSBpcyBhbHNvIHJldHVybmVkIGluIENs YXNzX1JlY29yZC4KICAgLS0gIElmIENsYXNzX1JlY29yZCAvPSBTeXN0ZW0uTnVsbF9BZGRyZXNz LCBubyBtZW1vcnkgYWxsb2NhdGlvbiBpcwogICAtLSAgcGVyZm9ybWVkLCB3ZSBqdXN0IHJldXNl IGl0LgogICAtLSAgTm90ZTogVGhlIHVuZGVybHlpbmcgQyB3aWRnZXQgbXVzdCBhbHJlYWR5IGhh dmUgYmVlbiBpbml0aWFsaXplZAogICAtLSAgYnkgYSBjYWxsIHRvIGl0cyBwYXJlbnQncyBJbml0 aWFsaXplIGZ1bmN0aW9uLgogICAtLSAgUGFyYW1ldGVycydMZW5ndGggc2hvdWxkIGJlIHRoZSBz YW1lIGFzIFNpZ25hbHMnTGVuZ3RoLCBvciB0aGUgcmVzdWx0CiAgIC0tICBpcyB1bmRlZmluZWQu CiAgIC0tICBBcyBhIHNwZWNpYWwgY2FzZSwgaWYgUGFyYW1ldGVycyBoYXMgaXRzIGRlZmF1bHQg dmFsdWUsIGFsbCBzaWduYWxzIGFyZQogICAtLSAgY3JlYXRlZCB3aXRoIG5vIGFyZ3VtZW50LiBU aGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICAgLS0gIG1haW5seSwgYW5k IHlvdSBzaG91bGQgaW5zdGVhZCBnaXZlIGl0IGFuIGV4cGxpY2l0IHZhbHVlLgogICAtLQogICAt LSAgU2Nyb2xsX0FkanVzdG1lbnRzX1NpZ25hbCBpcyB0aGUgaW5kZXggb2YgdGhlIG5ldyBzaWdu YWwgdGhhdCB3aWxsIGJlCiAgIC0tICBlbWl0dGVkIHdoZW4gR3RrLldpZGdldC5TZXRfU2Nyb2xs X0FkanVzdG1lbnRzIGlzIGNhbGxlZC4gSWYgaXQgaXMgMCwKICAgLS0gIG5vIHNpZ25hbCBpcyBl bWl0dGVkLiBUaGUgZmlyc3Qgc2lnbmFsIGluIFNpZ25hbHMgaGFzIGluZGV4IDEuIE5vdGUKICAg LS0gIHRoYXQgdGhlIGhhbmRsZXJzIGZvciB0aGlzIHNpZ25hbCB0YWtlIHR3byBhcmd1bWVudHMg aW4gYWRkaXRpb24gdG8gdGhlCiAgIC0tICB3aWRnZXQgKHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0 aWNhbCBhZGp1c3RtZW50cyB0byBiZSB1c2VkKS4gU2VlCiAgIC0tICBHdGsuU2Nyb2xsZWRfV2lu ZG93IGFuZCBHdGsuV2lkZ2V0LlNldF9TY3JvbGxfQWR1c3RtZW50IGZvciBtb3JlCiAgIC0tICBp bmZvcm1hdGlvbiBvbiB0aGlzIHNpZ25hbC4KICAgLS0KICAgLS0gIE9ubHkgdGhlIHNpZ25hbHMg d2l0aCBubyBwYXJhbWV0ZXIgY2FuIGJlIGNvbm5lY3RlZCBmcm9tIEMuIEhvd2V2ZXIsCiAgIC0t ICBhbnkgc2lnbmFsIGNhbiBiZSBjb25uZWN0ZWQgZnJvbSBBZGEuIFRoaXMgaXMgZHVlIHRvIHRo ZSB3YXkgd2UgZGVmaW5lCiAgIC0tICBkZWZhdWx0IG1hcnNoYWxsZXJzIGZvciB0aGUgc2lnbmFs cy4KCiAgIC0tLS0tLS0tLS0tLS0tLQogICAtLSBVc2VyX0RhdGEgLS0KICAgLS0tLS0tLS0tLS0t LS0tCiAgIC0tICBUaGlzIHBhY2thZ2UgYWxsb3cgeW91IHRvIGFzc29jaWF0ZSB5b3VyIG93biBE YXRhIHRvIHRoZSBDIHdpZGdldHMuIE5vCiAgIC0tICB0eXBlIHZlcmlmaWNhdGlvbiBpcyBtYWRl IHRvIGNoZWNrIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QKICAgLS0gIG1hdGNoaW5nIEdl dCBmdW5jdGlvbi4gVGhpcyBpcyB5b3VyIG93biByZXNwb25zYWJpbGl0eS4KICAgLS0KICAgLS0g IFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIHBhY2thZ2Ugb25seSBpZiB5b3Ugd2FudCB5b3VyIGRh dGEgdG8gYmUKICAgLS0gIGF2YWlsYWJsZSBmcm9tIHlvdXIgb3duIEMgY29kZS4gSWYgeW91IGp1 c3Qgd2FudCB0byBhY2Nlc3MgaXQgZnJvbSBBZGEsCiAgIC0tICB5b3Ugc2hvdWxkIGNvbnNpZGVy IGNyZWF0aW5nIGEgbmV3IHRhZ2dlZCB0eXBlIGluc3RlYWQuCgogICAtLSAgPGRvY19pZ25vcmU+ CgogICBnZW5lcmljCiAgICAgIHR5cGUgRGF0YV9UeXBlICg8PikgaXMgcHJpdmF0ZTsKICAgcGFj a2FnZSBVc2VyX0RhdGEgaXMKICAgICAgZnVuY3Rpb24gR2V0IChPYmplY3QgOiBhY2Nlc3MgR3Rr X09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgSWQgICAgIDogaW4gU3Ry aW5nIDo9ICJ1c2VyX2RhdGEiKSByZXR1cm4gRGF0YV9UeXBlOwogICAgICAtLSAgR2V0IHRoZSBp bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGtleSBJRC4KICAgICAgLS0gIFJhaXNlIEd0 a2FkYS5UeXBlcy5EYXRhX0Vycm9yIGlmIHRoZXJlIGlzIG5vbmUuCgogICAgICBwcm9jZWR1cmUg U2V0IChPYmplY3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAg ICAgICAgICAgIERhdGEgICA6IGluIERhdGFfVHlwZTsKICAgICAgICAgICAgICAgICAgICAgSWQg ICAgIDogaW4gU3RyaW5nIDo9ICJ1c2VyX2RhdGEiKTsKICAgICAgLS0gIEFzc29jaWF0ZSBzb21l IG5ldyB1c2VyIGRhdGEgd2l0aCB0aGUgb2JqZWN0LgogICAgICAtLSAgVGhlIHN0cmluZ3Mgc3Rh cnRpbmcgd2l0aCAiZ3RrYWRhXyIgYXJlIHJlc2VydmVkIGZvciBHdGtBZGEncwogICAgICAtLSAg aW50ZXJuYWwgdXNlLCBwbGVhc2UgYXZvaWQgdXNpbmcgdGhlbS4KCiAgICAgIHByb2NlZHVyZSBS ZW1vdmUgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCdDbGFzczsKICAgICAgICAg ICAgICAgICAgICAgICAgSWQgICAgIDogaW4gU3RyaW5nIDo9ICJ1c2VyX2RhdGEiKTsKICAgICAg LS0gIFJlbW92ZSBzb21lIGRhdGEgZnJvbSB0aGUgb2JqZWN0CgogICAgICBmdW5jdGlvbiBHZXQg KE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCdDbGFzczsKICAgICAgICAgICAgICAg ICAgICBJZCAgICAgOiBpbiBHbGliLkdRdWFyaykKICAgICAgICAgICAgICAgICAgIHJldHVybiBE YXRhX1R5cGU7CiAgICAgIC0tICBTYW1lIGZ1bmN0aW9uIGFzIEdldCBhYm92ZSwgYnV0IHVzZXMg ZGlyZWN0bHkgdGhlIFF1YXJrIGFzc29jaWF0ZWQKICAgICAgLS0gIHdpdGggdGhlIHN0cmluZywg d2hpY2ggc3BlZWRzIHVwIHRoZSBhY2Nlc3MgdGltZSBzaWduaWZpY2FudGx5LgoKICAgICAgcHJv Y2VkdXJlIFNldCAoT2JqZWN0IDogYWNjZXNzIEd0a19PYmplY3RfUmVjb3JkJ0NsYXNzOwogICAg ICAgICAgICAgICAgICAgICBEYXRhICAgOiBpbiBEYXRhX1R5cGU7CiAgICAgICAgICAgICAgICAg ICAgIElkICAgICA6IGluIEdsaWIuR1F1YXJrKTsKICAgICAgLS0gIFNhbWUgZnVuY3Rpb24gYXMg U2V0IGFib3ZlLCBidXQgdXNlcyBkaXJlY3RseSB0aGUgUXVhcmsgYXNzb2NpYXRlZAogICAgICAt LSAgd2l0aCB0aGUgc3RyaW5nLCB3aGljaCBzcGVlZHMgdXAgdGhlIGFjY2VzcyB0aW1lIHNpZ25p ZmljYW50bHkuCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlIChPYmplY3QgOiBhY2Nlc3MgR3RrX09i amVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgICAgIElkICAgICA6IGluIEds aWIuR1F1YXJrKTsKICAgICAgLS0gIFNhbWUgZnVuY3Rpb24gYXMgUmVtb3ZlIGFib3ZlLCBidXQg dXNlcyBkaXJlY3RseSB0aGUgUXVhcmsgYXNzb2NpYXRlZAogICAgICAtLSAgd2l0aCB0aGUgc3Ry aW5nLCB3aGljaCBzcGVlZHMgdXAgdGhlIGFjY2VzcyB0aW1lIHNpZ25pZmljYW50bHkuCgogICBl bmQgVXNlcl9EYXRhOwoKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIC0tLS0tLS0tLS0tLS0KICAg LS0gU2lnbmFscyAtLQogICAtLS0tLS0tLS0tLS0tCgogICAtLSAgPHNpZ25hbHM+CiAgIC0tICBU aGUgZm9sbG93aW5nIG5ldyBzaWduYWxzIGFyZSBkZWZpbmVkIGZvciB0aGlzIHdpZGdldDoKICAg LS0KICAgLS0gIC0gImRlc3Ryb3kiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChPYmplY3Qg OiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBSYWlzZWQg d2hlbiB0aGUgb2JqZWN0IGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gVGhlICJkZXN0cm95ZWQi CiAgIC0tICAgIGZsYWcgaGFzIGJlZW4gc2V0IG9uIHRoZSBvYmplY3QgZmlyc3QuIEhhbmRsZXJz IHNob3VsZCBub3Qga2VlcAogICAtLSAgICBhIHJlZmVyZW5jZSBvbiB0aGUgb2JqZWN0LgogICAt LSAgICBOb3RlIHRoYXQgd2hlbiB5b3VyIGRlc3Ryb3kgaGFuZGxlcnMgYXJlIGNhbGxlZCwgdGhl IHVzZXJfZGF0YSBpcwogICAtLSAgICBzdGlsbCBhdmFpbGFibGUuCiAgIC0tICAgIFRoZSBkZWZh dWx0IGltcGxlbWVudGF0aW9uIGRlc3Ryb3lzIGFsbCB0aGUgaGFuZGxlcnMuCiAgIC0tICA8L3Np Z25hbHM+Cgpwcml2YXRlCiAgIHR5cGUgR3RrX09iamVjdF9SZWNvcmQgaXMgbmV3IEd0ay5Sb290 X1R5cGUgd2l0aCBudWxsIHJlY29yZDsKCiAgIHByYWdtYSBJbmxpbmUgKERlc3Ryb3llZF9Jc19T ZXQpOwogICBwcmFnbWEgSW5saW5lIChGbG9hdGluZ19Jc19TZXQpOwogICBwcmFnbWEgSW5saW5l IChDb25uZWN0ZWRfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAoQ29uc3RydWN0ZWRfSXNfU2V0 KTsKCmVuZCBHdGsuT2JqZWN0OwoKLS0gIEZ1bmN0aW9ucyB0aGF0IGhhdmUgbm8gQWRhIGVxdWl2 YWxlbnQ6Ci0tICAtIGd0a19vYmplY3RfY2xhc3NfdXNlcl9zaWduYWxfbmV3Ci0tICAtIGd0a19v YmplY3RfY2xhc3NfdXNlcl9zaWduYWxfbmV3dgotLSAgLSBndGtfb2JqZWN0X25ldwotLSAgLSBn dGtfb2JqZWN0X25ld3YKLS0gIC0gZ3RrX29iamVjdF9kZWZhdWx0X2NvbnN0cnVjdAotLSAgLSBn dGtfb2JqZWN0X2NvbnN0cnVjdGVkCi0tICAtIGd0a19vYmplY3Rfd2Vha3JlZgotLSAgLSBndGtf b2JqZWN0X3dlYWt1bnJlZgotLSAgLSBndGtfb2JqZWN0X2dldHYKLS0gIC0gZ3RrX29iamVjdF9n ZXQKLS0gIC0gZ3RrX29iamVjdF9zZXQKLS0gIC0gZ3RrX29iamVjdF9zZXR2Ci0tICAtIGd0a19v YmplY3RfcXVlcnlfYXJncwotLSAgLSBndGtfb2JqZWN0X2NsYXNzX2FkZF9zaWduYWxzID0+IGlu IEluaXRpYWxpemVfQ2xhc3NfUmVjb3JkCi0tICAtIGd0a19vYmplY3RfYWRkX2FyZ190eXBlCgAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9ndGthZGEuYWRzAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDA0MjA0ADA3NTUxMTA3 NjMyADAxMzI2NwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1 c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtB ZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0y MDAwICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpv ZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u ICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAg ICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5l cmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90 aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBk b2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxl IHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAt LQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFz b25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkg dGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNj cmlwdGlvbj4KLS0KLS0gIFRoaXMgaXMgdGhlIHBhcmVudCBwYWNrYWdlIGZvciB0aGUgR3RrQWRh IHNwZWNpZmljIHVuaXRzLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KCnBhY2thZ2UgR3RrYWRhIGlz CgogICBwcmFnbWEgUHVyZSAoR3RrYWRhKTsKCmVuZCBHdGthZGE7CgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9ndGthZGEtdHlwZXMuYWRzAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDEwNjAzADA3NTUxMTA3NjMyADAx NDQzMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg AHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBB ZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAwICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJv YmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBU aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAt LQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAg ICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBh IHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBm cm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZp bGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5v dCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJl IGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBl eGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdo eSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBH TlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlv bj4KLS0KLS0gIFRoaXMgcGFja2FnZSBwcm92aWRlcyBHdGtBZGEgc3BlY2lmaWMgdHlwZXMgYW5k IHRoZWlyIGFzc29jaWF0ZWQgZnVuY3Rpb25zLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KCndpdGgg SW50ZXJmYWNlcy5DLlN0cmluZ3M7CgpwYWNrYWdlIEd0a2FkYS5UeXBlcyBpcwoKICAgcHJhZ21h IFByZWVsYWJvcmF0ZTsKCiAgIERhdGFfRXJyb3IgOiBleGNlcHRpb247CgogICAtLSAgPGRvY19p Z25vcmU+CiAgIHN1YnR5cGUgQ2hhcnNfUHRyIGlzIEludGVyZmFjZXMuQy5TdHJpbmdzLmNoYXJz X3B0cjsKICAgc3VidHlwZSBDaGFyc19QdHJfQXJyYXkgaXMgSW50ZXJmYWNlcy5DLlN0cmluZ3Mu Y2hhcnNfcHRyX2FycmF5OwogICAtLSAgPC9kb2NfaWdub3JlPgoKICAgTnVsbF9QdHIgOiBDaGFy c19QdHIgcmVuYW1lcyBJbnRlcmZhY2VzLkMuU3RyaW5ncy5OdWxsX1B0cjsKCiAgIGZ1bmN0aW9u IE51bGxfQXJyYXkgcmV0dXJuIENoYXJzX1B0cl9BcnJheTsKICAgLS0gIFJldHVybiBhIG51bGwg YXJyYXkuCiAgIHByYWdtYSBJbmxpbmUgKE51bGxfQXJyYXkpOwoKICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgSGFuZGxpbmcgb2YgYXJyYXlzIG9mIFN0cmlu Z3MgIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIFRo ZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHByb3ZpZGUgYSB2ZXJ5IGNvbnZlbmllbnQgd2F5IHRvIGNy ZWF0ZQogICAtLSAgQyBhcnJheXMgb2YgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZ3MgaW4gQWRhLgog ICAtLQogICAtLSAgWW91IGNhbiBlaXRoZXIgY3JlYXRlIHN1Y2ggYSBTdHJpbmcgb24gdGhlIGZs eSwgb3IgZGVjbGFyZSBhIHZhcmlhYmxlOgogICAtLQogICAtLSAgICAgU2lnbmFscyA6IENoYXJz X1B0cl9BcnJheSA6PSAiY2xpY2tlZCIgKyAibWlzc2VkIiArICJuZXcgc2lnbmFsIjsKICAgLS0K ICAgLS0gIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBDIGRlY2xhcmF0aW9uOgogICAtLQogICAt LSAgICAgY2hhciAqc2lnbmFsc1tdID0gQHsiY2xpY2tlZCIsICJtaXNzZWQiLCAibmV3IHNpZ25h bCJAfTsKICAgLS0KICAgLS0gIE5vdGUgdGhhdCB5b3Ugc3RpbGwgbmVlZCB0byBtYW51YWxseSBj YWxsIEZyZWUgKFNpZ25hbHMpIGlmIHlvdSB3YW50IHRvCiAgIC0tICByZWxlYXNlIHRoZSBtZW1v cnkgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJ5IHRoZSAiKyIgZnVuY3Rpb25zLgoKICAgZnVuY3Rp b24gIisiIChTMSwgUzIgOiBTdHJpbmcpIHJldHVybiBDaGFyc19QdHJfQXJyYXk7CiAgIC0tICBD cmVhdGUgYW4gYXJyYXkgY29udGFpbmluZyBTMSBhbmQgUzIuCiAgIC0tICBOb3RlIHRoYXQgdGhp cyBmdW5jdGlvbiBhbGxvY2F0ZXMgbWVtb3J5IHRvIHN0b3JlIFMxIGFuZCBTMiBhcyBudWxsCiAg IC0tICB0ZXJtaW5hdGVkIFN0cmluZ3MuIFRoZSB1c2VyIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxs aW5nIEZyZWUgb24gdGhlCiAgIC0tICByZXN1bHRpbmcgYXJyYXkuCgogICBmdW5jdGlvbiAiKyIg KFMxIDogQ2hhcnNfUHRyX0FycmF5OyBTMiA6IFN0cmluZykgcmV0dXJuIENoYXJzX1B0cl9BcnJh eTsKICAgLS0gIEFwcGVuZCBTMiB0byBTMS4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9u IGFsbG9jYXRlcyBtZW1vcnkgdG8gc3RvcmUgUzIgYXMgYSBudWxsCiAgIC0tICB0ZXJtaW5hdGVk IFN0cmluZ3MuIFRoZSB1c2VyIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIEZyZWUgb24gdGhl CiAgIC0tICByZXN1bHRpbmcgYXJyYXkuCgogICBmdW5jdGlvbiAiKyIgKFMxIDogQ2hhcnNfUHRy X0FycmF5OyBTMiA6IENoYXJzX1B0cikgcmV0dXJuIENoYXJzX1B0cl9BcnJheTsKICAgLS0gIEFw cGVuZCBTMiB0byBTMS4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBt ZW1vcnkgdG8gc3RvcmUgUzIgYXMgYSBudWxsCiAgIC0tICB0ZXJtaW5hdGVkIFN0cmluZ3MuIFRo ZSB1c2VyIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIEZyZWUgb24gdGhlCiAgIC0tICByZXN1 bHRpbmcgYXJyYXkuCgogICBmdW5jdGlvbiAiKyIgKFMxIDogQ2hhcnNfUHRyOyBTMiA6IFN0cmlu ZykgcmV0dXJuIENoYXJzX1B0cl9BcnJheTsKICAgLS0gIENyZWF0ZSBhbiBhcnJheSBjb250YWlu aW5nIFMxIGFuZCBTMi4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBt ZW1vcnkgdG8gc3RvcmUgUzIgYXMgYSBudWxsCiAgIC0tICB0ZXJtaW5hdGVkIHN0cmluZy4gVGhl IHVzZXIgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgRnJlZSBvbiB0aGUKICAgLS0gIHJlc3Vs dGluZyBhcnJheS4KCiAgIHByb2NlZHVyZSBGcmVlIChBIDogaW4gb3V0IENoYXJzX1B0cl9BcnJh eSk7CiAgIC0tICBGcmVlIGFsbCB0aGUgc3RyaW5ncyBpbiBBLgoKZW5kIEd0a2FkYS5UeXBlczsK AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABnbmF0YnVnL2d0ay1hZGp1c3RtZW50LmFkcwAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDEw MDY0NAAwMDAxNzUxADAwMDAwMDAAMDAwMDAwMjE1MjQAMDc1NTExMDc2MzIAMDE1MDAxACAwAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAc3BhegAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRp bmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5k IEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0t Ci0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAg ICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0 aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBl eGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0t IHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJv ZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNl bGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBi eSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBk b2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0t Ci0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMg TGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAg VGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBhZGp1c3RhYmxlIGJvdW5kZWQgdmFsdWUuCi0tICBJ dCBpcyB1c2VkIGluIG1hbnkgb3RoZXIgd2lkZ2V0cyB0aGF0IGhhdmUgc3VjaCBpbnRlcm5hbCB2 YWx1ZXMsCi0tICBsaWtlIEd0a19TY3JvbGxiYXIsIEd0a19TcGluX0J1dHRvbiwgR3RrX1Jhbmdl LCAuLi4KLS0gIE1vZGlmeWluZyB0aGUgdmFsdWUgb2YgdGhlc2Ugd2lkZ2V0cyBpcyBkb25lIHRo cm91Z2ggdGhlaXIKLS0gIGFzc29jaWF0ZWQgYWRqdXN0bWVudHMuCi0tCi0tICBUaGUgbW9kaWZp Y2F0aW9uIG9mIHRoZSB2YWx1ZSBpcyBsZWZ0IHRvIHRoZSB1c2VyLCB3aG8gc2hvdWxkCi0tICBj YWxsIFZhbHVlX0NoYW5nZWQgb3IgQ2hhbmdlZCB0byBlbWl0IHRoZSByZWxldmFudCBzaWduYWxz LgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxleGFtcGxlPgotLQotLSAgVGhlIG1lYW5pbmcg b2YgdGhlIG1vc3QgaW1wb3J0YW50IGZpZWxkcyBjYW4gYmUgZXhwbGFpbmVkIG9uIHRoZQotLSAg Zm9sbG93aW5nIGZpZ3VyZSAoaW1hZ2luZSB0aGlzIGlzIGEgc2Nyb2xsYmFyKToKLS0KLS0gICAg IFstLS0tLS0tfD09PT09PT09PT09PT09PT09fC0tLS0tLS0tLS0tLS0tLS0tLS1dCi0tICAgIGxv d2VyICAgIHZhbHVlICAgICAgICB2YWx1ZSArIHBhZ2Vfc2l6ZSAgICAgICB1cHBlcgotLQotLSAg PC9leGFtcGxlPgotLSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBHdGsuRGF0 YTsKCnBhY2thZ2UgR3RrLkFkanVzdG1lbnQgaXMKCiAgIHR5cGUgR3RrX0FkanVzdG1lbnRfUmVj b3JkIGlzIG5ldyBEYXRhLkd0a19EYXRhX1JlY29yZCB3aXRoIHByaXZhdGU7CiAgIHR5cGUgR3Rr X0FkanVzdG1lbnQgaXMgYWNjZXNzIGFsbCBHdGtfQWRqdXN0bWVudF9SZWNvcmQnQ2xhc3M7Cgog ICBOdWxsX0FkanVzdG1lbnQgOiBjb25zdGFudCBHdGtfQWRqdXN0bWVudDsKCiAgIHByb2NlZHVy ZSBHdGtfTmV3IChBZGp1c3RtZW50ICAgICA6IG91dCBHdGtfQWRqdXN0bWVudDsKICAgICAgICAg ICAgICAgICAgICAgIFZhbHVlICAgICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAg ICAgICAgICAgIExvd2VyICAgICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAg ICAgICAgIFVwcGVyICAgICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAg ICAgIFN0ZXBfSW5jcmVtZW50IDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAg IFBhZ2VfSW5jcmVtZW50IDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgIFBh Z2VfU2l6ZSAgICAgIDogaW4gICAgIEdmbG9hdCk7CiAgIC0tICBDcmVhdGUgYSBuZXcgYWRqdXN0 bWVudC4KICAgLS0gIFZhbHVlIGlzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBhZGp1c3RtZW50 LiBJdCBtdXN0IGJlIGluIHRoZQogICAtLSAgcmFuZ2UgKExvd2VyIC4uIFVwcGVyKSBhbmQgdGhl IGFkanVzdG1lbnQncyB2YWx1ZSB3aWxsIG5ldmVyIGJlCiAgIC0tICBvdXRzaWRlIHRoaXMgcmFu Z2UuCiAgIC0tICBTdGVwX0luY3JlbWVudCBpcyB0aGUgdmFsdWUgdXNlZCB0byBtYWtlIG1pbm9y IGFkanVzdG1lbnRzLCBzdWNoCiAgIC0tICBhcyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUg YXJyb3dzIG9mIGEgc2Nyb2xsYmFyLgogICAtLSAgUGFnZV9JbmNyZW1lbnQgaXMgdXNlZCB0byBt YWtlIG1ham9yIGFkanVzdG1lbnRzLCBzdWNoIGFzIHdoZW4KICAgLS0gIHRoZSB1c2VyIGNsaWNr cyBpbiB0aGUgdGhyb3VnaCBvbiBhIHNjcm9sbGJhci4KICAgLS0gIFBhZ2VfU2l6ZSBpcyB0aGUg c2l6ZSBvZiB0aGUgYXJlYSB0aGF0IGlzIGN1cnJlbnRseSB2aXNpYmxlCiAgIC0tICAoZm9yIGlu c3RhbmNlIGluIGEgR3RrX1Njcm9sbGVkX1dpbmRvdykuCgogICBwcm9jZWR1cmUgSW5pdGlhbGl6 ZSAoQWRqdXN0bWVudCAgICAgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkJ0NsYXNzOwog ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0Owog ICAgICAgICAgICAgICAgICAgICAgICAgTG93ZXIgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0Owog ICAgICAgICAgICAgICAgICAgICAgICAgVXBwZXIgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0Owog ICAgICAgICAgICAgICAgICAgICAgICAgU3RlcF9JbmNyZW1lbnQgOiBpbiAgICAgR2Zsb2F0Owog ICAgICAgICAgICAgICAgICAgICAgICAgUGFnZV9JbmNyZW1lbnQgOiBpbiAgICAgR2Zsb2F0Owog ICAgICAgICAgICAgICAgICAgICAgICAgUGFnZV9TaXplICAgICAgOiBpbiAgICAgR2Zsb2F0KTsK ICAgLS0gIEludGVybmFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgogICAtLSAgU2VlIHRoZSBz ZWN0aW9uICJDcmVhdGluZyB5b3VyIG93biB3aWRnZXRzIiBpbiB0aGUgZG9jdW1lbnRhdGlvbi4K CiAgIGZ1bmN0aW9uIEdldF9UeXBlIHJldHVybiBHdGsuR3RrX1R5cGU7CiAgIC0tICBSZXR1cm4g dGhlIGludGVybmFsIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIEd0a19BZGp1c3RtZW50LgoKICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gUmVhZCBmdW5jdGlvbnMgLS0KICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9WYWx1ZSAoQWRqdXN0bWVudCA6IGFjY2VzcyBH dGtfQWRqdXN0bWVudF9SZWNvcmQpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2Zsb2F0 OwogICAtLSAgUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBhZGp1c3RtZW50LgoKICAg ZnVuY3Rpb24gR2V0X0xvd2VyIChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1Jl Y29yZCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4g dGhlIGxvd2VyIGJvdW5kIG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1VwcGVy IChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHVwcGVyIGJvdW5kIG9m IHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1N0ZXBfSW5jcmVtZW50IChBZGp1c3Rt ZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHN0ZXAgaW5jcmVtZW50 IG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1BhZ2VfSW5jcmVtZW50IChBZGp1 c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHBhZ2UgaW5jcmVt ZW50IG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1BhZ2VfU2l6ZSAoQWRqdXN0 bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVudF9SZWNvcmQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIEdmbG9hdDsKICAgLS0gIFJldHVybiB0aGUgcGFnZSBzaXplIG9mIHRoZSBh ZGp1c3RtZW50LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFdyaXRlIGZ1bmN0aW9u cyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfVXBwZXIgKEFk anVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAg ICAgICAgICBVcHBlciAgICAgIDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgdXBwZXIg Ym91bmQgb2YgdGhlIGFkanVzdG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBh ZnRlciBtb2RpZnlpbmcgdGhpcyB2YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfTG93ZXIgKEFkanVz dG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAgICAg ICAgICBMb3dlciAgICAgIDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgbG93ZXIgYm91 bmQgb2YgdGhlIGFkanVzdG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRl ciBtb2RpZnlpbmcgdGhpcyB2YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfVmFsdWUgKEFkanVzdG1l bnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAgICAgICAg ICBWYWx1ZSAgICAgIDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgY3VycmVudCB2YWx1 ZSBvZiB0aGUgYWRqdXN0bWVudC4KICAgLS0gIFlvdSBkbyBub3QgbmVlZCB0byBjYWxsIFZhbHVl X0NoYW5nZWQgYWZ0ZXIgbW9kaWZ5aW5nIHRoaXMgdmFsdWUsCiAgIC0tICB0aGlzIGlzIGRvbmUg YXV0b21hdGljYWxseS4KCiAgIHByb2NlZHVyZSBTZXRfUGFnZV9TaXplIChBZGp1c3RtZW50IDog YWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBhZ2VfU2l6ZSAgOiBpbiBHZmxvYXQpOwogICAtLSAgTW9kaWZ5IHRoZSBwYWdlIHNpemUgb2Yg dGhlIGFkanVzdG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBtb2Rp ZnlpbmcgdGhpcyB2YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfUGFnZV9JbmNyZW1lbnQgKEFkanVz dG1lbnQgICAgIDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZDsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGFnZV9JbmNyZW1lbnQgOiBpbiBHZmxvYXQpOwogICAtLSAgTW9k aWZ5IHRoZSBwYWdlIGluY3JlbWVudCBvZiB0aGUgYWRqdXN0bWVudC4KICAgLS0gIFlvdSBzaG91 bGQgY2FsbCBDaGFuZ2VkIGFmdGVyIG1vZGlmeWluZyB0aGlzIHZhbHVlLgoKICAgcHJvY2VkdXJl IFNldF9TdGVwX0luY3JlbWVudCAoQWRqdXN0bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVudF9S ZWNvcmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZXBfSW5jcmVtZW50IDog aW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgc3RlcCBpbmNyZW1lbnQgb2YgdGhlIGFkanVz dG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBtb2RpZnlpbmcgdGhp cyB2YWx1ZS4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIE1pc2MgZnVuY3Rpb25zIC0t CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgQ2xhbXBfUGFnZSAoQWRqdXN0 bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVudF9SZWNvcmQ7CiAgICAgICAgICAgICAgICAgICAg ICAgICBMb3dlciAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAgICAg IFVwcGVyICAgICAgOiBpbiAgICAgR2Zsb2F0KTsKICAgLS0gIFVwZGF0ZSB0aGUgQWRqdXN0bWVu dCB2YWx1ZSB0byBlbnN1cmUgdGhhdCB0aGUgcmFuZ2UgYmV0d2VlbiBMb3dlciBhbmQKICAgLS0g IFVwcGVyIGlzIGluIHRoZSBjdXJyZW50IHBhZ2UgKGkuZS4gYmV0d2VlbiB2YWx1ZSBhbmQgdmFs dWUgKwogICAtLSAgcGFnZV9zaXplKS4gSWYgdGhlIHJhbmdlIGlzIGxhcmdlciB0aGFuIHRoZSBw YWdlIHNpemUsIHRoZW4gb25seSB0aGUKICAgLS0gIHN0YXJ0IG9mIGl0IHdpbGwgYmUgaW4gdGhl IGN1cnJlbnQgcGFnZS4KICAgLS0gIEEgInZhbHVlX2NoYW5nZWQiIHNpZ25hbCB3aWxsIGJlIGVt aXR0ZWQgaWYgdGhlIHZhbHVlIGlzIGNoYW5nZWQuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgIC0tIFNpZ25hbHMgZW1pc3Npb24gLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIENoYW5nZWQgKEFkanVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVj b3JkKTsKICAgLS0gIEVtaXQgdGhlICJjaGFuZ2VkIiBzaWduYWwgb24gQWRqdXN0bWVudC4KICAg LS0gIFRoaXMgd2FybnMgYW55IGxpc3RlbmVyIHRoYXQgc29tZSBmaWVsZCBvdGhlciB0aGFuIHRo ZSB2YWx1ZSBoYXMgYmVlbgogICAtLSAgY2hhbmdlZC4KCiAgIHByb2NlZHVyZSBWYWx1ZV9DaGFu Z2VkIChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCk7CiAgIC0tICBF bWl0IHRoZSAidmFsdWVfY2hhbmdlZCIgc2lnbmFsIG9uIEFkanVzdG1lbnQuCiAgIC0tICBUaGlz IHdhcm5zIGFueSBsaXN0ZW5lciB0aGF0IHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkLgoKICAg LS0tLS0tLS0tLS0tLQogICAtLSBTaWduYWxzIC0tCiAgIC0tLS0tLS0tLS0tLS0KCiAgIC0tICA8 c2lnbmFscz4KICAgLS0gIFRoZSBmb2xsb3dpbmcgbmV3IHNpZ25hbHMgYXJlIGRlZmluZWQgZm9y IHRoaXMgd2lkZ2V0OgogICAtLQogICAtLSAgLSAiY2hhbmdlZCIKICAgLS0gICAgcHJvY2VkdXJl IEhhbmRsZXIgKEFkanVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkJ0NsYXNz KTsKICAgLS0KICAgLS0gICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCBldmVyeSB0aW1lIG9uZSBv ZiB0aGUgcGFyYW1ldGVycyBpcyBtb2RpZmllZCwKICAgLS0gICAgZXhjZXB0IHRoZSB2YWx1ZS4K ICAgLS0KICAgLS0gIC0gInZhbHVlX2NoYW5nZWQiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVy IChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCdDbGFzcyk7CiAgIC0t CiAgIC0tICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgZXZlcnkgdGltZSB0aGUgdmFsdWUgb2Yg dGhlIGFkanVzdG1lbnQgaXMKICAgLS0gICAgbW9kaWZpZWQKICAgLS0gIDwvc2lnbmFscz4KCnBy aXZhdGUKCiAgIHR5cGUgR3RrX0FkanVzdG1lbnRfUmVjb3JkIGlzIG5ldyBEYXRhLkd0a19EYXRh X1JlY29yZCB3aXRoIG51bGwgcmVjb3JkOwoKICAgTnVsbF9BZGp1c3RtZW50IDogY29uc3RhbnQg R3RrX0FkanVzdG1lbnQgOj0gbnVsbDsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9UeXBlLCAi Z3RrX2FkanVzdG1lbnRfZ2V0X3R5cGUiKTsKZW5kIEd0ay5BZGp1c3RtZW50OwoKAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGduYXRidWcv Z3RrLWRhdGEuYWRzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAw MAAwMDAwMDAwNTcxNgAwNzU1MTEwNzYzMgAwMTM1NDEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9v bGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAg ICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0g TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0K LS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg bm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIg ZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3Ug bGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhl Y3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3Vs dGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52 YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxl ICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBBYnN0cmFjdCBjbGFzcyBmb3Ig b2JqZWN0cyBjb250YWluaW5nIGRhdGEKLS0gIFRoaXMgb2JqZWN0IGlzIGN1cnJlbnRseSBub3Qg dmVyeSB1c2VmdWwgc2luY2UgaXQgb25seSBwcm92aWRlcwotLSAgYSBzaW5nbGUgImRpc2Nvbm5l Y3QiIHNpZ25hbC4KLS0KLS0gIFRoaXMgaXMgdGhlICJNb2RlbCIgaW4gdGhlIE1vZGVsL1ZpZXcv Q29udHJvbGxlciBmcmFtZXdvcmsuCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj4x LjIuNjwvY192ZXJzaW9uPgoKd2l0aCBHdGsuT2JqZWN0OwoKcGFja2FnZSBHdGsuRGF0YSBpcwoK ICAgdHlwZSBHdGtfRGF0YV9SZWNvcmQgaXMgbmV3IE9iamVjdC5HdGtfT2JqZWN0X1JlY29yZCB3 aXRoIHByaXZhdGU7CiAgIHR5cGUgR3RrX0RhdGEgaXMgYWNjZXNzIGFsbCBHdGtfRGF0YV9SZWNv cmQnQ2xhc3M7CgogICBmdW5jdGlvbiBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19UeXBlOwogICAt LSAgUmV0dXJuIHRoZSBpbnRlcm5hbCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBHdGtfRGF0YS4K CiAgIC0tLS0tLS0tLS0tLS0KICAgLS0gU2lnbmFscyAtLQogICAtLS0tLS0tLS0tLS0tCgogICAt LSAgPHNpZ25hbHM+CiAgIC0tICBUaGUgZm9sbG93aW5nIG5ldyBzaWduYWxzIGFyZSBkZWZpbmVk IGZvciB0aGlzIHdpZGdldDoKICAgLS0KICAgLS0gIC0gImRpc2Nvbm5lY3QiCiAgIC0tICAgIHBy b2NlZHVyZSBIYW5kbGVyIChEYXRhIDogYWNjZXNzIEd0a19EYXRhX1JlY29yZCdDbGFzcyk7CiAg IC0tCiAgIC0tICAgIEVtaXR0ZWQganVzdCBiZWZvcmUgRGF0YSBpcyBkZXN0cm95ZWQuCiAgIC0t ICA8L3NpZ25hbHM+Cgpwcml2YXRlCiAgIHR5cGUgR3RrX0RhdGFfUmVjb3JkIGlzIG5ldyBPYmpl Y3QuR3RrX09iamVjdF9SZWNvcmQgd2l0aCBudWxsIHJlY29yZDsKICAgcHJhZ21hIEltcG9ydCAo QywgR2V0X1R5cGUsICJndGtfZGF0YV9nZXRfdHlwZSIpOwplbmQgR3RrLkRhdGE7CgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9ndGstZW51 bXMuYWRzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAw MDE3MjU1ADA3NTUxMTA3NjMyADAxMzc2MAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAB1c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hl ZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot LSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAg ICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHly aWdodCAoQykgMTk5OC0xOTk5ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1t YW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAt LQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAg ICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg ICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy aXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAy MTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBp bnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRo aXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxl LCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAt LQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRl IGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0 IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQoKd2l0aCBHbGliOwp3aXRoIEdsaWIuR2xpc3Q7CnByYWdtYSBFbGFib3JhdGVfQWxsIChH bGliLkdsaXN0KTsKCndpdGggU3lzdGVtOwoKcGFja2FnZSBHdGsuRW51bXMgaXMKCiAgIHR5cGUg R3RrX1N0YXRlX1R5cGUgaXMKICAgICAoU3RhdGVfTm9ybWFsLAogICAgICBTdGF0ZV9BY3RpdmUs CiAgICAgIFN0YXRlX1ByZWxpZ2h0LAogICAgICBTdGF0ZV9TZWxlY3RlZCwKICAgICAgU3RhdGVf SW5zZW5zaXRpdmUpOwoKICAgdHlwZSBHdGtfV2luZG93X1R5cGUgaXMgKFdpbmRvd19Ub3BsZXZl bCwgV2luZG93X0RpYWxvZywgV2luZG93X1BvcHVwKTsKCiAgIHR5cGUgR3RrX0J1dHRvbl9BY3Rp b24gaXMgbmV3IEd1aW50OwogICBCdXR0b25fSWdub3JlZCA6IGNvbnN0YW50IEd0a19CdXR0b25f QWN0aW9uIDo9IDA7CiAgIEJ1dHRvbl9TZWxlY3RzIDogY29uc3RhbnQgR3RrX0J1dHRvbl9BY3Rp b24gOj0gMSAqKiAwOwogICBCdXR0b25fRHJhZ3MgICA6IGNvbnN0YW50IEd0a19CdXR0b25fQWN0 aW9uIDo9IDEgKiogMTsKICAgQnV0dG9uX0V4cGFuZHMgOiBjb25zdGFudCBHdGtfQnV0dG9uX0Fj dGlvbiA6PSAxICoqIDI7CgogICB0eXBlIEd0a19CdXR0b25fQm94X1N0eWxlIGlzCiAgICAgKEJ1 dHRvbmJveF9EZWZhdWx0X1N0eWxlLAogICAgICBCdXR0b25ib3hfU3ByZWFkLAogICAgICBCdXR0 b25ib3hfRWRnZSwKICAgICAgQnV0dG9uYm94X1N0YXJ0LAogICAgICBCdXR0b25ib3hfRW5kKTsK CiAgIHR5cGUgR3RrX0RpcmVjdGlvbl9UeXBlIGlzCiAgICAgKERpcl9UYWJfRm9yd2FyZCwKICAg ICAgRGlyX1RhYl9CYWNrd2FyZCwKICAgICAgRGlyX1VwLAogICAgICBEaXJfRG93biwKICAgICAg RGlyX0xlZnQsCiAgICAgIERpcl9SaWdodCk7CgogICB0eXBlIEd0a19TaGFkb3dfVHlwZSBpcwog ICAgIChTaGFkb3dfTm9uZSwKICAgICAgU2hhZG93X0luLAogICAgICBTaGFkb3dfT3V0LAogICAg ICBTaGFkb3dfRXRjaGVkX0luLAogICAgICBTaGFkb3dfRXRjaGVkX091dCk7CgogICB0eXBlIEd0 a19BcnJvd19UeXBlIGlzIChBcnJvd19VcCwgQXJyb3dfRG93biwgQXJyb3dfTGVmdCwgQXJyb3df UmlnaHQpOwoKICAgdHlwZSBHdGtfQ2VsbF9UeXBlIGlzCiAgICAgKENlbGxfRW1wdHksCiAgICAg IENlbGxfVGV4dCwKICAgICAgQ2VsbF9QaXhtYXAsCiAgICAgIENlbGxfUGl4dGV4dCwKICAgICAg Q2VsbF9XaWRnZXQpOwoKICAgdHlwZSBHdGtfUGFja19UeXBlIGlzIChQYWNrX1N0YXJ0LCBQYWNr X0VuZCk7CgogICB0eXBlIEd0a19Qb2xpY3lfVHlwZSBpcyAoUG9saWN5X0Fsd2F5cywgUG9saWN5 X0F1dG9tYXRpYywgUG9saWN5X05ldmVyKTsKCiAgIHR5cGUgR3RrX1VwZGF0ZV9UeXBlIGlzCiAg ICAgKFVwZGF0ZV9Db250aW51b3VzLAogICAgICBVcGRhdGVfRGlzY29udGludW91cywKICAgICAg VXBkYXRlX0RlbGF5ZWQpOwoKICAgdHlwZSBHdGtfUmVsaWVmX1N0eWxlIGlzIChSZWxpZWZfTm9y bWFsLCBSZWxpZWZfSGFsZiwgUmVsaWVmX05vbmUpOwoKICAgdHlwZSBHdGtfQXR0YWNoX09wdGlv bnMgaXMgbmV3IEdsaWIuR3VpbnQzMjsKICAgRXhwYW5kIDogY29uc3RhbnQgR3RrX0F0dGFjaF9P cHRpb25zIDo9IDE7CiAgIFNocmluayA6IGNvbnN0YW50IEd0a19BdHRhY2hfT3B0aW9ucyA6PSAy OwogICBGaWxsICAgOiBjb25zdGFudCBHdGtfQXR0YWNoX09wdGlvbnMgOj0gNDsKCiAgIHR5cGUg R3RrX1dpbmRvd19Qb3NpdGlvbiBpcwogICAgIChXaW5fUG9zX05vbmUsCiAgICAgIFdpbl9Qb3Nf Q2VudGVyLAogICAgICBXaW5fUG9zX01vdXNlLAogICAgICBXaW5fUG9zX0NlbnRlcl9BbHdheXMp OwoKICAgdHlwZSBHdGtfU3VibWVudV9EaXJlY3Rpb24gaXMgKERpcmVjdGlvbl9MZWZ0LCBEaXJl Y3Rpb25fUmlnaHQpOwoKICAgdHlwZSBHdGtfU3VibWVudV9QbGFjZW1lbnQgaXMgKFRvcF9Cb3R0 b20sIExlZnRfUmlnaHQpOwoKICAgdHlwZSBHdGtfUmVzaXplX01vZGUgaXMKICAgICAoUmVzaXpl X1BhcmVudCwgICAgIC0tICBQYXNzIHJlcXVlc3QgdG8gdGhlIHBhcmVudAogICAgICBSZXNpemVf UXVldWUsICAgICAgLS0gIFF1ZXVlIHJlc2l6ZXMgb24gdGhpcyB3aWRnZXQKICAgICAgUmVzaXpl X0ltbWVkaWF0ZSk7IC0tICBQZXJmb3JtIHRoZSByZXNpemVzIG5vdwoKICAgdHlwZSBHdGtfTWV0 cmljX1R5cGUgaXMgKFBpeGVscywgSW5jaGVzLCBDZW50aW1ldGVycyk7CgogICB0eXBlIEd0a19T Y3JvbGxfVHlwZSBpcwogICAgIChTY3JvbGxfTm9uZSwKICAgICAgU2Nyb2xsX1N0ZXBfQmFja3dh cmQsCiAgICAgIFNjcm9sbF9TdGVwX0ZvcndhcmQsCiAgICAgIFNjcm9sbF9QYWdlX0JhY2t3YXJk LAogICAgICBTY3JvbGxfUGFnZV9Gb3J3YXJkLAogICAgICBTY3JvbGxfSnVtcCk7CgogICB0eXBl IEd0a19Ucm91Z2hfVHlwZSBpcwogICAgIChUcm91Z2hfTm9uZSwKICAgICAgVHJvdWdoX1N0YXJ0 LAogICAgICBUcm91Z2hfRW5kLAogICAgICBUcm91Z2hfSnVtcCk7CgogICB0eXBlIEd0a19Qb3Np dGlvbl9UeXBlIGlzCiAgICAgKFBvc19MZWZ0LAogICAgICBQb3NfUmlnaHQsCiAgICAgIFBvc19U b3AsCiAgICAgIFBvc19Cb3R0b20pOwoKICAgdHlwZSBHdGtfUHJldmlld19UeXBlIGlzIChQcmV2 aWV3X0NvbG9yLCBQcmV2aWV3X0dyYXlzY2FsZSk7CgogICB0eXBlIEd0a19KdXN0aWZpY2F0aW9u IGlzCiAgICAgKEp1c3RpZnlfTGVmdCwKICAgICAgSnVzdGlmeV9SaWdodCwKICAgICAgSnVzdGlm eV9DZW50ZXIsCiAgICAgIEp1c3RpZnlfRmlsbCk7CgogICB0eXBlIEd0a19TZWxlY3Rpb25fTW9k ZSBpcwogICAgIChTZWxlY3Rpb25fU2luZ2xlLAogICAgICBTZWxlY3Rpb25fQnJvd3NlLAogICAg ICBTZWxlY3Rpb25fTXVsdGlwbGUsCiAgICAgIFNlbGVjdGlvbl9FeHRlbmRlZCk7CgogICB0eXBl IEd0a19PcmllbnRhdGlvbiBpcyAoT3JpZW50YXRpb25fSG9yaXpvbnRhbCwgT3JpZW50YXRpb25f VmVydGljYWwpOwoKICAgdHlwZSBHdGtfU3Bpbl9CdXR0b25fVXBkYXRlX1BvbGljeSBpcyAoVXBk YXRlX0Fsd2F5cywgVXBkYXRlX0lmX1ZhbGlkKTsKCiAgIHR5cGUgR3RrX1Rvb2xiYXJfQ2hpbGRf VHlwZSBpcwogICAgIChUb29sYmFyX0NoaWxkX1NwYWNlLAogICAgICBUb29sYmFyX0NoaWxkX0J1 dHRvbiwKICAgICAgVG9vbGJhcl9DaGlsZF9Ub2dnbGVidXR0b24sCiAgICAgIFRvb2xiYXJfQ2hp bGRfUmFkaW9idXR0b24sCiAgICAgIFRvb2xiYXJfQ2hpbGRfV2lkZ2V0KTsKCiAgIHR5cGUgR3Rr X1Rvb2xiYXJfU3R5bGUgaXMgKFRvb2xiYXJfSWNvbnMsIFRvb2xiYXJfVGV4dCwgVG9vbGJhcl9C b3RoKTsKCiAgIHR5cGUgR3RrX1Rvb2xiYXJfU3BhY2VfU3R5bGUgaXMgKFRvb2xiYXJfU3BhY2Vf RW1wdHksIFRvb2xiYXJfU3BhY2VfTGluZSk7CgogICB0eXBlIEd0a19UcmVlX1ZpZXdfTW9kZSBp cyAoVHJlZV9WaWV3X0xpbmUsIFRyZWVfVmlld19JdGVtKTsKCiAgIHR5cGUgR3RrX1Zpc2liaWxp dHkgaXMKICAgICAoVmlzaWJpbGl0eV9Ob25lLCBWaXNpYmlsaXR5X1BhcnRpYWwsIFZpc2liaWxp dHlfRnVsbCk7CgogICB0eXBlIEd0a19Qcm9ncmVzc19CYXJfU3R5bGUgaXMKICAgICAoUHJvZ3Jl c3NfQ29udGludW91cywgUHJvZ3Jlc3NfRGlzY3JldGUpOwoKICAgdHlwZSBHdGtfUHJvZ3Jlc3Nf QmFyX09yaWVudGF0aW9uIGlzCiAgICAgKFByb2dyZXNzX0xlZnRfVG9fUmlnaHQsCiAgICAgIFBy b2dyZXNzX1JpZ2h0X1RvX0xlZnQsCiAgICAgIFByb2dyZXNzX0JvdHRvbV9Ub19Ub3AsCiAgICAg IFByb2dyZXNzX1RvcF9Ub19Cb3R0b20pOwoKICAgdHlwZSBHdGtfQ3RyZWVfTGluZV9TdHlsZSBp cwogICAgIChDdHJlZV9MaW5lc19Ob25lLAogICAgICAtLSAgTm8gbGluZSB3aWxsIGJlIGRyYXdu IGluIHRoZSBDdHJlZQoKICAgICAgQ3RyZWVfTGluZXNfU29saWQsCiAgICAgIC0tICBTb2xpZCBs aW5lcyB3aWxsIGJlIGRyYXduCgogICAgICBDdHJlZV9MaW5lc19Eb3R0ZWQsCiAgICAgIC0tICBE b3R0ZWQgbGluZXMgd2lsbCBiZSBkcmF3bgoKICAgICAgQ3RyZWVfTGluZXNfVGFiYmVkCiAgICAg IC0tICBUaGUgdHJlZSB3b24ndCBiZSBoaWdobGlnaHRlZCBieSBsaW5lcyBidXQgYnkgdGFicyBz dXJyb3VuZGluZyBub2RlcwogICAgICk7CiAgIC0tICBTZWUgR3RrLkN0cmVlLlNldF9MaW5lX1N0 eWxlIGZvciBtb3JlIGRldGFpbHMuCgogICB0eXBlIEd0a19DdHJlZV9FeHBhbmRlcl9TdHlsZSBp cwogICAgIChDdHJlZV9FeHBhbmRlcl9Ob25lLAogICAgICAtLSAgTm8gcGl4bWFwIHdpbGwgYmUg ZHJhd24sIHlvdSB3aWxsIGhhdmUgdG8gZG91YmxlLWNsaWNrIG9uIHRoZSBub2RlIHRvCiAgICAg IC0tICBleHBhbmQgaXQuCgogICAgICBDdHJlZV9FeHBhbmRlcl9TcXVhcmUsCiAgICAgIC0tICBU aGUgcGl4bWFwIHdpbGwgYmUgYSBzcXVhcmUKCiAgICAgIEN0cmVlX0V4cGFuZGVyX1RyaWFuZ2xl LAogICAgICAtLSAgVGhlIHBpeG1hcCB3aWxsIGJlIGEgdHJpYW5nbGUKCiAgICAgIEN0cmVlX0V4 cGFuZGVyX0NpcmN1bGFyCiAgICAgIC0tICBUaGUgcGl4bWFwIHdpbGwgYmUgYSBjaXJjbGUKICAg ICApOwogICAtLSAgU2VlIEd0ay5DdHJlZS5TZXRfRXhwYW5kZXJfU3R5bGUgZm9yIG1vcmUgZGV0 YWlscy4KCiAgIC0tICBTb21lIEdsaWIgaW5zdGFudGlhdGlvbnMKCiAgIGZ1bmN0aW9uIENvbnZl cnQgKFMgOiBTdHJpbmcpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgZnVuY3Rpb24gQ29udmVy dCAoUyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gU3RyaW5nOwogICBmdW5jdGlvbiBDb252ZXJ0 X0kgKEkgOiBHaW50KSByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgIGZ1bmN0aW9uIENvbnZlcnRf QSAoUyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2ludDsKICAgcHJhZ21hIEltcG9ydCAoQywg Q29udmVydF9JLCAiY29udmVydF9pIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENvbnZlcnRfQSwg ImNvbnZlcnRfYSIpOwoKICAgcGFja2FnZSBTdHJpbmdfTGlzdCBpcyBuZXcgR2xpYi5HbGlzdC5H ZW5lcmljX0xpc3QgKFN0cmluZyk7CiAgIC0tICBXYXJuaW5nOiB3aGVuIHlvdSBjcmVhdGUgdGhp cyBsaXN0LCBuZXcgbWVtb3J5IGdldHMgYWxsb2NhdGVkIGZvcgogICAtLSAgYWxsIHRoZSBzdHJp bmdzLiBZb3Ugc2hvdWxkIHVzZSB0aGUgZnVuY3Rpb24gRnJlZV9TdHJpbmdfTGlzdAogICAtLSAg aW5zdGVhZCBvZiBHbGliLkdsaXN0LkZyZWUgdG8gYmUgc3VyZSB0byBmcmVlIHRoaXMgbWVtb3J5 LgoKICAgcHJvY2VkdXJlIEZyZWVfU3RyaW5nX0xpc3QgKExpc3QgOiBpbiBvdXQgU3RyaW5nX0xp c3QuR2xpc3QpOwogICAtLSAgRnJlZSB0aGUgbWVtb3J5IG9jY3VwaWVkIGJ5IGFsbCB0aGUgc3Ry aW5ncyBpbiB0aGUgbGlzdCwgYXMgd2VsbAogICAtLSAgYXMgdGhlIG1lbW9yeSBvY2N1cGllZCBi eSB0aGUgbGlzdCBpdHNlbGYuCgogICBwYWNrYWdlIEdpbnRfTGlzdCBpcyBuZXcKICAgICBHbGli LkdsaXN0LkdlbmVyaWNfTGlzdCAoR2ludCwgQ29udmVydF9JLCBDb252ZXJ0X0EpOwoKICAgZnVu Y3Rpb24gQ29udmVydF9VSSAoSSA6IEd1aW50KSByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgIGZ1 bmN0aW9uIENvbnZlcnRfVUEgKFMgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEd1aW50OwogICBw cmFnbWEgSW1wb3J0IChDLCBDb252ZXJ0X1VJLCAiY29udmVydF91aSIpOwogICBwcmFnbWEgSW1w b3J0IChDLCBDb252ZXJ0X1VBLCAiY29udmVydF91YSIpOwogICBwYWNrYWdlIEd1aW50X0xpc3Qg aXMgbmV3CiAgICAgR2xpYi5HbGlzdC5HZW5lcmljX0xpc3QgKEd1aW50LCBDb252ZXJ0X1VJLCBD b252ZXJ0X1VBKTsKCmVuZCBHdGsuRW51bXM7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGduYXRidWcvZ3RrLXN0eWxlLmFkcwAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAwMAAwMDAwMDA0MDM3MAAwNzU1MTEwNzYz MgAwMTM3NjMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0 YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRh IC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAw MCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2Vs IEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGlj ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAg ICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g QXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJp Y3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhl ciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9l cyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0 byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0K LS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29u cyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRo ZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCndpdGggR2RrOyB1 c2UgR2RrOwp3aXRoIEdkay5Db2xvcjsKd2l0aCBHZGsuR0M7CndpdGggR2RrLkZvbnQ7CndpdGgg R2RrLlR5cGVzOwp3aXRoIEdkay5QaXhtYXA7CndpdGggR2RrLldpbmRvdzsKd2l0aCBHdGsuRW51 bXM7CgpwYWNrYWdlIEd0ay5TdHlsZSBpcwoKICAgdHlwZSBHdGtfU3R5bGUgaXMgbmV3IEdkay5D X1Byb3h5OwogICAtLSAgVHlwZSB1c2VkIHRvIGhhbmRsZSBzdHlsZXMuCiAgIC0tICBAcHhyZWZ7 UGFja2FnZV9HdGsuV2lkZ2V0fSBmb3Igc3R5bGUgaGFuZGxpbmcuCgogICBOdWxsX1N0eWxlIDog Y29uc3RhbnQgR3RrX1N0eWxlIDo9IG51bGw7CgogICBwcm9jZWR1cmUgR3RrX05ldyAoU3R5bGUg OiBvdXQgR3RrX1N0eWxlKTsKCiAgIGZ1bmN0aW9uIENvcHkgKFNvdXJjZSA6IGluIEd0a19TdHls ZSkgcmV0dXJuIEd0a19TdHlsZTsKCiAgIGZ1bmN0aW9uIEF0dGFjaAogICAgIChTdHlsZSAgOiBp biBHdGtfU3R5bGU7CiAgICAgIFdpbmRvdyA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdykgcmV0 dXJuIEd0a19TdHlsZTsKCiAgIHByb2NlZHVyZSBEZXRhY2ggKFN0eWxlIDogaW4gR3RrX1N0eWxl KTsKCiAgIHByb2NlZHVyZSBTZXRfQmFja2dyb3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3Rr X1N0eWxlOwogICAgICBXaW5kb3cgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAg ICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpOwoKICAgcHJvY2VkdXJlIFNl dF9Gb3JlZ3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRl X1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdk ay5Db2xvci5HZGtfQ29sb3IpOwoKICAgcHJvY2VkdXJlIFNldF9GZwogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yKSByZW5hbWVzIFNl dF9Gb3JlZ3JvdW5kOwoKICAgZnVuY3Rpb24gR2V0X0ZvcmVncm91bmQKICAgICAoU3R5bGUgICAg ICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9U eXBlKSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcjsKCiAgIGZ1bmN0aW9uIEdldF9GZwogICAg IChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMu R3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9yCiAgICAgIHJlbmFtZXMg R2V0X0ZvcmVncm91bmQ7CgogICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQKICAgICAoU3R5bGUg ICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0 ZV9UeXBlOwogICAgICBDb2xvciAgICAgIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcik7CgogICBw cm9jZWR1cmUgU2V0X0JnCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0 YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGlu IEdkay5Db2xvci5HZGtfQ29sb3IpIHJlbmFtZXMgU2V0X0JhY2tncm91bmQ7CgogICBmdW5jdGlv biBHZXRfQmFja2dyb3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBT dGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuQ29sb3IuR2Rr X0NvbG9yOwoKICAgZnVuY3Rpb24gR2V0X0JnCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5 bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdk ay5Db2xvci5HZGtfQ29sb3IKICAgICAgcmVuYW1lcyBHZXRfQmFja2dyb3VuZDsKCiAgIHByb2Nl ZHVyZSBTZXRfTGlnaHQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3Rh dGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBDb2xvciAgICAgIDogaW4g R2RrLkNvbG9yLkdka19Db2xvcik7CgogICBmdW5jdGlvbiBHZXRfTGlnaHQKICAgICAoU3R5bGUg ICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0 ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcjsKCiAgIHByb2NlZHVyZSBTZXRfRGFy awogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4g RW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3IuR2Rr X0NvbG9yKTsKCiAgIGZ1bmN0aW9uIEdldF9EYXJrCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtf U3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJu IEdkay5Db2xvci5HZGtfQ29sb3I7CgogICBwcm9jZWR1cmUgU2V0X01pZGRsZQogICAgIChTdHls ZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0 YXRlX1R5cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKCiAg IHByb2NlZHVyZSBTZXRfTWlkCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAg IFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6 IGluIEdkay5Db2xvci5HZGtfQ29sb3IpIHJlbmFtZXMgU2V0X01pZGRsZTsKCiAgIGZ1bmN0aW9u IEdldF9NaWRkbGUKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVf VHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xv cjsKCiAgIGZ1bmN0aW9uIEdldF9NaWQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsK ICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkNv bG9yLkdka19Db2xvcgogICAgICByZW5hbWVzIEdldF9NaWRkbGU7CgogICBwcm9jZWR1cmUgU2V0 X1RleHQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6 IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBDb2xvciAgICAgIDogaW4gR2RrLkNvbG9y Lkdka19Db2xvcik7CgogICBmdW5jdGlvbiBHZXRfVGV4dAogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJl dHVybiBHZGsuQ29sb3IuR2RrX0NvbG9yOwoKICAgcHJvY2VkdXJlIFNldF9CYXNlCiAgICAgKFN0 eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtf U3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdkay5Db2xvci5HZGtfQ29sb3IpOwoK ICAgZnVuY3Rpb24gR2V0X0Jhc2UKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAg ICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9y Lkdka19Db2xvcjsKCiAgIHByb2NlZHVyZSBTZXRfQmxhY2sKICAgICAoU3R5bGUgOiBpbiBHdGtf U3R5bGU7CiAgICAgIENvbG9yIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcik7CgogICBmdW5jdGlv biBHZXRfQmxhY2sgKFN0eWxlIDogaW4gR3RrX1N0eWxlKSByZXR1cm4gR2RrLkNvbG9yLkdka19D b2xvcjsKCiAgIHByb2NlZHVyZSBTZXRfV2hpdGUgKFN0eWxlIDogaW4gR3RrX1N0eWxlOyBDb2xv ciA6IGluIEdkay5Db2xvci5HZGtfQ29sb3IpOwoKICAgZnVuY3Rpb24gR2V0X1doaXRlIChTdHls ZSA6IGluIEd0a19TdHlsZSkgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29sb3I7CgogICBwcm9jZWR1 cmUgU2V0X0ZvbnQgKFN0eWxlIDogaW4gR3RrX1N0eWxlOyBGb250IDogaW4gR2RrLkZvbnQuR2Rr X0ZvbnQpOwoKICAgZnVuY3Rpb24gR2V0X0ZvbnQgKFN0eWxlIDogaW4gR3RrX1N0eWxlKSByZXR1 cm4gR2RrLkZvbnQuR2RrX0ZvbnQ7CgogICBwcm9jZWR1cmUgU2V0X0JsYWNrX0dDIChTdHlsZSA6 IGluIEd0a19TdHlsZTsgR0MgOiBpbiBHZGsuR0MuR2RrX0dDKTsKCiAgIGZ1bmN0aW9uIEdldF9C bGFja19HQyAoU3R5bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAg cHJvY2VkdXJlIFNldF9CbGFjawogICAgIChTdHlsZSA6IGluIEd0a19TdHlsZTsgR0MgOiBpbiBH ZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9CbGFja19HQzsKCiAgIGZ1bmN0aW9uIEdldF9CbGFj awogICAgIChTdHlsZSA6IGluIEd0a19TdHlsZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MgcmVuYW1l cyBHZXRfQmxhY2tfR0M7CgogICBwcm9jZWR1cmUgU2V0X1doaXRlX0dDIChTdHlsZSA6IGluIEd0 a19TdHlsZTsgR0MgOiBpbiBHZGsuR0MuR2RrX0dDKTsKCiAgIGZ1bmN0aW9uIEdldF9XaGl0ZV9H QyAoU3R5bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2Vk dXJlIFNldF9XaGl0ZQogICAgIChTdHlsZSA6IGluIEd0a19TdHlsZTsgR0MgOiBpbiBHZGsuR0Mu R2RrX0dDKSByZW5hbWVzIFNldF9XaGl0ZV9HQzsKCiAgIGZ1bmN0aW9uIEdldF9XaGl0ZQogICAg IChTdHlsZSA6IGluIEd0a19TdHlsZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MgcmVuYW1lcyBHZXRf V2hpdGVfR0M7CgogICBwcm9jZWR1cmUgU2V0X0ZvcmVncm91bmRfR0MKICAgICAoU3R5bGUgICAg ICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9U eXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBH ZXRfRm9yZWdyb3VuZF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBT dGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0MuR2RrX0dD OwoKICAgcHJvY2VkdXJlIFNldF9Gb3JlZ3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtf U3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAg R0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X0ZvcmVncm91bmRfR0M7 CgogICBmdW5jdGlvbiBHZXRfRm9yZWdyb3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0 eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBH ZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0ZvcmVncm91bmRfR0M7CgogICBwcm9jZWR1 cmUgU2V0X0ZnCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5 cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5H Qy5HZGtfR0MpIHJlbmFtZXMgU2V0X0ZvcmVncm91bmRfR0M7CgogICBmdW5jdGlvbiBHZXRfRmcK ICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVu dW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdka19HQwogICAgICByZW5hbWVzIEdl dF9Gb3JlZ3JvdW5kX0dDOwoKICAgcHJvY2VkdXJlIFNldF9GZ19HQwogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9Gb3Jl Z3JvdW5kX0dDOwoKICAgZnVuY3Rpb24gR2V0X0ZnX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBH dGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0 dXJuIEdkay5HQy5HZGtfR0MKICAgICAgcmVuYW1lcyBHZXRfRm9yZWdyb3VuZF9HQzsKCiAgIHBy b2NlZHVyZSBTZXRfQmFja2dyb3VuZF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxl OwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAg ICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKTsKCiAgIGZ1bmN0aW9uIEdldF9CYWNrZ3JvdW5kX0dD CiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBF bnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5HQy5HZGtfR0M7CgogICBwcm9jZWR1cmUg U2V0X0JhY2tncm91bmQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3Rh dGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4g R2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRfQmFja2dyb3VuZF9HQzsKCiAgIGZ1bmN0aW9uIEdl dF9CYWNrZ3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRl X1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MKICAg ICAgcmVuYW1lcyBHZXRfQmFja2dyb3VuZF9HQzsKCiAgIHByb2NlZHVyZSBTZXRfQmcKICAgICAo U3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0 a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQykgcmVuYW1l cyBTZXRfQmFja2dyb3VuZF9HQzsKCiAgIGZ1bmN0aW9uIEdldF9CZwogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0JhY2tncm91bmRfR0M7 CgogICBwcm9jZWR1cmUgU2V0X0JnX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7 CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAg ICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X0JhY2tncm91bmRfR0M7CgogICBm dW5jdGlvbiBHZXRfQmdfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAg U3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdka19H QwogICAgICByZW5hbWVzIEdldF9CYWNrZ3JvdW5kX0dDOwoKICAgcHJvY2VkdXJlIFNldF9MaWdo dF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDog aW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2Rr X0dDKTsKCiAgIGZ1bmN0aW9uIEdldF9MaWdodF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3Rr X1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVy biBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9MaWdodAogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9MaWdo dF9HQzsKCiAgIGZ1bmN0aW9uIEdldF9MaWdodAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0 eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBH ZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0xpZ2h0X0dDOwoKICAgcHJvY2VkdXJlIFNl dF9EYXJrX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5 cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5H Qy5HZGtfR0MpOwoKICAgZnVuY3Rpb24gR2V0X0RhcmtfR0MKICAgICAoU3R5bGUgICAgICA6IGlu IEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSBy ZXR1cm4gR2RrLkdDLkdka19HQzsKCiAgIHByb2NlZHVyZSBTZXRfRGFyawogICAgIChTdHlsZSAg ICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRl X1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9E YXJrX0dDOwoKICAgZnVuY3Rpb24gR2V0X0RhcmsKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19T dHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4g R2RrLkdDLkdka19HQwogICAgICByZW5hbWVzIEdldF9EYXJrX0dDOwoKICAgcHJvY2VkdXJlIFNl dF9NaWRkbGVfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVf VHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2Rr LkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfTWlkZGxlX0dDCiAgICAgKFN0eWxlICAgICAg OiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlw ZSkgcmV0dXJuIEdkay5HQy5HZGtfR0M7CgogICBwcm9jZWR1cmUgU2V0X01pZGRsZQogICAgIChT dHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3Rr X1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVz IFNldF9NaWRkbGVfR0M7CgogICBmdW5jdGlvbiBHZXRfTWlkZGxlCiAgICAgKFN0eWxlICAgICAg OiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlw ZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MKICAgICAgcmVuYW1lcyBHZXRfTWlkZGxlX0dDOwoKICAg cHJvY2VkdXJlIFNldF9NaWRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAg ICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAg IDogaW4gR2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRfTWlkZGxlX0dDOwoKICAgZnVuY3Rpb24g R2V0X01pZF9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9U eXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDCiAgICAg IHJlbmFtZXMgR2V0X01pZGRsZV9HQzsKCiAgIHByb2NlZHVyZSBTZXRfTWlkCiAgICAgKFN0eWxl ICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3Rh dGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0 X01pZGRsZV9HQzsKCiAgIGZ1bmN0aW9uIEdldF9NaWQKICAgICAoU3R5bGUgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1 cm4gR2RrLkdDLkdka19HQwogICAgICByZW5hbWVzIEdldF9NaWRkbGVfR0M7CgogICBwcm9jZWR1 cmUgU2V0X1RleHRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3Rh dGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4g R2RrLkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfVGV4dF9HQwogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9UZXh0CiAgICAgKFN0 eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtf U3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMg U2V0X1RleHRfR0M7CgogICBmdW5jdGlvbiBHZXRfVGV4dAogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJl dHVybiBHZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X1RleHRfR0M7CgogICBwcm9jZWR1 cmUgU2V0X0Jhc2VfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3Rh dGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4g R2RrLkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfQmFzZV9HQwogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9CYXNlCiAgICAgKFN0 eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtf U3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMg U2V0X0Jhc2VfR0M7CgogICBmdW5jdGlvbiBHZXRfQmFzZQogICAgIChTdHlsZSAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJl dHVybiBHZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0Jhc2VfR0M7CgogICBwcm9jZWR1 cmUgU2V0X0JnX1BpeG1hcAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBT dGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIFBpeG1hcCAgICAgOiBp biBHZGsuUGl4bWFwLkdka19QaXhtYXApOwoKICAgZnVuY3Rpb24gR2V0X0JnX1BpeG1hcAogICAg IChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMu R3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuUGl4bWFwLkdka19QaXhtYXA7CgogICBmdW5jdGlv biBYX1RoaWNrbmVzcyAoU3R5bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHaW50OwogICAtLSAg V2lkdGggb2YgdGhlIHZlcnRpY2FsIHNjcm9sbGJhcnMgYW5kIHJhbmdlcyB3aGVuIFN0eWxlIGlz IGFwcGxpZWQuCiAgIC0tICBJbiBmYWN0LCB0aGlzIHRoaWNrbmVzcyBpcyB1c2VkIGZvciBhIGxv dCBvZiB3aWRnZXRzIHdob3NlIHdpZHRoCiAgIC0tICBkb2VzIG5vdCBkZXBlbmQgb24gdGhlaXIg Y29udGVudCwgc3VjaCBhcyBydWxlcnMsLi4uCgogICBmdW5jdGlvbiBZX1RoaWNrbmVzcyAoU3R5 bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHaW50OwogICAtLSAgSGVpZ2h0IG9mIHRoZSBob3Jp em9udGFsIHNjcm9sbGJhcnMgYW5kIHJhbmdlcyB3aGVuIFN0eWxlIGlzIGFwcGxpZWQuCgogICBw cm9jZWR1cmUgRHJhd19IbGluZQogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAg ICBXaW5kb3cgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0ZV9UeXBl IDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIFgxLCBYMiAgICAgOiBpbiBHaW50Owog ICAgICBZICAgICAgICAgIDogaW4gR2ludCk7CgogICBwcm9jZWR1cmUgRHJhd19WbGluZQogICAg IChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBXaW5kb3cgICAgIDogaW4gR2RrLldp bmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIFkxLCBZMiAgICAgOiBpbiBHaW50OwogICAgICBYICAgICAgICAgIDogaW4gR2lu dCk7CgogICBwcm9jZWR1cmUgRHJhd19TaGFkb3cKICAgICAoU3R5bGUgICAgICAgOiBpbiBHdGtf U3R5bGU7CiAgICAgIFdpbmRvdyAgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAg ICBTdGF0ZV9UeXBlICA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBTaGFkb3dfVHlw ZSA6IGluIEVudW1zLkd0a19TaGFkb3dfVHlwZTsKICAgICAgWCwgWSAgICAgICAgOiBpbiBHaW50 OwogICAgICBXaWR0aCAgICAgICA6IGluIEdpbnQ7CiAgICAgIEhlaWdodCAgICAgIDogaW4gR2lu dCk7CgogICBwcm9jZWR1cmUgRHJhd19Qb2x5Z29uCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtf U3R5bGU7CiAgICAgIFdpbmRvdyAgICAgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgICAg IFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgU2hhZG93X1R5cGUg OiBpbiBFbnVtcy5HdGtfU2hhZG93X1R5cGU7CiAgICAgIFBvaW50cyAgICAgOiBpbiBHZGsuVHlw ZXMuR2RrX1BvaW50c19BcnJheTsKICAgICAgRmlsbCAgICAgICA6IGluIEJvb2xlYW4pOwoKICAg cHJvY2VkdXJlIERyYXdfQXJyb3cKICAgICAoU3R5bGUgICAgICAgOiBpbiBHdGtfU3R5bGU7CiAg ICAgIFdpbmRvdyAgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0ZV9U eXBlICA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBTaGFkb3dfVHlwZSA6IGluIEVu dW1zLkd0a19TaGFkb3dfVHlwZTsKICAgICAgQXJyb3dfVHlwZSAgOiBpbiBFbnVtcy5HdGtfQXJy b3dfVHlwZTsKICAgICAgRmlsbCAgICAgICAgOiBpbiBCb29sZWFuOwogICAgICBYLCBZICAgICAg ICA6IGluIEdpbnQ7CiAgICAgIFdpZHRoICAgICAgIDogaW4gR2ludDsKICAgICAgSGVpZ2h0ICAg ICAgOiBpbiBHaW50KTsKCiAgIHByb2NlZHVyZSBEcmF3X0RpYW1vbmQKICAgICAoU3R5bGUgICAg ICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFdpbmRvdyAgICAgIDogaW4gR2RrLldpbmRvdy5HZGtf V2luZG93OwogICAgICBTdGF0ZV9UeXBlICA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAg ICBTaGFkb3dfVHlwZSA6IGluIEVudW1zLkd0a19TaGFkb3dfVHlwZTsKICAgICAgWCwgWSAgICAg ICAgOiBpbiBHaW50OwogICAgICBXaWR0aCAgICAgICA6IGluIEdpbnQ7CiAgICAgIEhlaWdodCAg ICAgIDogaW4gR2ludCk7CgogICBwcm9jZWR1cmUgRHJhd19PdmFsCiAgICAgKFN0eWxlICAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBXaW5kb3cgICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dp bmRvdzsKICAgICAgU3RhdGVfVHlwZSAgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAg U2hhZG93X1R5cGUgOiBpbiBFbnVtcy5HdGtfU2hhZG93X1R5cGU7CiAgICAgIFgsIFkgICAgICAg IDogaW4gR2ludDsKICAgICAgV2lkdGggICAgICAgOiBpbiBHaW50OwogICAgICBIZWlnaHQgICAg ICA6IGluIEdpbnQpOwoKICAgcHJvY2VkdXJlIERyYXdfU3RyaW5nCiAgICAgKFN0eWxlICAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBXaW5kb3cgICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dp bmRvdzsKICAgICAgU3RhdGVfVHlwZSAgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAg WCwgWSAgICAgICAgOiBpbiBHaW50OwogICAgICBTdHIgICAgICAgICA6IGluIFN0cmluZyk7Cgog ICBwcm9jZWR1cmUgUmVmIChPYmplY3QgOiBpbiBHdGtfU3R5bGUpOwogICBwcm9jZWR1cmUgVW5y ZWYgKE9iamVjdCA6IGluIEd0a19TdHlsZSk7Cgpwcml2YXRlCiAgIHByYWdtYSBJbXBvcnQgKEMs IEF0dGFjaCwgImd0a19zdHlsZV9hdHRhY2giKTsKICAgcHJhZ21hIEltcG9ydCAoQywgQ29weSwg Imd0a19zdHlsZV9jb3B5Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIERldGFjaCwgImd0a19zdHls ZV9kZXRhY2giKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUmVmLCAiZ3RrX3N0eWxlX3JlZiIpOwog ICBwcmFnbWEgSW1wb3J0IChDLCBVbnJlZiwgImd0a19zdHlsZV91bnJlZiIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBEcmF3X0RpYW1vbmQsICJndGtfZHJhd19kaWFtb25kIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIERyYXdfSGxpbmUsICJndGtfZHJhd19obGluZSIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBEcmF3X092YWwsICJndGtfZHJhd19vdmFsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIERy YXdfU2hhZG93LCAiZ3RrX2RyYXdfc2hhZG93Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIERyYXdf VmxpbmUsICJndGtfZHJhd192bGluZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfRm9udCwg ImFkYV9zdHlsZV9zZXRfZm9udCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfRm9udCwgImFk YV9zdHlsZV9nZXRfZm9udCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQmxhY2tfR0MsICJh ZGFfc3R5bGVfc2V0X2JsYWNrX2djIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9CbGFja19H QywgImFkYV9zdHlsZV9nZXRfYmxhY2tfZ2MiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1do aXRlX0dDLCAiYWRhX3N0eWxlX3NldF93aGl0ZV9nYyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBH ZXRfV2hpdGVfR0MsICJhZGFfc3R5bGVfZ2V0X3doaXRlX2djIik7CiAgIHByYWdtYSBJbXBvcnQg KEMsIFhfVGhpY2tuZXNzLCAiYWRhX3N0eWxlX2dldF94X3RoaWNrbmVzcyIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBZX1RoaWNrbmVzcywgImFkYV9zdHlsZV9nZXRfeV90aGlja25lc3MiKTsKZW5k IEd0ay5TdHlsZTsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9n ZGstZ2MuYWRzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAw ADAwMDAwMDM0NTYzADA3NTUxMTA3NjMyADAxMzIwMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29s a2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg IENvcHlyaWdodCAoQykgMTk5OC0yMDAwICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAg ICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQot LSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu b3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBm aWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBs aW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVj dXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0 aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZh bGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUg IG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4KLS0KLS0gIEEgZ3JhcGhpYyBjb250ZXh0IGlz IGEgc3RydWN0dXJlIHRoYXQgZGVzY3JpYmVzIGFsbCB0aGUgYXR0cmlidXRlcwotLSAgdXNlZCBi eSB0aGUgZHJhd2luZyBmdW5jdGlvbnMgaW4gR2RrLgotLSAgVGhlIGNvbG9ycywgbGluZSBzdHls ZXMsIEZpbGwgc3R5bGVzIGFuZCBzbyBvbiBhcmUgZGVmaW5lZCB0aHJvdWdoCi0tICB0aGlzIHN0 cnVjdHVyZS4KLS0KLS0gIE9uIFgxMSBzeXN0ZW1zLCB0aGlzIHN0cnVjdHVyZSBpcyBzdG9yZWQg ZGlyZWN0bHkgb24gdGhlIFhTZXJ2ZXIsCi0tICB3aGljaCBzcGVlZHMgdXAgdGhlIHRyYW5zZmVy IG9mIHRoZSBkcmF3aW5nIGF0dHJpYnV0ZXMgYSBsb3QuIEluc3RlYWQKLS0gIG9mIHRyYW5zZmVy cmluZyBhbGwgb2YgdGhlbSBldmVyeSB0aW1lIHlvdSBjYWxsIG9uZSBvZiB0aGUgZHJhd2luZwot LSAgZnVuY3Rpb25zLCB5b3Ugc2ltcGx5IHNwZWNpZnkgd2hpY2ggR0MgeW91IHdhbnQgdG8gdXNl LgotLQotLSAgVGh1cywgaXQgaXMgcmVjb21tZW5kZWQgdG8gY3JlYXRlIGFzIG1hbnkgR0NzIGFz IHlvdSBuZWVkLCBpbnN0ZWFkCi0tICBvZiBjcmVhdGluZyBhIHNpbmdsZSBvbmUgdGhhdCBpcyBt b2RpZmllZCBldmVyeSB0aW1lIHlvdSBuZWVkIHRvCi0tICBtb2RpZnkgb25lIG9mIHRoZSBhdHRy aWJ1dGVzLgotLQotLSAgT24gVW5peCBtYWNoaW5lcywgeW91IHNob3VsZCBoYXZlIGEgbG9vayBh dCB0aGUgZXh0ZXJuYWwgdXRpbGl0eSAneGdjJwotLSAgd2hpY2ggZGVtb25zdHJhdGVzIGFsbCB0 aGUgYmFzaWMgc2V0dGluZ3Mgb2YgdGhlIGdyYXBoaWMgY29udGV4dHMuCi0tCi0tICA8L2Rlc2Ny aXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBHbGliOyB1c2Ug R2xpYjsKd2l0aCBHZGsuQ29sb3I7CndpdGggR2RrLkZvbnQ7CndpdGggR2RrLlJlY3RhbmdsZTsK d2l0aCBHZGsuUmVnaW9uOwp3aXRoIEdkay5UeXBlczsKd2l0aCBHZGsuV2luZG93OwoKcGFja2Fn ZSBHZGsuR0MgaXMKCiAgIHN1YnR5cGUgR2RrX0dDIGlzIEdkay5HZGtfR0M7CiAgIC0tICBBIGdy YXBoaWMgY29udGV4dCB0aGF0IGNvbnRhaW4gYWxsIHRoZSBpbmZvcm1hdGlvbiB0byBkcmF3IGdy YXBoaWNzCiAgIC0tICBvbiB0aGUgc2NyZWVuLgogICAtLSAgQ3JlYXRpbmcgdGhlc2UgR0MgaXMg bW9yZSBlZmZpY2llbnQgdGhhbiBwYXNzaW5nIGEgbG90IG9mIHBhcmFtZXRlcnMKICAgLS0gIHRv IGVhY2ggb2YgdGhlIGRyYXdpbmcgZnVuY3Rpb25zLCBzaW5jZSB0aGVzZSBHQyBhcmUgc3RvcmVk IG9uIHRoZQogICAtLSAgc2VydmVyIHNpZGUgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIHBhc3MgdGhy b3VnaCB0aGUgbmV0d29yay4KCiAgIHR5cGUgR2RrX0dDX1ZhbHVlcyBpcyBuZXcgR2RrLkNfUHJv eHk7CiAgIC0tICBBIHN0cnVjdHVyZSB1c2VkIG9uIHRoZSBjbGllbnQgc2lkZSB0byBzdG9yZSB0 aGUgc2FtZSBpbmZvcm1hdGlvbgogICAtLSAgYXMgdGhlIEdDLiBDcmVhdGluZyBhIEdDIGZyb20g dGhpcyBzdHJ1Y3R1cmUgaXMgbW9yZSBlZmZpY2llbnQgdGhhbgogICAtLSAgY2FsbGluZyBhIGxv dCBvZiBmdW5jdGlvbnMgdG8gbW9kaWZ5IHRoZSBHQyBkaXJlY3RseSwgc2luY2UgdGhlcmUgaXMK ICAgLS0gIGEgc2luZ2xlIGNhbGwgdG8gdGhlIHNlcnZlci4KCiAgIE51bGxfR0MgOiBjb25zdGFu dCBHZGtfR0M7CiAgIE51bGxfR0NfVmFsdWVzIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlczsKCiAg IC0tLS0tLS0tLS0tLQogICAtLSBHZGtfR0MgLS0KICAgLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1 cmUgR2RrX05ldyAoR0MgICAgIDogICAgb3V0IEdka19HQzsKICAgICAgICAgICAgICAgICAgICAg IFdpbmRvdyA6IGluICAgICBHZGsuV2luZG93Lkdka19XaW5kb3cpOwogICAtLSAgQ3JlYXRlIGEg bmV3IGdyYXBoaWMgY29udGV4dC4KICAgLS0gIFRoZSB3aW5kb3cgbXVzdCBoYXZlIGJlZW4gcmVh bGl6ZWQgZmlyc3QgKHNvIHRoYXQgaXQgaXMgYXNzb2NpYXRlZAogICAtLSAgd2l0aCBzb21lIHJl c291cmNlcyBvbiB0aGUgWHNlcnZlcikuCiAgIC0tICBUaGUgR0MgY2FuIHRoZW4gYmUgdXNlZCBm b3IgYW55IHdpbmRvdyB0aGF0IGhhcyB0aGUgc2FtZSByb290IHdpbmRvdywKICAgLS0gIGFuZCBz YW1lIGNvbG9yIGRlcHRoIGFzIFdpbmRvdy4KICAgLS0gIFNlZSB0aGUgbWFudWFsIHBhZ2UgZm9y IFhDcmVhdGVHQyBvbiBVbml4IHN5c3RlbXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgogICBwcm9j ZWR1cmUgR2RrX05ldyAoR0MgICAgICAgICAgOiAgICBvdXQgR2RrX0dDOwogICAgICAgICAgICAg ICAgICAgICAgV2luZG93ICAgICAgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAg ICAgICAgICAgICAgICAgICAgVmFsdWVzICAgICAgOiBpbiAgICAgR2RrX0dDX1ZhbHVlczsKICAg ICAgICAgICAgICAgICAgICAgIFZhbHVlc19NYXNrIDogaW4gICAgIFR5cGVzLkdka19HQ19WYWx1 ZXNfTWFzayk7CiAgIC0tICBDcmVhdGUgYSBuZXcgZ3JhcGhpYyBjb250ZXh0LgogICAtLSAgSXQg aXMgZGlyZWN0bHkgY3JlYXRlZCB3aXRoIHRoZSB2YWx1ZXMgc2V0IGluIFZhbHVlcywgYW5kIHdo b3NlCiAgIC0tICBhc3NvY2lhdGVkIGZpZWxkIGhhcyBiZWVuIHNldCBpbiBWYWx1ZXNfTWFzay4K ICAgLS0gIFRoaXMgaXMgZmFzdGVyIHRoYW4gY2FsbGluZyB0aGUgc2ltcGxlIEdka19OZXcgZnVu Y3Rpb24gYW5kIGVhY2ggb2YKICAgLS0gIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIHBhY2thZ2Us IHNpbmNlIGVhY2ggb2YgdGhlbSByZXF1aXJlcyBhIGNhbGwKICAgLS0gIHRvIHRoZSBzZXJ2ZXIu CgogICBwcm9jZWR1cmUgRGVzdHJveSAoR0MgOiBpbiBHZGtfR0MpOwogICAtLSAgRnJlZSB0aGUg bWVtb3J5IGFsbG9jYXRlZCBvbiB0aGUgc2VydmVyIGZvciB0aGUgZ3JhcGhpYyBjb250ZXh0Lgog ICAtLSAgR3JhcGhpYyBjb250ZXh0cyBhcmUgbmV2ZXIgZnJlZWQgYXV0b21hdGljYWxseSBieSBH dGtBZGEsIHRoaXMgaXMKICAgLS0gIHRoZSB1c2VyIHJlc3BvbnNpYmlsaXR5IHRvIGRvIHNvLgoK ICAgcHJvY2VkdXJlIFJlZiAoR0MgOiBpbiBHZGtfR0MpOwogICAtLSAgSW5jcmVtZW50IHRoZSBy ZWZlcmVuY2UgY291bnRpbmcgZm9yIHRoZSBncmFwaGljIGNvbnRleHQuCiAgIC0tICBZb3Ugc2hv dWxkIHVzdWFsbHkgbm90IGhhdmUgdG8gdXNlIGl0LgoKICAgcHJvY2VkdXJlIFVucmVmIChHQyA6 IGluIEdka19HQyk7CiAgIC0tICBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBmb3Ig dGhlIGdyYXBoaWMgY29udGV4dC4KICAgLS0gIFdoZW4gdGhpcyByZWFjaGVzIDAsIHRoZSBncmFw aGljIGNvbnRleHQgaXMgZGVzdHJveWVkLgoKICAgcHJvY2VkdXJlIEdldF9WYWx1ZXMgKEdDICAg ICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyA6IGluIEdka19H Q19WYWx1ZXMpOwogICAtLSAgR2V0IHRoZSB2YWx1ZXMgc2V0IGluIHRoZSBHQy4KICAgLS0gIFRo aXMgY29waWVzIHRoZSB2YWx1ZXMgZnJvbSB0aGUgc2VydmVyIHRvIGNsaWVudCwgYWxsb3dpbmcg ZmFzdGVyCiAgIC0tICBtb2RpZmljYXRpb25zLiBWYWx1ZXMgY2FuIHRoZW4gYmUgY29waWVkIGJh Y2sgdG8gdGhlIHNlcnZlciBieQogICAtLSAgY3JlYXRpbmcgYSBuZXcgZ3JhcGhpYyBjb250ZXh0 IHdpdGggdGhlIGZ1bmN0aW9uIEdka19OZXcgYWJvdmUuCiAgIC0tICBWYWx1ZXMgc2hvdWxkIGhh dmUgYmVlbiBhbGxvY2F0ZWQgZmlyc3Qgd2l0aCBhIGNhbGwgdG8gR2RrX05ldy4KCiAgIHByb2Nl ZHVyZSBTZXRfRm9yZWdyb3VuZCAoR0MgICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ29sb3IgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0gIFNldCB0 aGUgZm9yZWdyb3VuZCBjb2xvciBmb3IgdGhlIGdyYXBoaWMgY29udGV4dC4KICAgLS0gIFRoaXMg Y29sb3IgaXMgdGhlIG9uZSB0aGF0IGlzIHVzZWQgYnkgbW9zdCBkcmF3aW5nIGZ1bmN0aW9ucy4K CiAgIHByb2NlZHVyZSBTZXRfQmFja2dyb3VuZCAoR0MgICAgIDogaW4gR2RrX0dDOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENvbG9yICA6IGluIEdkay5Db2xvci5HZGtfQ29sb3IpOwog ICAtLSAgU2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgZ3JhcGhpYyBjb250ZXh0LgoK ICAgcHJvY2VkdXJlIFNldF9Gb250IChHQyAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAg ICAgICAgIEZvbnQgOiBpbiBHZGsuRm9udC5HZGtfRm9udCk7CiAgIC0tICBTZXQgdGhlIGZvbnQg dXNlZCBieSB0aGUgZ3JhcGhpYyBjb250ZXh0LgogICAtLSAgVGhpcyBmb250IGlzIHVzZWQgYnkg dGhlIGZ1bmN0aW9uIEdkay5EcmF3YWJsZS5EcmF3X1RleHQuCgogICBwcm9jZWR1cmUgU2V0X0Z1 bmN0aW9uIChHQyAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5j IDogaW4gVHlwZXMuR2RrX0Z1bmN0aW9uKTsKICAgLS0gIFNldCB0aGUgZnVuY3Rpb24gaW4gdGhl IGdyYXBoaWMgY29udGV4dC4KICAgLS0gIFRoaXMgZnVuY3Rpb24gc3BlY2lmaWVzIGhvdyB0aGUg cG9pbnRzIGFyZSBwdXQgb24gdGhlIHNjcmVlbiwgaWUKICAgLS0gIGlmIEd0a0FkYSBob3cgR3Rr QWRhIHNob3VsZCBtaXggdGhlIHBvaW50IGFscmVhZHkgb24gdGhlIHNjcmVlbgogICAtLSAgYW5k IHRoZSBuZXcgcG9pbnQgYmVpbmcgcHV0LgogICAtLSAgTm90ZSB0aGF0IHNldHRpbmcgdGhlIGZ1 bmN0aW9uIHRvIEdka19Yb3IgaXMgbm90IHRoZSByaWdodCB3YXkKICAgLS0gIHRvIGRvIGFuaW1h dGlvbi4gWW91IHNob3VsZCBpbnN0ZWFkIHNhdmUgdGhlIGJhY2tncm91bmQgcGl4bWFwLAogICAt LSAgcHV0IHRoZSBpbWFnZSwgYW5kIHRoZW4gcmVzdG9yZSB0aGUgYmFja2dyb3VuZC4KICAgLS0K ICAgLS0gIEluIGdlbmVyYWwsIHRoZXJlIGFyZSB0aHJlZSBiYXNpYyBzdGVwcyB0byBkcmF3aW5n OiByZWFkaW5nIHRoZSBzb3VyY2UKICAgLS0gIHBpeGVscywgcmVhZGluZyB0aGUgZGVzdGluYXRp b24gcGl4ZWxzLCBhbmQgd3JpdGluZyB0aGUgZGVzdGluYXRpb24KICAgLS0gIHBpeGVscy4gIFNv bWUgZnVuY3Rpb25zIG9ubHkgcGVyZm9ybSB0aGUgdGhpcmQgc3RlcCAoU2V0IGFuZCBDbGVhciks CiAgIC0tICBzb21lIGRvIG5vdCBuZWVkIHRoZSBtaWRkbGUgc3RlcCAoQ29weSksIHdoZXJlYXMg bW9zdCByZXF1aXJlIHRoZSB0aHJlZQogICAtLSAgc3RlcHMsIGFuZCB0aHVzIGNhbiBiZSBtdWNo IHNsb3dlci4KCiAgIHByb2NlZHVyZSBTZXRfRmlsbCAoR0MgICA6IGluIEdka19HQzsKICAgICAg ICAgICAgICAgICAgICAgICBGaWxsIDogaW4gVHlwZXMuR2RrX0ZpbGwpOwogICAtLSAgU2V0IHRo ZSBwYXR0ZXJuIHVzZWQgZm9yIGZpbGxpbmcgdGhlIHBvbHlnb25zLgoKICAgcHJvY2VkdXJlIFNl dF9UaWxlIChHQyAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgIFRpbGUgOiBp biBHZGsuR2RrX1BpeG1hcCk7CgogICBwcm9jZWR1cmUgU2V0X1N0aXBwbGUgKEdDICAgICAgOiBp biBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RpcHBsZSA6IGluIEdkay5HZGtf UGl4bWFwKTsKCiAgIHByb2NlZHVyZSBTZXRfQ2xpcF9NYXNrIChHQyAgICA6IGluIEdkay5HQy5H ZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNrICA6IGluIEdkay5HZGtfQml0 bWFwKTsKICAgLS0gIElmIE1hc2sgaXMgc2V0IHRvIE51bGxfQml0bWFwLCB0aGVuIG5vIGNsaXBf bWFzayBpcyB1c2VkIGZvciBkcmF3aW5nLgogICAtLSAgUG9pbnRzIHdpbGwgYmUgZHJhd24gdGhy b3VnaCB0aGlzIEdDIG9ubHkgd2hlcmUgdGhlIGJpdHMgYXJlIHNldCB0byAxCiAgIC0tICBpbiB0 aGUgbWFzay4gU2VlIGFsc28gdGhlIGZ1bmN0aW9uIFNldF9DbGlwX09yaWdpbiBmb3IKICAgLS0g IGhvdyB0byBtb3ZlIHRoZSBtYXNrIGluc2lkZSB0aGUgR0MuCgogICBwcm9jZWR1cmUgU2V0X1Rz X09yaWdpbiAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgs IFkgOiBpbiBHaW50KTsKICAgLS0gIFNldCB0aGUgVGlsZSBhbmQgU3RpcHBsZSBvcmlnaW4gaW4g dGhlIGdyYXBoaWMgY29udGV4dC4KCiAgIHByb2NlZHVyZSBTZXRfQ2xpcF9PcmlnaW4gKEdDICAg OiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgsIFkgOiBpbiBHaW50 KTsKICAgLS0gIFNldCB0aGUgb3JpZ2luIG9mIHRoZSBjbGlwIG1hc2suCiAgIC0tICBTZWUgdGhl IGZ1bmN0aW9ucyBTZXRfQ2xpcF9SZWN0YW5nbGUsIFNldF9DbGlwX1JlZ2lvbiBhbmQKICAgLS0g IEdkay5CaXRtYXAuU2V0X0NsaXBfTWFzayBmb3IgbW9yZSBleHBsYW5hdGlvbi4KCiAgIHByb2Nl ZHVyZSBTZXRfQ2xpcF9SZWN0YW5nbGUKICAgICAoR0MgICAgICAgIDogaW4gR2RrX0dDOwogICAg ICBSZWN0YW5nbGUgOiBpbiBHZGsuUmVjdGFuZ2xlLkdka19SZWN0YW5nbGUpOwogICAtLSAgU2V0 IHRoZSBjbGlwIHJlY3RhbmdsZS4KICAgLS0gIE9ubHkgdGhlIHBvaW50cyB0aGF0IGFyZSBkcmF3 biBpbnNpZGUgdGhpcyByZWN0YW5nbGUgd2lsbCBiZSBkaXNwbGF5ZWQKICAgLS0gIG9uIHRoZSBz Y3JlZW4uIE5vdGUgdGhhdCB5b3UgbWlnaHQgaGF2ZSB0byBtb2RpZnkgdGhlIENsaXAgb3JpZ2lu IGZpcnN0CiAgIC0tICB3aXRoIFNldF9DbGlwX09yaWdpbi4KICAgLS0gIFNlZSBTZXRfQ2xpcF9N YXNrIHRvIGRlbGV0ZSB0aGUgY3VycmVudCBjbGlwIG1hc2suCgogICBwcm9jZWR1cmUgU2V0X0Ns aXBfUmVnaW9uIChHQyAgICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlZ2lvbiA6IGluIEdkay5SZWdpb24uR2RrX1JlZ2lvbik7CiAgIC0tICBEZWZpbmUgYSBj bGlwIHJlZ2lvbiBvbiB0aGUgc2NyZWVuLgogICAtLSAgVGhpcyBpcyBqdXN0IGxpa2UgU2V0X0Ns aXBfUmVjdGFuZ2xlLCBleGNlcHQgdGhhdCBhIHJlZ2lvbiBpcyBhIG1vcmUKICAgLS0gIGNvbXBs ZXggcmVnaW9uLCB0aGF0IGNhbiBiZSB0aGUgaW50ZXJzZWN0aW9uIG9yIHVuaW9uIG9mIG11bHRp cGxlCiAgIC0tICByZWN0YW5nbGVzLiBOb3RlIHRoYXQgdGhlIENsaXBfT3JpZ2luIGNhbiBoYXZl IGFuIGluZmx1ZW5jZSBvbiB0aGlzCiAgIC0tICBmdW5jdGlvbi4KCiAgIHByb2NlZHVyZSBTZXRf U3Vid2luZG93IChHQyAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg TW9kZSA6IGluIFR5cGVzLkdka19TdWJ3aW5kb3dfTW9kZSk7CiAgIC0tICBTZXQgdGhlIHN1Yndp bmRvdyBtb2RlIGZvciB0aGUgZ3JhcGhpYyBjb250ZXh0LgogICAtLSAgVGhpcyBzcGVjaWZpZXMg d2hldGhlciB0aGUgZHJhd2luZyByb3V0aW5lcyBzaG91bGQgYmUgY2xpcHBlZCB0bwogICAtLSAg dGhlIHNwZWNpZmljIHdpbmRvdyB0aGV5IGFyZSBkcmF3biBpbnRvLCBvciBpZiB0aGV5IHNob3Vs ZCBleHRlbmQKICAgLS0gIHRvIHN1YndpbmRvd3MgYXMgd2VsbC4KCiAgIHByb2NlZHVyZSBTZXRf RXhwb3N1cmVzIChHQyAgICAgICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFeHBvc3VyZXMgOiBpbiBCb29sZWFuKTsKICAgLS0gIEV4cG9zdXJlcyBpbmRpY2F0ZXMg d2hldGhlciB5b3Ugd2FudCAiZXhwb3NlIiBhbmQgIm5vZXhwb3NlIiBldmVudHMgdG8KICAgLS0g IGJlIHJlcG9ydGVkIHdoZW4gY2FsbGluZyBDb3B5X0FyZWEgYW5kIENvcHlfUGxhbmUgd2l0aCB0 aGlzIEdDLgogICAtLSAgWW91IHNob3VsZCBkaXNhYmxlIHRoaXMgaWYgeW91IGRvbid0IG5lZWQg dGhlIGV2ZW50IGFuZCB3YW50IHRvIG9wdGltaXplCiAgIC0tICB5b3VyIGFwcGxpY2F0aW9uLgog ICAtLSAgSWYgRXhwb3N1cmVzIGlzIFRydWUsIHRoZW4gYW55IGNhbGwgdG8gQ29weV9BcmVhIG9y IERyYXdfUGl4bWFwIHdpbGwKICAgLS0gIGdlbmVyYXRlIGFuIGV4cG9zZSBldmVudC4gT3RoZXJ3 aXNlLCB0aGVzZSB3aWxsIGdlbmVyYXRlIGEgbm9fZXhwb3NlCiAgIC0tICBldmVudC4KCiAgIHBy b2NlZHVyZSBTZXRfTGluZV9BdHRyaWJ1dGVzIChHQyAgICAgICAgIDogaW4gR2RrX0dDOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9XaWR0aCA6IGluIEdpbnQ7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lX1N0eWxlIDogaW4gVHlwZXMuR2RrX0xp bmVfU3R5bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXBfU3R5bGUgIDog aW4gVHlwZXMuR2RrX0NhcF9TdHlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEpvaW5fU3R5bGUgOiBpbiBUeXBlcy5HZGtfSm9pbl9TdHlsZSk7CiAgIC0tICBTZXQgdGhlIGxp bmUgYXR0cmlidXRlcyBmb3IgdGhpcyBHQy4KICAgLS0gIExpbmVfV2lkdGggaXMgdGhlIHdpZHRo IG9mIHRoZSBsaW5lLiBJZiBpdHMgdmFsdWUgaXMgMCwgdGhlIGxpbmUgaXMgYXMKICAgLS0gIHRo aW4gYXMgcG9zc2libGUsIHBvc3NpYmx5IGV2ZW4gbW9yZSBzbyB0aGFuIGlmIHRoZSB3aWR0aCBp cyAxLiBJdCBpcwogICAtLSAgYWxzbyBmYXN0ZXIgdG8gZHJhdyBhIGxpbmUgd2l0aCB3aWR0aCAw IHRoYW4gYW55IG90aGVyIGxpbmUgd2lkdGguCiAgIC0tCiAgIC0tICBMaW5lX1N0eWxlIHNwZWNp ZmllcyB3aGV0aGVyIHRoZSBsaW5lIHNob3VsZCBiZSBzb2xpZCBvciBkYXNoZWQuCiAgIC0tICBX aXRoIExpbmVfT25fT2ZmX0Rhc2gsIHRoZSBjb2xvcnMgYXJlIGFsdGVybmF0aXZlbHkgdGhlIGZv cmVncm91bmQKICAgLS0gIGNvbG9yLCBhbmQgYmxhbmsuIFdpdGggTGluZV9Eb3VibGVfRGFzaCwg dGhlIGNvbG9ycyBhcmUKICAgLS0gIGFsdGVybmF0aXZlbHkgdGhlIGZvcmVncm91bmQgYW5kIGJh Y2tncm91bmQgY29sb3JzLgogICAtLQogICAtLSAgQ2FwX1N0eWxlIHNwZWNpZmllcyBob3cgdGhl IGxpbmUgc2hvdWxkIGVuZCwgZWl0aGVyIGZsYXQgb3Igcm91bmRlZC4KICAgLS0KICAgLS0gIEpv aW5fU3R5bGUgc3BlY2lmaWVzIGhvdyB0d28gY29uc2VjdXRpdmUgbGluZXMgZHJhd24gYnkgRHJh d19MaW5lcyBhcmUKICAgLS0gIGNvbm5lY3RlZC4KCiAgIHByb2NlZHVyZSBTZXRfRGFzaGVzIChH YyAgICAgICAgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICAgIERhc2hfT2Zm c2V0IDogaW4gR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgIERhc2hfTGlzdCAgIDogaW4g R3VjaGFyX0FycmF5KTsKICAgLS0gIFNwZWNpZnkgdGhlIGRhc2ggcGF0dGVybiB3aGVuIHRoZSBs aW5lJ3Mgc3R5bGUgaXMgYW55dGhpbmcgYnV0IHNvbGlkLgogICAtLSAgVGhlIHZhbHVlcyBpbiB0 aGUgYXJyYXkgYWx0ZXJuYXRpdmVseSBnaXZlIHRoZSBsZW5ndGggKGluIHBpeGVscykgb2YKICAg LS0gIHRoZSBwbGFpbiBkYXNoLCB0aGUgZW1wdHkgZGFzaCwgdGhlIHNlY29uZCBwbGFpbiBkYXNo LCAuLi4gTm9uZSBvZgogICAtLSAgdGhlc2UgdmFsdWVzIGNhbiBiZSAwLiBJZiB0aGVyZSBpcyBh biBvZGQgbnVtYmVyIG9mIGl0ZW1zIGluIERhc2hfTGlzdCwKICAgLS0gIHRoaXMgaXMgZXF1aXZh bGVudCB0byBnaXZpbmcgdGhlIGFycmF5IGNvbmNhdGVuYXRlZCB3aXRoIGl0c2VsZi4KICAgLS0g IERhc2hfT2Zmc2V0IHNwZWNpZmllcyB0aGUgcGhhc2Ugb2YgdGhlIHBhdHRlcm4gdG8gc3RhcnQg d2l0aC4KCiAgIHByb2NlZHVyZSBDb3B5IChEc3RfR0MgOiBpbiBHZGtfR0M7CiAgICAgICAgICAg ICAgICAgICBTcmNfR0MgOiBpbiBHZGtfR0MpOwogICAtLSAgQ29weSBhIFNyY19HQyB0byBEc3Rf R0MuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdka19Db2xvcl9WYWx1ZXMgLS0K ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2RrX05ldyByZXR1cm4gR2Rr X0dDX1ZhbHVlczsKICAgLS0gIEFsbG9jYXRlIGEgbmV3IFZhbHVlcyBzdHJ1Y3R1cmUgb24gdGhl IGNsaWVudC4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBhIEMgc3Ry dWN0dXJlLCBhbmQgdGh1cyBuZWVkcyB0bwogICAtLSAgYmUgZnJlZWQgd2l0aCBhIGNhbGwgdG8g RnJlZSBiZWxvdy4KCiAgIHByb2NlZHVyZSBGcmVlIChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVz KTsKICAgLS0gIEZyZWUgdGhlIEMgc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCBWYWx1ZXMuCgog ICBwcm9jZWR1cmUgU2V0X0ZvcmVncm91bmQgKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgIDogaW4gR2RrLkNvbG9yLkdka19Db2xv cik7CiAgIC0tICBTYW1lIGFzIFNldF9Gb3JlZ3JvdW5kLCBidXQgb24gdGhlIGNsaWVudCBzaWRl CgogICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQgKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgIDogaW4gR2RrLkNvbG9yLkdka19D b2xvcik7CiAgIC0tICBTYW1lIGFzIFNldF9CYWNrZ3JvdW5kLCBidXQgb24gdGhlIGNsaWVudCBz aWRlCgogICBwcm9jZWR1cmUgU2V0X0ZvbnQgKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7CiAg ICAgICAgICAgICAgICAgICAgICAgRm9udCAgIDogaW4gR2RrLkZvbnQuR2RrX0ZvbnQpOwogICAt LSAgU2FtZSBhcyBTZXRfRm9udCwgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoKICAgcHJvY2VkdXJl IFNldF9GdW5jdGlvbiAoVmFsdWVzIDogaW4gR2RrX0dDX1ZhbHVlczsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgRnVuYyAgIDogaW4gVHlwZXMuR2RrX0Z1bmN0aW9uKTsKICAgLS0gIFNhbWUg YXMgU2V0X0Z1bmN0aW9uLCBidXQgb24gdGhlIGNsaWVudCBzaWRlCgogICBwcm9jZWR1cmUgU2V0 X0ZpbGwgKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICAg RmlsbCAgIDogaW4gVHlwZXMuR2RrX0ZpbGwpOwogICAtLSAgU2FtZSBhcyBTZXRfRmlsbCwgYnV0 IG9uIHRoZSBjbGllbnQgc2lkZQoKICAgcHJvY2VkdXJlIFNldF9Uc19PcmlnaW4gKFZhbHVlcyA6 IGluIEdka19HQ19WYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYLCBZICAgOiBp biBHaW50KTsKICAgLS0gIFNhbWUgYXMgU2V0X1RzX09yaWdpbiwgYnV0IG9uIHRoZSBjbGllbnQg c2lkZQoKICAgcHJvY2VkdXJlIFNldF9DbGlwX09yaWdpbiAoVmFsdWVzIDogaW4gR2RrX0dDX1Zh bHVlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWCwgWSAgIDogaW4gR2ludCk7CiAg IC0tICBTYW1lIGFzIFNldF9DbGlwX09yaWdpbiwgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoKICAg cHJvY2VkdXJlIFNldF9TdWJ3aW5kb3cgKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBNb2RlICAgOiBpbiBUeXBlcy5HZGtfU3Vid2luZG93X01v ZGUpOwogICAtLSAgU2FtZSBhcyBTZXRfU3Vid2luZG93LCBidXQgb24gdGhlIGNsaWVudCBzaWRl CgogICBwcm9jZWR1cmUgU2V0X0V4cG9zdXJlcyAoVmFsdWVzICAgIDogaW4gR2RrX0dDX1ZhbHVl czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cG9zdXJlcyA6IGluIEJvb2xlYW4pOwog ICAtLSAgU2FtZSBhcyBTZXRfRXhwb3N1cmVzLCBidXQgb24gdGhlIGNsaWVudCBzaWRlCgogICBw cm9jZWR1cmUgU2V0X0xpbmVfQXR0cmlidXRlcyAoVmFsdWVzICAgICA6IGluIEdka19HQ19WYWx1 ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lX1dpZHRoIDogaW4gR2lu dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVfU3R5bGUgOiBpbiBUeXBl cy5HZGtfTGluZV9TdHlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhcF9T dHlsZSAgOiBpbiBUeXBlcy5HZGtfQ2FwX1N0eWxlOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSm9pbl9TdHlsZSA6IGluIFR5cGVzLkdka19Kb2luX1N0eWxlKTsKICAgLS0gIFNh bWUgYXMgU2V0X0xpbmVfQXR0cmlidXRlcywgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoKcHJpdmF0 ZQogICBOdWxsX0dDIDogY29uc3RhbnQgR2RrX0dDIDo9IG51bGw7CiAgIE51bGxfR0NfVmFsdWVz IDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlcyA6PSBudWxsOwoKICAgcHJhZ21hIEltcG9ydCAoQywg Q29weSwgImdka19nY19jb3B5Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIERlc3Ryb3ksICJnZGtf Z2NfZGVzdHJveSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBGcmVlLCAiYWRhX2dka19nY19mcmVl X3ZhbHVlcyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfVmFsdWVzLCAiZ2RrX2djX2dldF92 YWx1ZXMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUmVmLCAiZ2RrX2djX3JlZiIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBVbnJlZiwgImdka19nY191bnJlZiIpOwogICBwcmFnbWEgSW1wb3J0IChD LCBTZXRfU3RpcHBsZSwgImdka19nY19zZXRfc3RpcHBsZSIpOwogICBwcmFnbWEgSW1wb3J0IChD LCBTZXRfVGlsZSwgImdka19nY19zZXRfdGlsZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRf Q2xpcF9NYXNrLCAiZ2RrX2djX3NldF9jbGlwX21hc2siKTsKZW5kIEdkay5HQzsKAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9nZGstZm9udC5hZHMAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDMxNTY3ADA3NTUxMTA3NjMyADAxMzU2 MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNw YXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5 NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAwICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVj a2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y ICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQot LSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAt LQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNw ZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9t ICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVz IHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAg YnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNv dmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNl cHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0 aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUg UHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4K LS0gIFRoaXMgaXMgdGhlIGJhc2UgcGFja2FnZSBmb3IgaGFuZGxpbmcgZm9udHMuCi0tICBHdGtB ZGEga25vd3MgYWJvdXQgYml0bWFwIGFuZCB2ZWN0b3JpYWwgZm9udHMsIGFuZCBjYW4gZHJhdyBi b3RoLgotLSAgVGhlIGxpc3Qgb2YgZm9udHMgYXZhaWxhYmxlIHRvIHlvdSBkZXBlbmRzIG9uIHdo YXQgaXMgaW5zdGFsbGVkIG9uCi0tICB5b3VyIHN5c3RlbS4KLS0KLS0gIFRoZSBuYW1lIG9mIHRo ZSBmb250IGlzIGluZGljYXRlZCBpbiB0aGUgc3RhbmRhcmQgWDExIGZhc2hpb24sIG5hbWVseToK LS0gIChleGFtcGxlIGV4dHJhY3RlZCBmcm9tIHRoZSBYbGliIG1hbnVhbCk6Ci0tCi0tICAtYWRv YmUtY291cmllci1ib2xkLW8tbm9ybWFsLS0xMC0xMDAtNzUtNzUtbS02MC1pc284ODU5LTEKLS0g IHdoZXJlOgotLSAgICAtIGFkb2JlICAgICA6IGZvdW5kcnkKLS0gICAgLSBjb3VyaWVyICAgOiBm b250IGZhbWlseQotLSAgICAtIGJvbGQgICAgICA6IHdlaWdodCAoZS5nLiBib2xkLCBtZWRpdW0p Ci0tICAgIC0gbyAgICAgICAgIDogc2xhbnQgKGUuZy4gcm9tYW4sIGl0YWxpYywgb2JsaXF1ZSkK LS0gICAgLSBub3JtYWwgICAgOiBzZXQgd2lkdGggKGUuZy4gbm9ybWFsLCBjb25kZW5zZWQsIG5h cnJvdywgZG91YmxlKQotLSAgICAtIDEwICAgICAgICA6IHBpeGVscwotLSAgICAtIDEwMCAgICAg ICA6IHBvaW50cyAoaW4gdGVudGhzIG9mIGEgcG9pbnQpCi0tICAgIC0gNzUgICAgICAgIDogaG9y aXpvbnRhbCByZXNvbHV0aW9uIGluIGRwaQotLSAgICAtIDc1ICAgICAgICA6IHZlcnRpY2FsIHJl c29sdXRpb24gaW4gZHBpCi0tICAgIC0gbSAgICAgICAgIDogc3BhY2luZyAoZS5nLiBtb25vc3Bh Y2Ugb3IgcHJvcG9ydGlvbmFsKQotLSAgICAtIDYwICAgICAgICA6IGF2ZXJhZ2Ugd2lkdGggKGlu IHRlbnRocyBvZiBhIHBpeGVsKQotLSAgICAtIGlzbzg4NTktMSA6IGNoYXJhY3RlciBzZXQKLS0K LS0gIEFueSBvZiB0aGUgZmllbGRzIGNhbiBoYXZlIGEgJyonIGluc3RlYWQsIHNvIHRoYXQgdGhl IHN5c3RlbSB3aWxsCi0tICBhdXRvbWF0aWNhbGx5IGZpbmQgYSBmb250IHRoYXQgbWF0Y2hlcyB0 aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBhbmQgd29uJ3QKLS0gIGNhcmUgYWJvdXQgdGhhdCBzcGVj aWZpYyBmaWVsZC4KLS0KLS0gIEJ1dCB0aGUgZWFzaWVzdCB3YXkgdG8gc2VsZWN0IGEgZm9udCBp cyBieSB1c2luZyBzb21lIGV4dGVybmFsIHByb2dyYW1zLAotLSAgZm9yIGluc3RhbmNlIHhmb250 c2VsLCB4bHNmb250LCBnZm9udHNlbCwgb3IgZXZlbiB0aGUgZm9udCBzZWxlY3Rpb24KLS0gIGRp YWxvZyBleGFtcGxlIGluIHRoZSB0ZXN0Z3RrLyBkaXJlY3Rvcnkgb2YgdGhlIEd0a0FkYSBkaXN0 cmlidXRpb24uCi0tCi0tICBAcHhyZWZ7UGFja2FnZV9HdGsuRXh0cmEuUHNGb250fSBmb3IgYSBw YWNrYWdlIHRoYXQgcHJvY2Vzc2VzIHBvc3RzY3JpcHQKLS0gIGZvbnRzLCB3aXRoIHRoZWlyIG1v cmUgdXN1YWwgbmFtZXMsIGFuZCBjYW4gZWFzaWx5IGNvbnZlcnQgdGhlbSB0byBzdGFuZGFyZAot LSAgR2RrX0ZvbnQgc3RydWN0dXJlcy4KLS0KLS0gIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxv dyBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciB3aWRlLWNoYXJhY3RlciBzdHJpbmdzLgotLSAgVGhp cyBpcyBuZWVkZWQgZm9yIGxhbmd1YWdlcyB3aXRoIG1vcmUgdGhhbiAyNTYgY2hhcmFjdGVycy4K LS0KLS0gIFdpZGUgY2hhcmFjdGVyIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEyNyBhcmUgYWx3YXlz IGlkZW50aWNhbCBpbiBtZWFuaW5nIHRvCi0tICB0aGUgQVNDSUkgY2hhcmFjdGVyIGNvZGVzLgot LSAgQW4gYWx0ZXJuYXRpdmUgdG8gd2lkZSBjaGFyYWN0ZXJzIGlzIG11bHRpLWJ5dGUgY2hhcmFj dGVycywgd2hpY2ggZXh0ZW5kCi0tICBub3JtYWwgY2hhciBzdHJpbmdzIHRvIGNvcGUgd2l0aCBs YXJnZXIgY2hhcmFjdGVyIHNldHMuIEFzIHRoZSBuYW1lCi0tICBzdWdnZXN0cywgbXVsdGktYnl0 ZSBjaGFyYWN0ZXJzIHVzZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgYnl0ZXMgdG8gc3RvcmUKLS0g IGRpZmZlcmVudCBjaGFyYWN0ZXIgY29kZXMuIEZvciBleGFtcGxlIGNvZGVzIDAtMTI3IChpLmUu IHRoZSBBU0NJSSBjb2RlcykKLS0gIG9mdGVuIHVzZSBqdXN0IG9uZSBieXRlIG9mIG1lbW9yeSwg d2hpbGUgb3RoZXIgY29kZXMgbWF5IHVzZSAyLCAzIG9yIGV2ZW4KLS0gIDQgYnl0ZXMuIE11bHRp LWJ5dGUgY2hhcmFjdGVycyBoYXZlIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGV5IGNhbiBvZnRlbiBi ZQotLSAgdXNlZCBpbiBhbiBhcHBsaWNhdGlvbiB3aXRoIGxpdHRsZSBjaGFuZ2UsIHNpbmNlIHN0 cmluZ3MgYXJlIHN0aWxsCi0tICByZXByZXNlbnRlZCBhcyBhcnJheXMgb2YgY2hhciB2YWx1ZXMu IEhvd2V2ZXIgbXVsdGktYnl0ZSBzdHJpbmdzIGFyZSBtdWNoCi0tICBlYXNpZXIgdG8gbWFuaXB1 bGF0ZSBzaW5jZSB0aGUgY2hhcmFjdGVyIGFyZSBhbGwgb2YgdGhlIHNhbWUgc2l6ZS4KLS0KLS0g IE9uIFVuaXggc3lzdGVtcywgdGhlIGV4dGVybmFsIHV0aWxpdHkgJ3hmZCcgY2FuIGJlIHVzZWQg dG8gZGlzcGxheSBhbGwKLS0gIHRoZSBjaGFyYWN0ZXJzIGluIGEgZm9udC4KLS0KLS0gIDwvZGVz Y3JpcHRpb24+Ci0tICA8Y192ZXJzaW9uPjEuMi43PC9jX3ZlcnNpb24+Ci0tICA8c2NyZWVuc2hv dD5mb250PC9zY3JlZW5zaG90PgoKd2l0aCBHbGliOyB1c2UgR2xpYjsKd2l0aCBHZGsuVHlwZXM7 CgpwYWNrYWdlIEdkay5Gb250IGlzCgogICB0eXBlIEdka19Gb250IGlzIG5ldyBHZGsuQ19Qcm94 eTsKICAgLS0gIEEgZm9udCB1c2VkIHRvIGRyYXcgdGV4dC4KICAgLS0gIFRoaXMgY2FuIHJlcHJl c2VudCBhIGJpdG1hcCBmb250LCBhIHNjYWxhYmxlICh2ZWN0b3JpYWwpIGZvbnQsIG9yCiAgIC0t ICBhIGZvbnRzZXQuIEEgZm9udHNldCBpcyBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIGZvbnRz LCB0aGF0IHBlcm1pdHMKICAgLS0gIEd0a0FkYSB0byBvYnRhaW4gdGhlIGZvbnRzIG5lZWRlZCBm b3IgYSB2YXJpZXR5IG9mIGxvY2FsZXMgZnJvbSBhCiAgIC0tICBzaW5nbGUgbG9jYWxlLWluZGVw ZW5kZW50IGJhc2UgZm9udCBuYW1lLiBUaGUgc2luZ2xlIGJhc2UgZm9udCBuYW1lCiAgIC0tICBz aG91bGQgbmFtZSBhIGZhbWlseSBvZiBmb250cyB3aG9zZSBtZW1iZXJzIGFyZSBlbmNvZGVkIGlu IHRoZSB2YXJpb3VzCiAgIC0tICBjaGFyc2V0cyBuZWVkZWQgYnkgdGhlIGxvY2FsZXMgb2YgaW50 ZXJlc3QuCiAgIC0tICBUaGUgYWxnb3JpdGhtIHVzZWQgdG8gc2VsZWN0IHRoZSBmb250IGlzIGRl c2NyaWJlZCBpbiB0aGUgbWFudWFsIHBhZ2UKICAgLS0gIGZvciBYQ3JlYXRlRm9udFNldCgzWCku CgogICBOdWxsX0ZvbnQgOiBjb25zdGFudCBHZGtfRm9udDsKCiAgIHByb2NlZHVyZSBMb2FkIChG b250ICAgICAgOiAgICBvdXQgR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICBGb250X05hbWUg OiBpbiAgICAgU3RyaW5nKTsKICAgLS0gIExvYWQgYSBuZXcgZm9udCwgZ2l2ZW4gaXRzIG5hbWUu CiAgIC0tICBUaGlzIGlzIHRoZSBmaXJzdCBzdGVwIGJlZm9yZSB1c2luZyBhIGZvbnQuCiAgIC0t ICBUaGUgZm9udCBpcyBmaXJzdCBsb29rZWQgdXAgaW4gdGhlIGNhY2hlLCBhbmQgaWYgaXQgd2Fz IGFscmVhZHkKICAgLS0gIGxvYWRlZCwgaXQgaXMgbm90IHJlbG9hZGVkIGFnYWluLiBUaHVzLCBp dCBkb2VzIG5vdCBoYXJtIHRvIGNhbGwKICAgLS0gIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGlt ZXMgd2l0aCB0aGUgc2FtZSBGb250X05hbWUuCiAgIC0tICBOdWxsX0ZvbnQgaXMgcmV0dXJuZWQg aWYgdGhlIGZvbnQgY291bGQgbm90IGJlIGxvYWRlZC4KCiAgIHByb2NlZHVyZSBGb250c2V0X0xv YWQgKEZvbnQgICAgICAgICA6ICAgb3V0IEdka19Gb250OwogICAgICAgICAgICAgICAgICAgICAg ICAgICBGb250c2V0X05hbWUgOiBpbiAgICBTdHJpbmcpOwogICAtLSAgTG9hZCBhIG5ldyBmb250 IHNldC4KICAgLS0gIEZvbnRzZXRfTmFtZSBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZv bnRzIHRoYXQgd2lsbCBiZSBsb2FkZWQKICAgLS0gIGFzIHBhcnQgb2YgdGhlIGZvbnRzZXQuCgog ICBwcm9jZWR1cmUgUmVmIChGb250IDogaW4gR2RrX0ZvbnQpOwogICAtLSAgSW5jcmVtZW50IHRo ZSByZWZlcmVuY2UgY291bnRlciBmb3IgdGhlIGZvbnQuCiAgIC0tICBZb3Ugc2hvdWxkIG5vdCBt YWtlIGFueSBhc3N1bXB0aW9uIG9mIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBmb250cwogICAt LSAgcmV0dXJuZWQgYnkgTG9hZCBvciBGb250c2V0X0xvYWQsIHNpbmNlIHRoZXNlIGNhbiBiZSBl eHRyYWN0ZWQgZnJvbSBhCiAgIC0tICBjYWNoZS4KCiAgIHByb2NlZHVyZSBVbnJlZiAoRm9udCA6 IGluIEdka19Gb250KTsKICAgLS0gIERlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgZm9y IHRoZSBmb250LgogICAtLSAgV2hlbiB0aGlzIGNvdW50ZXIgcmVhY2hlcyAwLCB0aGUgZm9udCBp cyBkZWxldGVkIGZyb20gbWVtb3J5LgoKICAgZnVuY3Rpb24gSWQgKEZvbnQgOiBpbiBHZGtfRm9u dCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIFggZm9udCBpZCBmb3IgdGhlIGZvbnQu CiAgIC0tICBUaGlzIElkIHdpbGwgb25seSBiZSBuZWVkZWQgaWYgeW91IHdhbnQgdG8gY2FsbCBk aXJlY3RseSBYMTEgZnVuY3Rpb25zLAogICAtLSAgeW91IHdvbid0IG5lZWQgaXQgd2l0aCBHdGtB ZGEuCgogICBmdW5jdGlvbiBFcXVhbCAoRm9udGEsIEZvbnRiIDogaW4gR2RrX0ZvbnQpIHJldHVy biBCb29sZWFuOwogICAtLSAgQ29tcGFyZSB0d28gZm9udHMgb3IgdHdvIGZvbnRzZXRzIGZvciBl cXVhbGl0eS4KICAgLS0gIFR3byBmb250cyBhcmUgZXF1YWwgaWYgdGhleSBoYXZlIHRoZSBzYW1l IGZvbnQgSWQuCiAgIC0tICBUd28gZm9udHNldHMgYXJlIGVxdWFsIGlmIHRoZSBuYW1lIGdpdmVu IHRvIEZvbnRzZXRfTG9hZCB3YXMgdGhlIHNhbWUuCgogICBmdW5jdGlvbiBHZXRfQXNjZW50IChG b250IDogaW4gR2RrX0ZvbnQpIHJldHVybiBHaW50OwogICAtLSAgUmV0dXJuIHRoZSBtYXhpbWFs IGFzY2VudCBmb3IgdGhlIGZvbnQuCiAgIC0tICBUaGlzIGlzIHRoZSBsb2dpY2FsIGV4dGVudCBh Ym92ZSB0aGUgYmFzZWxpbmUgZm9yIHNwYWNpbmcgYmV0d2VlbiB0d28KICAgLS0gIGxpbmVzLgoK ICAgZnVuY3Rpb24gR2V0X0Rlc2NlbnQgKEZvbnQgOiBpbiBHZGtfRm9udCkgcmV0dXJuIEdpbnQ7 CiAgIC0tICBSZXR1cm4gdGhlIG1heGltYWwgZGVzY2VudCBmb3IgdGhlIGZvbnQuCiAgIC0tICBU aGlzIGlzIHRoZSBsb2dpY2FsIGV4dGVudCBiZWxvdyB0aGUgYmFzZWxpbmUgZm9yIHNwYWNpbmcg YmV0d2VlbiB0d28KICAgLS0gIGxpbmVzLgoKICAgZnVuY3Rpb24gU3RyaW5nX1dpZHRoIChGb250 IDogaW4gR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyICA6IGluIFN0cmlu ZykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAtLSAgUmV0dXJuIHRo ZSB3aWR0aCBpbiBwaXhlbHMgdGhhdCBTdHIgd2lsbCBvY2N1cHkgaWYgZHJhd24gd2l0aCBGb250 LgogICAtLSAgVGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBv cmlnaW4gb2YgdGhlIHRleHQgYW5kCiAgIC0tICB0aGUgcG9zaXRpb24gYXQgd2hpY2ggdGhlIG5l eHQgc3RyaW5nIHNob3VsZCBiZSBkcmF3bi4KCiAgIGZ1bmN0aW9uIFRleHRfV2lkdGggKEZvbnQg OiBpbiBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA6IGluIFN0cmluZykK ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgLS0gIFRoaXMgaXMgdGhlIHNh bWUgZnVuY3Rpb24gYXMgU3RyaW5nX1dpZHRoLgogICAtLSAgSW4gQywgdGhpcyBmdW5jdGlvbiBp cyBpbnRlbmRlZCB0byBtZWFzdXJlIG9ubHkgdGhlIHdpZHRoIG9mIGEgcGFydAogICAtLSAgb2Yg dGhlIHN0cmluZywgYnV0IHlvdSBjYW4gc2ltcGx5IHBhc3MgaXQgYSBzdWJzdHJpbmcgaW4gQWRh LgoKICAgZnVuY3Rpb24gVGV4dF9XaWR0aCAoRm9udCA6IGluIEdka19Gb250OwogICAgICAgICAg ICAgICAgICAgICAgICBUZXh0IDogaW4gR2RrLlR5cGVzLkdka19XU3RyaW5nKQogICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAtLSAgUmV0dXJuIHRoZSB3aWR0aCBpbiBwaXhl bHMgdGhhdCBUZXh0IHdpbGwgb2NjdXB5IG9uIHRoZSBzY3JlZW4uCiAgIC0tICBUaGlzIGZ1bmN0 aW9uIHNob3VsZCBiZSB1c2VkIHdpdGggc3RyaW5ncyB0aGF0IGNvbnRhaW4gVW5pY29kZQogICAt LSAgY2hhcmFjdGVycwoKICAgZnVuY3Rpb24gQ2hhcl9XaWR0aCAoRm9udCA6IGluIEdka19Gb250 OwogICAgICAgICAgICAgICAgICAgICAgICBDaGFyIDogaW4gQ2hhcmFjdGVyKQogICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAtLSAgUmV0dXJuIHRoZSB3aWR0aCBpbiBwaXhl bHMgb2NjdXBpZWQgYnkgYSBzaW5nbGUgY2hhcmFjdGVyIG9uIHRoZSBzY3JlZW4uCiAgIC0tICBU aGUgdmFsdWUgcmV0dXJuZWQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gQ2hhcidzIG9yaWdpbiBv biB0aGUgc2NyZWVuCiAgIC0tICBhbmQgdGhlIG9yaWdpbiBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIg aW4gdGhlIHN0cmluZy4KCiAgIGZ1bmN0aW9uIENoYXJfV2lkdGggKEZvbnQgOiBpbiBHZGtfRm9u dDsKICAgICAgICAgICAgICAgICAgICAgICAgQ2hhciA6IGluIEdkay5UeXBlcy5HZGtfV0NoYXIp CiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIHdp ZHRoIGluIHBpeGVscyBvY2N1cGllZCBieSBhIHNpbmdsZSB3aWRlLWNoYXJhY3Rlci4KCiAgIGZ1 bmN0aW9uIFN0cmluZ19NZWFzdXJlIChGb250IDogaW4gR2RrX0ZvbnQ7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdHIgIDogaW4gU3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gR2ludDsKICAgLS0gIERldGVybWluZSB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgb3Jp Z2luIHRvIHRoZSByaWdodG1vc3QgcG9ydGlvbiBvZiBTdHIuCiAgIC0tICBUaGlzIGlzIG5vdCB0 aGUgY29ycmVjdCB2YWx1ZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIG9yaWdpbiBvZiB0aGUgbmV4dAog ICAtLSAgcG9ydGlvbiB3aGVuIGRyYXdpbmcgdGV4dCBpbiBtdWx0aXBsZSBwaWVjZXMuCiAgIC0t ICBTZWUgU3RyaW5nX1dpZHRoIGluc3RlYWQuCgogICBmdW5jdGlvbiBUZXh0X01lYXN1cmUgKEZv bnQgOiBpbiBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0IDogaW4gU3Ry aW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBTYW1lIGZ1 bmN0aW9uIGEgU3RyaW5nX01lYXN1cmUuCiAgIC0tICBJbiBDLCB0aGlzIGZ1bmN0aW9uIGlzIGlu dGVuZGVkIHRvIG1lYXN1cmUgb25seSB0aGUgd2lkdGggb2YgYSBwYXJ0IG9mCiAgIC0tICB0aGUg c3RyaW5nLCBidXQgeW91IGNhbiBzaW1wbHkgcGFzcyBpdCBhIHN1YnN0cmluZyBpbiBBZGEuCiAg IC0tICBUaGlzIGlzIGFsc28gY2FsbGVkIHRoZSByaWdodCBiZWFyaW5nIG9mIHRoZSBzdHJpbmcu CgogICBmdW5jdGlvbiBDaGFyX01lYXN1cmUgKEZvbnQgOiBpbiBHZGtfRm9udDsKICAgICAgICAg ICAgICAgICAgICAgICAgICBDaGFyIDogaW4gQ2hhcmFjdGVyKQogICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIHdpZHRoIGluIHBpeGVscyBvZiBD aGFyLgogICAtLSAgQXMgb3Bwb3NlZCB0byBDaGFyX1dpZHRoLCB0aGUgdmFsdWUgcmV0dXJuZWQg aXMgbm90IHRoZSBkaXN0YW5jZSBhdAogICAtLSAgd2hpY2ggdGhlIG5leHQgY2hhcmFjdGVyIHNo b3VsZCBiZSBkcmF3bi4KICAgLS0gIFRoaXMgaXMgYWxzbyBjYWxsZWQgdGhlIHJpZ2h0IGJlYXJp bmcgb2YgdGhlIGNoYXJhY3Rlci4KCiAgIHByb2NlZHVyZSBTdHJpbmdfRXh0ZW50cyAoRm9udCAg ICAgOiBpbiAgICAgR2RrLkZvbnQuR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RyICAgICAgOiBpbiAgICAgU3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IExiZWFyaW5nIDogICAgb3V0IEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmJl YXJpbmcgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAg ICA6ICAgIG91dCBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzY2VudCAgIDog ICAgb3V0IEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY2VudCAgOiAgICBv dXQgR2ludCk7CiAgIC0tICBSZXR1cm4gdGhlIG1ldHJpY3MgZm9yIGEgZ2l2ZW4gdGV4dC4KICAg LS0gIFNlZSB0aGUgcGljdHVyZSBmb3IgbW9yZSBleHBsYW5hdGlvbnMgb24gYWxsIHRoZSBmaWVs ZHMuCiAgIC0tICBMYmVhcmluZyA6IE9yaWdpbiB0byBsZWZ0IGVkZ2Ugb2YgY2hhcmFjdGVyLgog ICAtLSAgUmJlYXJpbmcgOiBPcmlnaW4gdG8gcmlnaHQgZWRnZSBvZiBjaGFyYWN0ZXIuCiAgIC0t ICBXaWR0aCAgICA6IEFkdmFuY2UgdG8gbmV4dCBjaGFyYWN0ZXIncyBvcmlnaW4uCiAgIC0tICBB c2NlbnQgICA6IEJhc2VsaW5lIHRvIHRvcCBlZGdlIG9mIGNoYXJhY3Rlci4KICAgLS0gIERlc2Nl bnQgIDogQmFzZWxpbmUgdG8gYm90dG9tIGVkZ2Ugb2YgY2hhcmFjdGVyLgoKICAgcHJvY2VkdXJl IFRleHRfRXh0ZW50cyAoRm9udCAgICAgICAgOiBpbiAgICAgR2RrX0ZvbnQ7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRleHQgICAgICAgIDogaW4gICAgIFN0cmluZzsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGJlYXJpbmcgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmJlYXJpbmcgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgV2lkdGggICAgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgQXNjZW50ICAgICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGVzY2VudCAgICAgOiAgICBvdXQgR2ludCk7CiAgIC0tICBSZXR1cm4gYWxsIHRoZSBtZXRy aWNzIGZvciBhIGdpdmVuIHRleHQuCiAgIC0tICBTZWUgdGhlIHBpY3R1cmUgZm9yIG1vcmUgZXhw bGFuYXRpb25zIG9uIGFsbCB0aGUgZmllbGRzLgogICAtLSAgaW4gQywgdGhpcyBmdW5jdGlvbiB3 b3VsZCBiZSB1c2VkIGZvciBwYXJ0IG9mIGEgc3RyaW5nLCB3aGljaCB5b3UgY2FuCiAgIC0tICBz aW11bGF0ZSBpbiBBZGEgd2l0aCBhIHN1YnN0cmluZy4KCiAgIHByb2NlZHVyZSBUZXh0X0V4dGVu dHMgKEZvbnQgICAgICAgIDogaW4gICAgIEdka19Gb250OwogICAgICAgICAgICAgICAgICAgICAg ICAgICBUZXh0ICAgICAgICA6IGluICAgICBHZGsuVHlwZXMuR2RrX1dTdHJpbmc7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgIExiZWFyaW5nICAgIDogICAgb3V0IEdpbnQ7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJiZWFyaW5nICAgIDogICAgb3V0IEdpbnQ7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgIFdpZHRoICAgICAgIDogICAgb3V0IEdpbnQ7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFzY2VudCAgICAgIDogICAgb3V0IEdpbnQ7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgIERlc2NlbnQgICAgIDogICAgb3V0IEdpbnQpOwogICAtLSAgUmV0dXJuIGFsbCB0aGUg bWV0cmljcyBmb3IgYSBnaXZlbiB3aWRlLWNoYXJhY3RlciBzdHJpbmcuCiAgIC0tICBTZWUgdGhl IHBpY3R1cmUgZm9yIG1vcmUgZXhwbGFuYXRpb25zIG9uIHRoZSByZXR1cm5lZCB2YWx1ZXMuCgog ICBmdW5jdGlvbiBTdHJpbmdfSGVpZ2h0IChGb250IDogaW4gR2RrX0ZvbnQ7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0ciAgOiBpbiBTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIGhlaWdodCBpbiBwaXhlbHMgb2YgdGhl IHN0cmluZy4KICAgLS0gIFRoaXMgaXMgdGhlIHRvdGFsIGhlaWdodCwgYW5kIHlvdSBjYW4gbm90 IGVhc2lseSB0ZWxsIGhvdyB0aGlzIGhlaWdodAogICAtLSAgaXMgc3BsaXQgYXJvdW5kIHRoZSBi YXNlbGluZS4KCiAgIGZ1bmN0aW9uIFRleHRfSGVpZ2h0IChGb250IDogaW4gR2RrX0ZvbnQ7CiAg ICAgICAgICAgICAgICAgICAgICAgICBTdHIgIDogaW4gU3RyaW5nKQogICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gR2ludDsKICAgLS0gIFNhbWUgYXMgU3RyaW5nX0hlaWdodC4KICAgLS0g IEluIEMsIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWVhc3VyZSBvbmx5IHRoZSB3aWR0 aCBvZiBhIHBhcnQgb2YKICAgLS0gIHRoZSBzdHJpbmcsIGJ1dCB5b3UgY2FuIHNpbXBseSBwYXNz IGl0IGEgc3Vic3RyaW5nIGluIEFkYS4KICAgLS0gIFRoaXMgaXMgYWxzbyBjYWxsZWQgdGhlIHJp Z2h0IGJlYXJpbmcgb2YgdGhlIHN0cmluZy4KCiAgIGZ1bmN0aW9uIENoYXJfSGVpZ2h0IChGb250 IDogaW4gR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyIDogaW4gQ2hhcmFj dGVyKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0 aGUgdG90YWwgaGVpZ2h0IGluIHBpeGVscyBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIuCgoKcHJpdmF0 ZQogICBOdWxsX0ZvbnQgOiBjb25zdGFudCBHZGtfRm9udCA6PSBudWxsOwogICBwcmFnbWEgSW1w b3J0IChDLCBDaGFyX0hlaWdodCwgImdka19jaGFyX2hlaWdodCIpOwogICBwcmFnbWEgSW1wb3J0 IChDLCBJZCwgImdka19mb250X2lkIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZiwgImdka19m b250X3JlZiIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBVbnJlZiwgImdka19mb250X3VucmVmIik7 CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9Bc2NlbnQsICJhZGFfZ2RrX2ZvbnRfZ2V0X2FzY2Vu dCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfRGVzY2VudCwgImFkYV9nZGtfZm9udF9nZXRf ZGVzY2VudCIpOwplbmQgR2RrLkZvbnQ7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9n ZGstcmVnaW9uLmFkcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAw ADAwMDAwMDA3NTM0ADA3NTUxMTA3NjMyADAxNDA3MwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29s a2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg IENvcHlyaWdodCAoQykgMTk5OC0xOTk5ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAg ICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQot LSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu b3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBm aWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBs aW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVj dXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0 aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZh bGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUg IG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoKd2l0aCBHbGliOyB1c2UgR2xpYjsKd2l0aCBHZGsuUmVjdGFuZ2xlOwp3aXRo IEdkay5UeXBlczsKCnBhY2thZ2UgR2RrLlJlZ2lvbiBpcwoKICAgdHlwZSBHZGtfUmVnaW9uIGlz IG5ldyBHZGsuQ19Qcm94eTsKICAgTnVsbF9SZWdpb24gOiBjb25zdGFudCBHZGtfUmVnaW9uOwoK ICAgcHJvY2VkdXJlIEdka19OZXcgKFJlZ2lvbiA6IG91dCBHZGtfUmVnaW9uKTsKCiAgIHByb2Nl ZHVyZSBEZXN0cm95IChSZWdpb24gOiBpbiBvdXQgR2RrX1JlZ2lvbik7CgogICBwcm9jZWR1cmUg R2V0X0NsaXBib3gKICAgICAoUmVnaW9uICAgIDogaW4gICAgIEdka19SZWdpb247CiAgICAgIFJl Y3RhbmdsZSA6ICAgIG91dCBHZGsuUmVjdGFuZ2xlLkdka19SZWN0YW5nbGUpOwoKICAgZnVuY3Rp b24gRW1wdHkgKFJlZ2lvbiA6IGluIEdka19SZWdpb24pIHJldHVybiBCb29sZWFuOwoKICAgZnVu Y3Rpb24gIj0iIChMZWZ0LCBSaWdodCA6IGluIEdka19SZWdpb24pIHJldHVybiBCb29sZWFuOwoK ICAgZnVuY3Rpb24gUG9pbnRfSW4KICAgICAoUmVnaW9uIDogaW4gR2RrX1JlZ2lvbjsKICAgICAg WCwgWSAgIDogaW4gSW50ZWdlcikgcmV0dXJuIEJvb2xlYW47CgogICBmdW5jdGlvbiBSZWN0X0lu CiAgICAgKFJlZ2lvbiA6IGluIEdka19SZWdpb247CiAgICAgIFJlY3QgICA6IGluIFJlY3Rhbmds ZS5HZGtfUmVjdGFuZ2xlKSByZXR1cm4gVHlwZXMuR2RrX092ZXJsYXBfVHlwZTsKCiAgIHByb2Nl ZHVyZSBQb2x5Z29uCiAgICAgKFJlZ2lvbiA6ICAgIG91dCBHZGtfUmVnaW9uOwogICAgICBQb2lu dHMgOiBpbiAgICAgR2RrLlR5cGVzLkdka19Qb2ludHNfQXJyYXk7CiAgICAgIEZpbGxfUnVsZSA6 IGluICAgICBUeXBlcy5HZGtfRmlsbF9SdWxlKTsKCiAgIHByb2NlZHVyZSBPZmZzZXQKICAgICAo UmVnaW9uIDogaW4gR2RrX1JlZ2lvbjsKICAgICAgRHggICAgIDogaW4gR2ludDsKICAgICAgRHkg ICAgIDogaW4gR2ludCk7CgogICBwcm9jZWR1cmUgU2hyaW5rCiAgICAgKFJlZ2lvbiA6IGluIEdk a19SZWdpb247CiAgICAgIER4ICAgICA6IGluIEdpbnQ7CiAgICAgIER5ICAgICA6IGluIEdpbnQp OwoKICAgcHJvY2VkdXJlIFVuaW9uX1dpdGhfUmVjdAogICAgIChSZXN1bHQgOiAgICBvdXQgR2Rr X1JlZ2lvbjsKICAgICAgUmVnaW9uIDogaW4gICAgIEdka19SZWdpb247CiAgICAgIFJlY3QgICA6 IGluICAgICBSZWN0YW5nbGUuR2RrX1JlY3RhbmdsZSk7CgogICBwcm9jZWR1cmUgSW50ZXJzZWN0 CiAgICAgKFJlc3VsdCAgOiAgICBvdXQgR2RrX1JlZ2lvbjsKICAgICAgU291cmNlMSA6IGluICAg ICBHZGtfUmVnaW9uOwogICAgICBTb3VyY2UyIDogaW4gICAgIEdka19SZWdpb24pOwoKICAgcHJv Y2VkdXJlIFVuaW9uCiAgICAgKFJlc3VsdCAgOiAgICAgb3V0IEdka19SZWdpb247CiAgICAgIFNv dXJjZTEgOiBpbiAgICAgIEdka19SZWdpb247CiAgICAgIFNvdXJjZTIgOiBpbiAgICAgIEdka19S ZWdpb24pOwoKICAgcHJvY2VkdXJlIFN1YnN0cmFjdAogICAgIChSZXN1bHQgIDogICAgIG91dCBH ZGtfUmVnaW9uOwogICAgICBTb3VyY2UxIDogaW4gICAgICBHZGtfUmVnaW9uOwogICAgICBTb3Vy Y2UyIDogaW4gICAgICBHZGtfUmVnaW9uKTsKCiAgIHByb2NlZHVyZSBHZGtfWG9yCiAgICAgKFJl c3VsdCAgOiAgICAgb3V0IEdka19SZWdpb247CiAgICAgIFNvdXJjZTEgOiBpbiAgICAgIEdka19S ZWdpb247CiAgICAgIFNvdXJjZTIgOiBpbiAgICAgIEdka19SZWdpb24pOwoKcHJpdmF0ZQogICBO dWxsX1JlZ2lvbiA6IGNvbnN0YW50IEdka19SZWdpb24gOj0gbnVsbDsKICAgcHJhZ21hIEltcG9y dCAoQywgT2Zmc2V0LCAiZ2RrX3JlZ2lvbl9vZmZzZXQiKTsKICAgcHJhZ21hIEltcG9ydCAoQywg U2hyaW5rLCAiZ2RrX3JlZ2lvbl9zaHJpbmsiKTsKZW5kIEdkay5SZWdpb247CgAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ25hdGJ1Zy9nZGstcGl4bWFw LmFkcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDIx MDcyADA3NTUxMTA3NjMyADAxNDA3NwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAHNwYXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAg ICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAg ICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdo dCAoQykgMTk5OC0yMDAwICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51 ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAt LQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAg ICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAg ICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl IHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTEx LTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0 YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMg dW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0 aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQot LSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFu eSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJl IGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQoKLS0gIDxkZXNjcmlwdGlvbj4KLS0KLS0gIFBpeG1hcHMgYXJlIG9mZi1zY3JlZW4gZHJhd2Fi bGVzLiBUaGV5IGNhbiBiZSBkcmF3biB1cG9uIHdpdGggdGhlIHN0YW5kYXJkCi0tICBkcmF3aW5n IHByaW1pdGl2ZXMsIHRoZW4gY29waWVkIHRvIGFub3RoZXIgZHJhd2FibGUgKHN1Y2ggYXMgYSBH ZGtfV2luZG93KQotLSAgd2l0aCBHZGsuUGl4bWFwLkRyYXcuIFRoZSBkZXB0aCBvZiBhIHBpeG1h cCBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgcGVyCi0tICBwaXhlbHMuIEJpdG1hcHMgYXJlIHNpbXBs eSBwaXhtYXBzIHdpdGggYSBkZXB0aCBvZiAxLiAoVGhhdCBpcywgdGhleSBhcmUKLS0gIG1vbm9j aHJvbWUgYml0bWFwcyAtIGVhY2ggcGl4ZWwgY2FuIGJlIGVpdGhlciBvbiBvciBvZmYpLgotLSAg QHB4cmVme1BhY2thZ2VfR2RrLkJpdG1hcH0gZm9yIG1vcmUgZGV0YWlscyBvbiBiaXRtYXAgaGFu ZGxpbmcuCi0tCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNzwvY192ZXJz aW9uPgoKd2l0aCBHbGliOyB1c2UgR2xpYjsKd2l0aCBHZGsuQml0bWFwOwp3aXRoIEdkay5Db2xv cjsKd2l0aCBHZGsuV2luZG93Owp3aXRoIEd0a2FkYS5UeXBlczsKCnBhY2thZ2UgR2RrLlBpeG1h cCBpcwoKICAgc3VidHlwZSBHZGtfUGl4bWFwIGlzIEdkay5HZGtfUGl4bWFwOwogICAtLSAgQSBz ZXJ2ZXItc2lkZSBpbWFnZS4KICAgLS0gIFlvdSBjYW4gY3JlYXRlIGFuIGVtcHR5IHBpeG1hcCwg b3IgbG9hZCBpZiBmcm9tIGV4dGVybmFsIGZpbGVzIGluCiAgIC0tICBiaXRtYXAgYW5kIHBpeG1h cCBmb3JtYXQuIFNlZSBHZGsuUGl4YnVmIGlmIHlvdSBuZWVkIHRvIGxvYWQKICAgLS0gIGltYWdl cyBpbiBvdGhlciBmb3JtYXRzLgoKICAgTnVsbF9QaXhtYXAgOiBjb25zdGFudCBHZGtfUGl4bWFw OwoKICAgcHJvY2VkdXJlIEdka19OZXcgKFBpeG1hcCA6ICAgIG91dCBHZGtfUGl4bWFwOwogICAg ICAgICAgICAgICAgICAgICAgV2luZG93IDogaW4gICAgIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsK ICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICA6IGluICAgICBHaW50OwogICAgICAgICAgICAg ICAgICAgICAgSGVpZ2h0IDogaW4gICAgIEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICBEZXB0 aCAgOiBpbiAgICAgR2ludCA6PSAtMSk7CiAgIC0tICBDcmVhdGUgYSBuZXcgcGl4bWFwIHdpdGgg YSBnaXZlbiBzaXplLgogICAtLSAgV2luZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1bHQg dmFsdWVzIGZvciB0aGUgbmV3IHBpeG1hcC4KICAgLS0gIENhbiBiZSBldmVudHVhbGx5IG51bGwu CiAgIC0tICBXaWR0aCBpcyB0aGUgd2lkdGggb2YgdGhlIG5ldyBwaXhtYXAgaW4gcGl4ZWxzLgog ICAtLSAgSGVpZ2h0IGlzIHRoZSBoZWlnaHQgb2YgdGhlIG5ldyBwaXhtYXAgaW4gcGl4ZWxzLgog ICAtLSAgRGVwdGggaXMgdGhlIGRlcHRoIChudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwpIG9mIHRo ZSBuZXcgcGl4bWFwLgogICAtLSAgSWYgLTEsIGFuZCB3aW5kb3cgaXMgbm90IG51bGwsIHRoZSBk ZXB0aCBvZiB0aGUgbmV3IHBpeG1hcCB3aWxsIGJlCiAgIC0tICBlcXVhbCB0byB0aGF0IG9mIHdp bmRvdy4KICAgLS0gIEF1dG9tYXRpY2FsbHkgcmVmZXJlbmNlIHRoZSBwaXhtYXAgb25jZS4KCiAg IHByb2NlZHVyZSBSZWYgKFBpeG1hcCA6IGluIEdka19QaXhtYXApOwogICAtLSAgQWRkIGEgcmVm ZXJlbmNlIHRvIGEgcGl4bWFwLgoKICAgcHJvY2VkdXJlIFVucmVmIChQaXhtYXAgOiBpbiBHZGtf UGl4bWFwKTsKICAgLS0gIFRoaXMgaXMgdGhlIHVzdWFsIHdheSB0byBkZXN0cm95IGEgcGl4bWFw LiBUaGUgbWVtb3J5IGlzIGZyZWVkIHdoZW4KICAgLS0gIHRoZXJlIGlzIG5vIG1vcmUgcmVmZXJl bmNlCgogICBwcm9jZWR1cmUgQ3JlYXRlX0Zyb21fRGF0YSAoUGl4bWFwIDogICAgb3V0IEdka19Q aXhtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3cgOiBpbiAgICAgR2Rr LldpbmRvdy5HZGtfV2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAg IDogaW4gICAgIFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICA6 IGluICAgICBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVpZ2h0IDogaW4g ICAgIEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXB0aCAgOiBpbiAgICAg R2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZnICAgICA6IGluICAgICBDb2xv ci5HZGtfQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZyAgICAgOiBpbiAg ICAgQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0gIENyZWF0ZSBhIHBpeG1hcCBmcm9tIGRhdGEgaW4g WEJNIGZvcm1hdC4KICAgLS0gIFdpbmRvdyBpcyB1c2VkIHRvIGRldGVybWluZSBkZWZhdWx0IHZh bHVlcyBmb3IgdGhlIG5ldyBiaXRtYXAsIGNhbiBiZQogICAtLSAgbnVsbCBpbiB3aGljaCBjYXNl IHRoZSByb290IHdpbmRvdyBpcyB1c2VkLgogICAtLSAgRGF0YSBpcyB0aGUgWEJNIGRhdGEuCiAg IC0tICBXaWR0aCBpcyB0aGUgd2lkdGggb2YgdGhlIG5ldyBiaXRtYXAgaW4gcGl4ZWxzLgogICAt LSAgSGVpZ2h0IGlzIHRoZSBoZWlnaHQgb2YgdGhlIG5ldyBiaXRtYXAgaW4gcGl4ZWxzLgogICAt LSAgRGVwdGggaXMgdGhlIGRlcHRoIChudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwpIG9mIHRoZSBu ZXcgcGl4bWFwLgogICAtLSAgRmcgaXMgdGhlIGZvcmVncm91bmQgY29sb3IuCiAgIC0tICBCZyBp cyB0aGUgYmFja2dyb3VuZCBjb2xvci4KCiAgIHByb2NlZHVyZSBDcmVhdGVfRnJvbV9YcG0gKFBp eG1hcCAgICAgIDogICAgb3V0IEdka19QaXhtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFdpbmRvdyAgICAgIDogaW4gICAgIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTWFzayAgICAgICAgOiBpbiBvdXQgR2RrLkJpdG1hcC5HZGtf Qml0bWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BhcmVudCA6IGluICAg ICBHZGsuQ29sb3IuR2RrX0NvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxl bmFtZSAgICA6IGluICAgICBTdHJpbmcpOwogICAtLSAgQ3JlYXRlIGEgcGl4bWFwIGZyb20gYSBY UE0gZmlsZS4KICAgLS0gIFdpbmRvdyBpcyB1c2VkIHRvIGRldGVybWluZSBkZWZhdWx0IHZhbHVl cyBmb3IgdGhlIG5ldyBwaXhtYXAuCiAgIC0tICBNYXNrIGlzIGEgcG9pbnRlciB0byBhIHBsYWNl IHRvIHN0b3JlIGEgYml0bWFwIHJlcHJlc2VudGluZyB0aGUKICAgLS0gIHRyYW5zcGFyZW5jeSBt YXNrIG9mIHRoZSBYUE0gZmlsZS4gQ2FuIGJlIG51bGwsIGluIHdoaWNoIGNhc2UKICAgLS0gIHRy YW5zcGFyZW5jeSB3aWxsIGJlIGlnbm9yZWQuCiAgIC0tICBUcmFuc3BhcmVudCBpcyB0aGUgY29s b3IgdG8gYmUgdXNlZCBmb3IgdGhlIHBpeGVscyB0aGF0IGFyZSB0cmFuc3BhcmVudAogICAtLSAg aW4gdGhlIGlucHV0IGZpbGUuIENhbiBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgZGVmYXVsdCBj b2xvciB3aWxsIGJlCiAgIC0tICB1c2VkLgogICAtLSAgRmlsZW5hbWUgaXMgdGhlIGZpbGVuYW1l IG9mIGEgZmlsZSBjb250YWluaW5nIFhQTSBkYXRhLgoKICAgcHJvY2VkdXJlIENyZWF0ZV9Gcm9t X1hwbSAoUGl4bWFwICAgICAgOiAgICBvdXQgR2RrX1BpeG1hcDsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgV2luZG93ICAgICAgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93Owog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvcm1hcCAgICA6IGluICAgICBHZGsuQ29s b3IuR2RrX0NvbG9ybWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNrICAgICAg ICA6IGluIG91dCBHZGsuQml0bWFwLkdka19CaXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRyYW5zcGFyZW50IDogaW4gICAgIEdkay5Db2xvci5HZGtfQ29sb3I7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgIDogaW4gICAgIFN0cmluZyk7CiAgIC0t ICBDcmVhdGUgYSBwaXhtYXAgZnJvbSBhIFhQTSBmaWxlIHVzaW5nIGEgcGFydGljdWxhciBjb2xv cm1hcC4KICAgLS0gIFdpbmRvdyBpcyB1c2VkIHRvIGRldGVybWluZSBkZWZhdWx0IHZhbHVlcyBm b3IgdGhlIG5ldyBwaXhtYXAuIENhbiBiZQogICAtLSAgbnVsbCBpZiBjb2xvcm1hcCBpcyBnaXZl bi4KICAgLS0gIENvbG9ybWFwIGlzIHRoZSBHZGtfQ29sb3JtYXAgdGhhdCB0aGUgbmV3IHBpeG1h cCB3aWxsIHVzZS4gSWYgb21pdHRlZCwKICAgLS0gIHRoZSBjb2xvcm1hcCBmb3Igd2luZG93IHdp bGwgYmUgdXNlZC4KICAgLS0gIE1hc2sgaXMgYSBwb2ludGVyIHRvIGEgcGxhY2UgdG8gc3RvcmUg YSBiaXRtYXAgcmVwcmVzZW50aW5nIHRoZQogICAtLSAgdHJhbnNwYXJlbmN5IG1hc2sgb2YgdGhl IFhQTSBmaWxlLiBDYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZQogICAtLSAgdHJhbnNwYXJlbmN5 IHdpbGwgYmUgaWdub3JlZC4KICAgLS0gIFRyYW5zcGFyZW50IGlzIHRoZSBjb2xvciB0byBiZSB1 c2VkIGZvciB0aGUgcGl4ZWxzIHRoYXQgYXJlIHRyYW5zcGFyZW50CiAgIC0tICBpbiB0aGUgaW5w dXQgZmlsZS4gQ2FuIGJlIG51bGwsIGluIHdoaWNoIGNhc2UgYSBkZWZhdWx0IGNvbG9yIHdpbGwg YmUKICAgLS0gIHVzZWQuCiAgIC0tICBGaWxlbmFtZSBpcyB0aGUgZmlsZW5hbWUgb2YgYSBmaWxl IGNvbnRhaW5pbmcgWFBNIGRhdGEuCgogICBwcm9jZWR1cmUgQ3JlYXRlX0Zyb21fWHBtX0QKICAg ICAoUGl4bWFwICAgICAgOiAgICBvdXQgR2RrX1BpeG1hcDsKICAgICAgV2luZG93ICAgICAgOiBp biAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBNYXNrICAgICAgICA6IGluIG91dCBH ZGsuQml0bWFwLkdka19CaXRtYXA7CiAgICAgIFRyYW5zcGFyZW50IDogaW4gICAgIEdkay5Db2xv ci5HZGtfQ29sb3I7CiAgICAgIERhdGEgICAgICAgIDogaW4gICAgIEd0a2FkYS5UeXBlcy5DaGFy c19QdHJfQXJyYXkpOwogICAtLSAgQ3JlYXRlIGEgcGl4bWFwIGZyb20gZGF0YSBpbiBYUE0gZm9y bWF0LgogICAtLSAgV2luZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1bHQgdmFsdWVzIGZv ciB0aGUgbmV3IHBpeG1hcC4KICAgLS0gIE1hc2sgaXMgYSBwb2ludGVyIHRvIGEgcGxhY2UgdG8g c3RvcmUgYSBiaXRtYXAgcmVwcmVzZW50aW5nIHRoZQogICAtLSAgdHJhbnNwYXJlbmN5IG1hc2sg b2YgdGhlIFhQTSBmaWxlLiBDYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZQogICAtLSAgdHJhbnNw YXJlbmN5IHdpbGwgYmUgaWdub3JlZC4KICAgLS0gIFRyYW5zcGFyZW50IHdpbGwgYmUgdXNlZCBm b3IgdGhlIHBpeGVscyB0aGF0IGFyZSB0cmFuc3BhcmVudCBpbiB0aGUKICAgLS0gIGlucHV0IGZp bGUuIENhbiBiZSBudWxsIGluIHdoaWNoIGNhc2UgYSBkZWZhdWx0IGNvbG9yIHdpbGwgYmUgdXNl ZC4KICAgLS0gIERhdGEgaXMgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFhQ TSBkYXRhLgoKICAgcHJvY2VkdXJlIENyZWF0ZV9Gcm9tX1hwbV9ECiAgICAgKFBpeG1hcCAgICAg IDogICAgb3V0IEdka19QaXhtYXA7CiAgICAgIFdpbmRvdyAgICAgIDogaW4gICAgIEdkay5XaW5k b3cuR2RrX1dpbmRvdzsKICAgICAgQ29sb3JtYXAgICAgOiBpbiAgICAgR2RrLkNvbG9yLkdka19D b2xvcm1hcDsKICAgICAgTWFzayAgICAgICAgOiBpbiBvdXQgR2RrLkJpdG1hcC5HZGtfQml0bWFw OwogICAgICBUcmFuc3BhcmVudCA6IGluICAgICBHZGsuQ29sb3IuR2RrX0NvbG9yOwogICAgICBE YXRhICAgICAgICA6IGluICAgICBHdGthZGEuVHlwZXMuQ2hhcnNfUHRyX0FycmF5KTsKICAgLS0g IENyZWF0ZSBhIHBpeG1hcCBmcm9tIGRhdGEgaW4gWFBNIGZvcm1hdCB1c2luZyBhIHBhcnRpY3Vs YXIgY29sb3JtYXAuCiAgIC0tICBXaW5kb3cgaXMgdXNlZCB0byBkZXRlcm1pbmUgZGVmYXVsdCB2 YWx1ZXMgZm9yIHRoZSBuZXcgcGl4bWFwLgogICAtLSAgQ29sb3JtYXAgaXMgdGhlIEdka19Db2xv cm1hcCB0aGF0IHRoZSBuZXcgcGl4bWFwIHdpbGwgYmUgdXNlLiBJZgogICAtLSAgb21pdHRlZCwg dGhlIGNvbG9ybWFwIGZvciB3aW5kb3cgd2lsbCBiZSB1c2VkLgogICAtLSAgTWFzayBpcyBhIHBv aW50ZXIgdG8gYSBwbGFjZSB0byBzdG9yZSBhIGJpdG1hcCByZXByZXNlbnRpbmcgdGhlCiAgIC0t ICB0cmFuc3BhcmVuY3kgbWFzayBvZiB0aGUgWFBNIGZpbGUuIENhbiBiZSBudWxsLCBpbiB3aGlj aCBjYXNlCiAgIC0tICB0cmFuc3BhcmVuY3kgd2lsbCBiZSBpZ25vcmVkLgogICAtLSAgVHJhbnNw YXJlbnQgd2lsbCBiZSB1c2VkIGZvciB0aGUgcGl4ZWxzIHRoYXQgYXJlIHRyYW5zcGFyZW50IGlu IHRoZQogICAtLSAgaW5wdXQgZmlsZS4gQ2FuIGJlIG51bGwgaW4gd2hpY2ggY2FzZSBhIGRlZmF1 bHQgY29sb3Igd2lsbCBiZSB1c2VkLgogICAtLSAgRGF0YSBpcyBhIHBvaW50ZXIgdG8gYSBzdHJp bmcgY29udGFpbmluZyB0aGUgWFBNIGRhdGEuCgpwcml2YXRlCiAgIE51bGxfUGl4bWFwIDogY29u c3RhbnQgR2RrX1BpeG1hcCA6PSBudWxsOwogICBwcmFnbWEgSW1wb3J0IChDLCBSZWYsICJnZGtf cGl4bWFwX3JlZiIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBVbnJlZiwgImdka19waXhtYXBfdW5y ZWYiKTsKZW5kIEdkay5QaXhtYXA7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABnbmF0YnVnL2dsaWItZ3NsaXN0LmFkcwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDEwMDY0NAAwMDAxNzUxADAwMDAwMDAAMDAwMDAwMTE3NTAAMDc1NTExMDc2MzIAMDE0 MjYwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAA c3BhegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFk YTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9i ZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRo aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0t Ci0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2Ug YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAg IC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEg c3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZy b20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmls ZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90 ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUg Y292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4 Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5 IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdO VSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9u PgotLQotLSAgVGhpcyBwYWNrYWdlcyBwcm92aWRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBn ZW5lcmljIHNpbmdsZS1saW5rZWQKLS0gIGxpc3QuCi0tICBPbmUgaW5zdGFudGlhdGlvbiBpcyBm b3VuZCBpbiBHdGsuV2lkZ2V0LldpZGdldF9TbGlzdCBmb3IgYSBsaXN0IG9mCi0tICB3aWRnZXRz LgotLQotLSAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIEdsaWIuR2xpc3QgZm9yIG1vcmUgaW5m b3JtYXRpb24sIGl0IHByb3ZpZGVzCi0tICB0aGUgc2FtZSBBUEkgYXMgdGhpcyBwYWNrYWdlLgot LSAgU2luZ2xlIGxpbmtlZCBsaXN0cyBhcmUgdHJhdmVyc2VkIHRoZSBzYW1lIHdheSBhcyBkb3Vi bGUtbGlua2VkIGxpc3RzLAotLSAgZXZlbiB0aG91Z2ggbW9zdCBzdWJwcm9ncmFtcyBhcmUgbGVz cyBlZmZpY2llbnQgdGhhbiB0aGVpcgotLSAgZG91YmxlLWxpbmtlZCBjb3VudGVycGFydHMuCi0t Ci0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0 aCBTeXN0ZW07CgpwYWNrYWdlIEdsaWIuR1NsaXN0IGlzCgogICAtLSAgPGRvY19pZ25vcmU+Cgog ICBnZW5lcmljCiAgICAgIHR5cGUgR3BvaW50ZXIgKDw+KSBpcyBwcml2YXRlOwogICAgICB3aXRo IGZ1bmN0aW9uIENvbnZlcnQgKFAgOiBHcG9pbnRlcikgcmV0dXJuIFN5c3RlbS5BZGRyZXNzIGlz IDw+OwogICAgICB3aXRoIGZ1bmN0aW9uIENvbnZlcnQgKFMgOiBTeXN0ZW0uQWRkcmVzcykgcmV0 dXJuIEdwb2ludGVyIGlzIDw+OwogICBwYWNrYWdlIEdlbmVyaWNfU0xpc3QgaXMKCiAgICAgIHR5 cGUgR1NsaXN0IGlzIHByaXZhdGU7CiAgICAgIE51bGxfTGlzdCA6IGNvbnN0YW50IEdTbGlzdDsK CiAgICAgIHByb2NlZHVyZSBBbGxvYyAoTGlzdCA6IG91dCBHU2xpc3QpOwogICAgICBwcm9jZWR1 cmUgQXBwZW5kIChMaXN0IDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAg RGF0YSA6IGluIEdwb2ludGVyKTsKICAgICAgZnVuY3Rpb24gQ29uY2F0IChMaXN0MSA6IGluIEdT bGlzdDsKICAgICAgICAgICAgICAgICAgICAgICBMaXN0MiA6IGluIEdTbGlzdCkKICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gR1NsaXN0OwogICAgICBwcm9jZWR1cmUgSW5zZXJ0IChMaXN0 IDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIEdwb2lu dGVyOwogICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiA6IGluIEdpbnQpOwogICAgICBm dW5jdGlvbiBGaW5kIChMaXN0IDogaW4gR1NsaXN0OwogICAgICAgICAgICAgICAgICAgICBEYXRh IDogaW4gR3BvaW50ZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHU2xpc3Q7CiAgICAg IHByb2NlZHVyZSBGcmVlIChMaXN0IDogaW4gb3V0IEdTbGlzdCk7CiAgICAgIGZ1bmN0aW9uIEdl dF9EYXRhIChMaXN0IDogaW4gR1NsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IEdwb2ludGVyOwogICAgICBmdW5jdGlvbiBJbmRleCAoTGlzdCA6IGluIEdTbGlzdDsKICAgICAg ICAgICAgICAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBHaW50OwogICAgICBmdW5jdGlvbiBMYXN0IChMaXN0IDogaW4gR1NsaXN0KQogICAg ICAgICAgICAgICAgICAgICByZXR1cm4gR1NsaXN0OwogICAgICBmdW5jdGlvbiBMZW5ndGggKExp c3QgOiBpbiBHU2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEd1aW50OwogICAg ICBwcm9jZWR1cmUgTGlzdF9SZXZlcnNlIChMaXN0IDogaW4gb3V0IEdTbGlzdCk7CiAgICAgIGZ1 bmN0aW9uIE5leHQgKExpc3QgOiBpbiBHU2xpc3QpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy biBHU2xpc3Q7CiAgICAgIGZ1bmN0aW9uIE50aCAoTGlzdCA6IGluIEdTbGlzdDsKICAgICAgICAg ICAgICAgICAgICBOICAgIDogaW4gR3VpbnQpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdT bGlzdDsKICAgICAgZnVuY3Rpb24gTnRoX0RhdGEgKExpc3QgOiBpbiBHU2xpc3Q7CiAgICAgICAg ICAgICAgICAgICAgICAgICBOIDogaW4gR3VpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gR3BvaW50ZXI7CiAgICAgIGZ1bmN0aW9uIFBvc2l0aW9uIChMaXN0IDogaW4gR1NsaXN0 OwogICAgICAgICAgICAgICAgICAgICAgICAgTGluayA6IGluIEdTbGlzdCkKICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAgICBwcm9jZWR1cmUgUHJlcGVuZCAoTGlzdCA6 IGluIG91dCBHU2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50 ZXIpOwogICAgICBwcm9jZWR1cmUgUmVtb3ZlIChMaXN0IDogaW4gb3V0IEdTbGlzdDsKICAgICAg ICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyKTsKICAgICAgcHJvY2VkdXJlIFJl bW92ZV9MaW5rIChMaXN0IDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaW5rIDogaW4gR1NsaXN0KTsKICAgICAgZnVuY3Rpb24gR2V0X09iamVjdCAoT2JqIDog aW4gR1NsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJl c3M7CiAgICAgIHByYWdtYSBJbmxpbmUgKEdldF9PYmplY3QpOwogICAgICBwcm9jZWR1cmUgU2V0 X09iamVjdCAoT2JqICAgIDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZhbHVlICA6IGluICAgICBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbmxpbmUg KFNldF9PYmplY3QpOwogICBwcml2YXRlCgogICAgICB0eXBlIEdTbGlzdCBpcwogICAgICAgICBy ZWNvcmQKICAgICAgICAgICAgUHRyIDogU3lzdGVtLkFkZHJlc3MgOj0gU3lzdGVtLk51bGxfQWRk cmVzczsKICAgICAgICAgZW5kIHJlY29yZDsKICAgICAgTnVsbF9MaXN0IDogY29uc3RhbnQgR1Ns aXN0IDo9IChQdHIgPT4gU3lzdGVtLk51bGxfQWRkcmVzcyk7CiAgIGVuZCBHZW5lcmljX1NMaXN0 OwoKICAgLS0gIDwvZG9jX2lnbm9yZT4KCmVuZCBHbGliLkdTbGlzdDsKAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAZ25hdGJ1Zy9nbGliLWdsaXN0LmFkYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMDA2 NDQAMDAwMTc1MQAwMDAwMDAwADAwMDAwMDMwMDUwADA3NTUxMTA3NjMyADAxNDA0NgAgMAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHNwYXoAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5n IGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAg ICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAwICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBB cm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQot LSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAg ICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGgg dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg ICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhj ZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0 aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1 Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxm IGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9l cyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQot LSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExp Y2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKcGFja2FnZSBib2R5IEdsaWIuR2xpc3QgaXMK CiAgIHVzZSB0eXBlIFN5c3RlbS5BZGRyZXNzOwoKICAgcGFja2FnZSBib2R5IEdlbmVyaWNfTGlz dCBpcwogICAgICAtLS0tLS0tLS0tLQogICAgICAtLSBBbGxvYyAtLQogICAgICAtLS0tLS0tLS0t LQoKICAgICAgcHJvY2VkdXJlIEFsbG9jIChMaXN0IDogb3V0IEdsaXN0KSBpcwogICAgICAgICBm dW5jdGlvbiBJbnRlcm5hbCByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJ bXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X2FsbG9jIik7CiAgICAgIGJlZ2luCiAgICAgICAg IFNldF9PYmplY3QgKExpc3QsIEludGVybmFsKTsKICAgICAgZW5kIEFsbG9jOwoKICAgICAgLS0t LS0tLS0tLS0tCiAgICAgIC0tIEFwcGVuZCAtLQogICAgICAtLS0tLS0tLS0tLS0KCiAgICAgIHBy b2NlZHVyZSBBcHBlbmQKICAgICAgICAoTGlzdCA6IGluIG91dCBHbGlzdDsKICAgICAgICAgRGF0 YSA6IGluIEdwb2ludGVyKQogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlz dCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IFN5 c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5B ZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9hcHBl bmQiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdl dF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29u dmVydCAoRGF0YSkpKTsKICAgICAgZW5kIEFwcGVuZDsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAg ICAtLSBDb25jYXQgLS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBDb25jYXQK ICAgICAgICAoTGlzdDEgOiBpbiBHbGlzdDsKICAgICAgICAgTGlzdDIgOiBpbiBHbGlzdCkKICAg ICAgICAgcmV0dXJuIEdsaXN0CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChM aXN0MSA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdDIg OiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0 ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3Rf YXBwZW5kIik7CiAgICAgICAgIFRtcCA6IEdsaXN0OwogICAgICBiZWdpbgogICAgICAgICBTZXRf T2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0MSksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdldF9PYmplY3QgKExpc3QyKSkpOwogICAgICAgICByZXR1 cm4gVG1wOwogICAgICBlbmQgQ29uY2F0OwoKICAgICAgLS0tLS0tLS0tLS0tCiAgICAgIC0tIElu c2VydCAtLQogICAgICAtLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBJbnNlcnQKICAgICAg ICAoTGlzdCAgICAgOiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgIERhdGEgICAgIDogaW4gICAgIEdw b2ludGVyOwogICAgICAgICBQb3NpdGlvbiA6IGluICAgICBHaW50KQogICAgICBpcwogICAgICAg ICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgRGF0YSA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgUG9zICA6IEdpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g U3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19s aXN0X2luc2VydCIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRl cm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDb252ZXJ0IChEYXRhKSwgUG9zaXRpb24pKTsKICAgICAgZW5kIEluc2VydDsKCiAgICAg IC0tLS0tLS0tLS0KICAgICAgLS0gRmluZCAtLQogICAgICAtLS0tLS0tLS0tCgogICAgICBmdW5j dGlvbiBGaW5kCiAgICAgICAgKExpc3QgOiBpbiBHbGlzdDsKICAgICAgICAgRGF0YSA6IGluIEdw b2ludGVyKQogICAgICAgICByZXR1cm4gR2xpc3QKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24g SW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJnX2xpc3RfZmluZCIpOwogICAgICAgICBUbXAgOiBHbGlzdDsKICAgICAgYmVnaW4KICAgICAg ICAgU2V0X09iamVjdCAoVG1wLCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnQgKERhdGEpKSk7CiAgICAgICAgIHJl dHVybiBUbXA7CiAgICAgIGVuZCBGaW5kOwoKICAgICAgLS0tLS0tLS0tLS0KICAgICAgLS0gRmly c3QgLS0KICAgICAgLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIEZpcnN0IChMaXN0IDogaW4g R2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2xpc3QKICAgICAgaXMKICAgICAg ICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIElt cG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfZmlyc3QiKTsKICAgICAgICAgVG1wIDogR2xpc3Q7 CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmpl Y3QgKExpc3QpKSk7CiAgICAgICAgIHJldHVybiBUbXA7CiAgICAgIGVuZCBGaXJzdDsKCiAgICAg IC0tLS0tLS0tLS0KICAgICAgLS0gRnJlZSAtLQogICAgICAtLS0tLS0tLS0tCgogICAgICBwcm9j ZWR1cmUgRnJlZSAoTGlzdCA6IGluIG91dCBHbGlzdCkgaXMKICAgICAgICAgcHJvY2VkdXJlIElu dGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3MpOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChD LCBJbnRlcm5hbCwgImdfbGlzdF9mcmVlIik7CiAgICAgIGJlZ2luCiAgICAgICAgIEludGVybmFs IChHZXRfT2JqZWN0IChMaXN0KSk7CiAgICAgIGVuZCBGcmVlOwoKICAgICAgLS0tLS0tLS0tLS0t LS0KICAgICAgLS0gR2V0X0RhdGEgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0 aW9uIEdldF9EYXRhIChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHcG9pbnRlciBpcwogICAgICAg ICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IGluIFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEg SW1wb3J0IChDLCBJbnRlcm5hbCwgImFkYV9saXN0X2dldF9kYXRhIik7CiAgICAgIGJlZ2luCiAg ICAgICAgIHJldHVybiBDb252ZXJ0IChJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCkpKTsKICAg ICAgZW5kIEdldF9EYXRhOwoKICAgICAgLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gR2V0X0RhdGEg LS0KICAgICAgLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIEdldF9EYXRhX0FkZHJlc3Mg KExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIFN5c3RlbS5BZGRyZXNzIGlzCiAgICAgICAgIGZ1bmN0 aW9uIEludGVybmFsIChMaXN0IDogaW4gU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiYWRhX2xpc3RfZ2V0X2RhdGEiKTsKICAgICAgYmVnaW4KICAgICAgICAg cmV0dXJuIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSk7CiAgICAgIGVuZCBHZXRfRGF0YV9B ZGRyZXNzOwoKICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gIEdldF9HcG9pbnRl ciAgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIEdldF9HcG9p bnRlciAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gR3BvaW50ZXIgaXMKICAgICAgYmVnaW4KICAg ICAgICAgcmV0dXJuIENvbnZlcnQgKEdldF9PYmplY3QgKExpc3QpKTsKICAgICAgZW5kIEdldF9H cG9pbnRlcjsKCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gR2V0X09iamVjdCAtLQog ICAgICAtLS0tLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBHZXRfT2JqZWN0IChPYmogOiBp biBHbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNz IGlzCiAgICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBPYmouUHRyOwogICAgICBlbmQgR2V0X09i amVjdDsKCiAgICAgIC0tLS0tLS0tLS0tCiAgICAgIC0tIEluZGV4IC0tCiAgICAgIC0tLS0tLS0t LS0tCgogICAgICBmdW5jdGlvbiBJbmRleAogICAgICAgIChMaXN0IDogaW4gR2xpc3Q7CiAgICAg ICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgICAgcmV0dXJuIEdpbnQKICAgICAgaXMKICAg ICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRl cm5hbCwgImdfbGlzdF9pbmRleCIpOwogICAgICBiZWdpbgogICAgICAgICByZXR1cm4gSW50ZXJu YWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnQg KERhdGEpKTsKICAgICAgZW5kIEluZGV4OwoKICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg IC0tICBJc19DcmVhdGVkICAtLQogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0 aW9uIElzX0NyZWF0ZWQgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEJvb2xlYW4gaXMKICAgICAg YmVnaW4KICAgICAgICAgcmV0dXJuIEdldF9PYmplY3QgKExpc3QpIC89IFN5c3RlbS5OdWxsX0Fk ZHJlc3M7CiAgICAgIGVuZCBJc19DcmVhdGVkOwoKICAgICAgLS0tLS0tLS0tLQogICAgICAtLSBM YXN0IC0tCiAgICAgIC0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIExhc3QgKExpc3QgOiBpbiBH bGlzdCkgcmV0dXJuIEdsaXN0IGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDog U3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVt LkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X2xh c3QiKTsKICAgICAgICAgVG1wIDogR2xpc3Q7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmpl Y3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKSk7CiAgICAgICAgIHJldHVybiBU bXA7CiAgICAgIGVuZCBMYXN0OwoKICAgICAgLS0tLS0tLS0tLS0tCiAgICAgIC0tIExlbmd0aCAt LQogICAgICAtLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIExlbmd0aCAoTGlzdCA6IGluIEds aXN0KSByZXR1cm4gR3VpbnQgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBT eXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHdWludDsK ICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfbGVuZ3RoIik7CiAg ICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCkpOwog ICAgICBlbmQgTGVuZ3RoOwoKICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIExpc3Rf UmV2ZXJzZSAtLQogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBMaXN0 X1JldmVyc2UgKExpc3QgOiBpbiBvdXQgR2xpc3QpIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVy bmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFs LCAiZ19saXN0X3JldmVyc2UiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoTGlz dCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKSk7CiAgICAgIGVuZCBMaXN0X1JldmVyc2U7 CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIE5leHQgLS0KICAgICAgLS0tLS0tLS0tLQoKICAg ICAgZnVuY3Rpb24gTmV4dCAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gR2xpc3QgaXMKICAgICAg ICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIElt cG9ydCAoQywgSW50ZXJuYWwsICJhZGFfbGlzdF9uZXh0Iik7CiAgICAgICAgIFRtcCA6IEdsaXN0 OwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2Jq ZWN0IChMaXN0KSkpOwogICAgICAgICByZXR1cm4gVG1wOwogICAgICBlbmQgTmV4dDsKCiAgICAg IC0tLS0tLS0tLQogICAgICAtLSBOdGggLS0KICAgICAgLS0tLS0tLS0tCgogICAgICBmdW5jdGlv biBOdGgKICAgICAgICAoTGlzdCA6IGluIEdsaXN0OwogICAgICAgICBOICAgIDogaW4gR3VpbnQp CiAgICAgICAgIHJldHVybiBHbGlzdAogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5h bCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTiAg ICA6IEd1aW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRy ZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9udGgiKTsK ICAgICAgICAgVG1wIDogR2xpc3Q7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKFRt cCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLCBOKSk7CiAgICAgICAgIHJldHVybiBUbXA7 CiAgICAgIGVuZCBOdGg7CgogICAgICAtLS0tLS0tLS0tLS0tLQogICAgICAtLSBOdGhfRGF0YSAt LQogICAgICAtLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gTnRoX0RhdGEKICAgICAgICAo TGlzdCA6IGluIEdsaXN0OwogICAgICAgICBOICAgIDogaW4gR3VpbnQpCiAgICAgICAgIHJldHVy biBHcG9pbnRlcgogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5 c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTiAgICA6IEd1aW50KQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAg ICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9udGhfZGF0YSIpOwogICAgICBi ZWdpbgogICAgICAgICByZXR1cm4gQ29udmVydCAoSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3Qp LCBOKSk7CiAgICAgIGVuZCBOdGhfRGF0YTsKCiAgICAgIC0tLS0tLS0tLS0tLS0tCiAgICAgIC0t IFBvc2l0aW9uIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBQb3NpdGlv bgogICAgICAgIChMaXN0IDogaW4gR2xpc3Q7CiAgICAgICAgIExpbmsgOiBpbiBHbGlzdCkKICAg ICAgICAgcmV0dXJuIEdpbnQKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExp c3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgOiBT eXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50Owog ICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9wb3NpdGlvbiIpOwog ICAgICBiZWdpbgogICAgICAgICByZXR1cm4gSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLCBH ZXRfT2JqZWN0IChMaW5rKSk7CiAgICAgIGVuZCBQb3NpdGlvbjsKCiAgICAgIC0tLS0tLS0tLS0t LS0KICAgICAgLS0gUHJlcGVuZCAtLQogICAgICAtLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1 cmUgUHJlcGVuZAogICAgICAgIChMaXN0IDogaW4gb3V0IEdsaXN0OwogICAgICAgICBEYXRhIDog aW4gR3BvaW50ZXIpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDog U3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVt LkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJl c3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X3ByZXBlbmQi KTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdldF9P YmplY3QgKExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVy dCAoRGF0YSkpKTsKICAgICAgZW5kIFByZXBlbmQ7CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0t IFByZXYgLS0KICAgICAgLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gUHJldiAoTGlzdCA6IGlu IEdsaXN0KSByZXR1cm4gR2xpc3QgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3Qg OiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0 ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJhZGFfbGlz dF9wcmV2Iik7CiAgICAgICAgIFRtcCA6IEdsaXN0OwogICAgICBiZWdpbgogICAgICAgICBTZXRf T2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAgICAgICByZXR1 cm4gVG1wOwogICAgICBlbmQgUHJldjsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAgICAtLSBSZW1v dmUgLS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlCiAgICAgICAg KExpc3QgOiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAg aXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfcmVtb3ZlIik7CiAgICAgIGJlZ2luCiAgICAg ICAgIFNldF9PYmplY3QgKExpc3QsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnQgKERhdGEpKSk7CiAgICAgIGVu ZCBSZW1vdmU7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tLQogICAgICAtLSBSZW1vdmVfTGluayAt LQogICAgICAtLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIFJlbW92ZV9MaW5rCiAg ICAgICAgKExpc3QgOiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgIExpbmsgOiBpbiBHbGlzdCkKICAg ICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfcmVtb3ZlX2xpbmsiKTsKICAgICAgYmVn aW4KICAgICAgICAgU2V0X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3Qp LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0X09iamVjdCAoTGluaykp KTsKICAgICAgZW5kIFJlbW92ZV9MaW5rOwoKICAgICAgLS0tLS0tLS0tLS0tLS0tLQogICAgICAt LSBTZXRfT2JqZWN0IC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBT ZXRfT2JqZWN0IChPYmogICA6IGluIG91dCBHbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFZhbHVlIDogaW4gICAgIFN5c3RlbS5BZGRyZXNzKSBpcwogICAgICBiZWdpbgogICAgICAg ICBPYmouUHRyIDo9IFZhbHVlOwogICAgICBlbmQgU2V0X09iamVjdDsKCiAgIGVuZCBHZW5lcmlj X0xpc3Q7CmVuZCBHbGliLkdsaXN0OwoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGduYXRidWcvZ2xpYi1nc2xp c3QuYWRiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMTAwNjQ0ADAwMDE3NTEAMDAwMDAwMAAwMDAwMDAy NDcwMgAwNzU1MTEwNzYzMgAwMTQyNDAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAdXN0YXIgIABzcGF6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHdoZWVs AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0g ICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmln aHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFu dWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAg LS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg ICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAg ICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5z dGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlz IHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwg dGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0K LS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBh bnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBi ZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCnBhY2thZ2UgYm9keSBHbGliLkdTbGlzdCBpcwoKICAgcGFja2FnZSBib2R5IEdlbmVyaWNf U0xpc3QgaXMKICAgICAgLS0tLS0tLS0tLS0KICAgICAgLS0gQWxsb2MgLS0KICAgICAgLS0tLS0t LS0tLS0KCiAgICAgIHByb2NlZHVyZSBBbGxvYyAoTGlzdCA6IG91dCBHU2xpc3QpIGlzCiAgICAg ICAgIGZ1bmN0aW9uIEludGVybmFsIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3NsaXN0X2FsbG9jIik7CiAgICAgIGJlZ2luCiAg ICAgICAgIFNldF9PYmplY3QgKExpc3QsIEludGVybmFsKTsKICAgICAgZW5kIEFsbG9jOwoKICAg ICAgLS0tLS0tLS0tLS0tCiAgICAgIC0tIEFwcGVuZCAtLQogICAgICAtLS0tLS0tLS0tLS0KCiAg ICAgIHByb2NlZHVyZSBBcHBlbmQKICAgICAgICAoTGlzdCA6IGluIG91dCBHU2xpc3Q7CiAgICAg ICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJu YWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERh dGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT eXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3Ns aXN0X2FwcGVuZCIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRl cm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDb252ZXJ0IChEYXRhKSkpOwogICAgICBlbmQgQXBwZW5kOwoKICAgICAgLS0tLS0tLS0t LS0tCiAgICAgIC0tIENvbmNhdCAtLQogICAgICAtLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9u IENvbmNhdAogICAgICAgIChMaXN0MSA6IGluIEdTbGlzdDsKICAgICAgICAgTGlzdDIgOiBpbiBH U2xpc3QpCiAgICAgICAgIHJldHVybiBHU2xpc3QKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24g SW50ZXJuYWwgKExpc3QxIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0MiA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5h bCwgImdfc2xpc3RfYXBwZW5kIik7CiAgICAgICAgIFRtcCA6IEdTbGlzdDsKICAgICAgYmVnaW4K ICAgICAgICAgU2V0X09iamVjdCAoVG1wLCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdDEpLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRfT2JqZWN0IChMaXN0MikpKTsK ICAgICAgICAgcmV0dXJuIFRtcDsKICAgICAgZW5kIENvbmNhdDsKCiAgICAgIC0tLS0tLS0tLS0t LS0tCiAgICAgIC0tIEdldF9EYXRhIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tCgogICAgICBmdW5j dGlvbiBHZXRfRGF0YSAoTGlzdCA6IGluIEdTbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBHcG9pbnRlcgogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlz dCA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdt YSBJbXBvcnQgKEMsIEludGVybmFsLCAiYWRhX2dzbGlzdF9nZXRfZGF0YSIpOwogICAgICBiZWdp bgogICAgICAgICByZXR1cm4gQ29udmVydCAoSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKSk7 CiAgICAgIGVuZCBHZXRfRGF0YTsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAgICAtLSBJbnNlcnQg LS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgSW5zZXJ0CiAgICAgICAgKExp c3QgICAgIDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgRGF0YSAgICAgOiBpbiAgICAgR3BvaW50 ZXI7CiAgICAgICAgIFBvc2l0aW9uIDogaW4gICAgIEdpbnQpCiAgICAgIGlzCiAgICAgICAgIGZ1 bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQb3MgIDogR2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0 ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3NsaXN0 X2luc2VydCIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5h bCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDb252ZXJ0IChEYXRhKSwgUG9zaXRpb24pKTsKICAgICAgZW5kIEluc2VydDsKCiAgICAgIC0t LS0tLS0tLS0KICAgICAgLS0gRmluZCAtLQogICAgICAtLS0tLS0tLS0tCgogICAgICBmdW5jdGlv biBGaW5kCiAgICAgICAgKExpc3QgOiBpbiBHU2xpc3Q7CiAgICAgICAgIERhdGEgOiBpbiBHcG9p bnRlcikKICAgICAgICAgcmV0dXJuIEdTbGlzdAogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJ bnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgRGF0YSA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwg Imdfc2xpc3RfZmluZCIpOwogICAgICAgICBUbXAgOiBHU2xpc3Q7CiAgICAgIGJlZ2luCiAgICAg ICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IChEYXRhKSkpOwogICAgICAgICBy ZXR1cm4gVG1wOwogICAgICBlbmQgRmluZDsKCiAgICAgIC0tLS0tLS0tLS0KICAgICAgLS0gRnJl ZSAtLQogICAgICAtLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgRnJlZSAoTGlzdCA6IGluIG91 dCBHU2xpc3QpIGlzCiAgICAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5B ZGRyZXNzKTsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3NsaXN0X2Zy ZWUiKTsKICAgICAgYmVnaW4KICAgICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKTsK ICAgICAgZW5kIEZyZWU7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIEdldF9PYmpl Y3QgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gR2V0X09iamVjdCAo T2JqIDogaW4gR1NsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVt LkFkZHJlc3MgaXMKICAgICAgYmVnaW4KICAgICAgICAgcmV0dXJuIE9iai5QdHI7CiAgICAgIGVu ZCBHZXRfT2JqZWN0OwoKICAgICAgLS0tLS0tLS0tLS0KICAgICAgLS0gSW5kZXggLS0KICAgICAg LS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIEluZGV4CiAgICAgICAgKExpc3QgOiBpbiBHU2xp c3Q7CiAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgICAgcmV0dXJuIEdpbnQKICAg ICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAgICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImdfc2xpc3RfaW5kZXgiKTsKICAgICAgYmVnaW4KICAgICAgICAgcmV0 dXJuIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg ICBDb252ZXJ0IChEYXRhKSk7CiAgICAgIGVuZCBJbmRleDsKCiAgICAgIC0tLS0tLS0tLS0KICAg ICAgLS0gTGFzdCAtLQogICAgICAtLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBMYXN0IChMaXN0 IDogaW4gR1NsaXN0KSByZXR1cm4gR1NsaXN0IGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFs IChMaXN0IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAi Z19zbGlzdF9sYXN0Iik7CiAgICAgICAgIFRtcCA6IEdTbGlzdDsKICAgICAgYmVnaW4KICAgICAg ICAgU2V0X09iamVjdCAoVG1wLCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCkpKTsKICAgICAg ICAgcmV0dXJuIFRtcDsKICAgICAgZW5kIExhc3Q7CgogICAgICAtLS0tLS0tLS0tLS0KICAgICAg LS0gTGVuZ3RoIC0tCiAgICAgIC0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gTGVuZ3RoIChM aXN0IDogaW4gR1NsaXN0KSByZXR1cm4gR3VpbnQgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJu YWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBHdWludDsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3NsaXN0 X2xlbmd0aCIpOwogICAgICBiZWdpbgogICAgICAgICByZXR1cm4gSW50ZXJuYWwgKEdldF9PYmpl Y3QgKExpc3QpKTsKICAgICAgZW5kIExlbmd0aDsKCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAtLSBMaXN0X1JldmVyc2UgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICBw cm9jZWR1cmUgTGlzdF9SZXZlcnNlIChMaXN0IDogaW4gb3V0IEdTbGlzdCkgaXMKICAgICAgICAg ZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9y dCAoQywgSW50ZXJuYWwsICJnX3NsaXN0X3JldmVyc2UiKTsKICAgICAgYmVnaW4KICAgICAgICAg U2V0X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKSk7CiAgICAgIGVu ZCBMaXN0X1JldmVyc2U7CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIE5leHQgLS0KICAgICAg LS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gTmV4dCAoTGlzdCA6IGluIEdTbGlzdCkgcmV0dXJu IEdTbGlzdCBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRy ZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwog ICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImFkYV9nc2xpc3RfbmV4dCIpOwog ICAgICAgICBUbXAgOiBHU2xpc3Q7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKFRt cCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKSk7CiAgICAgICAgIHJldHVybiBUbXA7CiAg ICAgIGVuZCBOZXh0OwoKICAgICAgLS0tLS0tLS0tCiAgICAgIC0tIE50aCAtLQogICAgICAtLS0t LS0tLS0KCiAgICAgIGZ1bmN0aW9uIE50aAogICAgICAgIChMaXN0IDogaW4gR1NsaXN0OwogICAg ICAgICBOICAgIDogaW4gR3VpbnQpCiAgICAgICAgIHJldHVybiBHU2xpc3QKICAgICAgaXMKICAg ICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE4gICAgOiBHdWludCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50 ZXJuYWwsICJnX3NsaXN0X250aCIpOwogICAgICAgICBUbXAgOiBHU2xpc3Q7CiAgICAgIGJlZ2lu CiAgICAgICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLCBO KSk7CiAgICAgICAgIHJldHVybiBUbXA7CiAgICAgIGVuZCBOdGg7CgogICAgICAtLS0tLS0tLS0t LS0tLQogICAgICAtLSBOdGhfRGF0YSAtLQogICAgICAtLS0tLS0tLS0tLS0tLQoKICAgICAgZnVu Y3Rpb24gTnRoX0RhdGEKICAgICAgICAoTGlzdCA6IGluIEdTbGlzdDsKICAgICAgICAgTiAgICA6 IGluIEd1aW50KQogICAgICAgICByZXR1cm4gR3BvaW50ZXIKICAgICAgaXMKICAgICAgICAgZnVu Y3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE4gICAgOiBHdWludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJn X3NsaXN0X250aF9kYXRhIik7CiAgICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBDb252ZXJ0IChJ bnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksIE4pKTsKICAgICAgZW5kIE50aF9EYXRhOwoKICAg ICAgLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gUG9zaXRpb24gLS0KICAgICAgLS0tLS0tLS0tLS0t LS0KCiAgICAgIGZ1bmN0aW9uIFBvc2l0aW9uCiAgICAgICAgKExpc3QgOiBpbiBHU2xpc3Q7CiAg ICAgICAgIExpbmsgOiBpbiBHU2xpc3QpCiAgICAgICAgIHJldHVybiBHaW50CiAgICAgIGlzCiAg ICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaW5rIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50 ZXJuYWwsICJnX3NsaXN0X3Bvc2l0aW9uIik7CiAgICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBJ bnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksIEdldF9PYmplY3QgKExpbmspKTsKICAgICAgZW5k IFBvc2l0aW9uOwoKICAgICAgLS0tLS0tLS0tLS0tLQogICAgICAtLSBQcmVwZW5kIC0tCiAgICAg IC0tLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBQcmVwZW5kCiAgICAgICAgKExpc3QgOiBp biBvdXQgR1NsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgIGlzCiAgICAg ICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ19zbGlzdF9wcmVwZW5kIik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNl dF9PYmplY3QgKExpc3QsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnQgKERhdGEpKSk7CiAgICAgIGVuZCBQcmVw ZW5kOwoKICAgICAgLS0tLS0tLS0tLS0tCiAgICAgIC0tIFJlbW92ZSAtLQogICAgICAtLS0tLS0t LS0tLS0KCiAgICAgIHByb2NlZHVyZSBSZW1vdmUKICAgICAgICAoTGlzdCA6IGluIG91dCBHU2xp c3Q7CiAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgaXMKICAgICAgICAgZnVuY3Rp b24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJu YWwsICJnX3NsaXN0X3JlbW92ZSIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChM aXN0LCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDb252ZXJ0IChEYXRhKSkpOwogICAgICBlbmQgUmVtb3ZlOwoKICAgICAg LS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gUmVtb3ZlX0xpbmsgLS0KICAgICAgLS0tLS0tLS0t LS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBSZW1vdmVfTGluawogICAgICAgIChMaXN0IDogaW4g b3V0IEdTbGlzdDsKICAgICAgICAgTGluayA6IGluIEdTbGlzdCkKICAgICAgaXMKICAgICAgICAg ZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpbmsgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywg SW50ZXJuYWwsICJnX3NsaXN0X3JlbW92ZV9saW5rIik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNl dF9PYmplY3QgKExpc3QsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdldF9PYmplY3QgKExpbmspKSk7CiAgICAgIGVuZCBS ZW1vdmVfTGluazsKCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gU2V0X09iamVjdCAt LQogICAgICAtLS0tLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgU2V0X09iamVjdCAoT2Jq ICAgOiBpbiBvdXQgR1NsaXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgOiBp biAgICAgU3lzdGVtLkFkZHJlc3MpIGlzCiAgICAgIGJlZ2luCiAgICAgICAgIE9iai5QdHIgOj0g VmFsdWU7CiAgICAgIGVuZCBTZXRfT2JqZWN0OwoKICAgZW5kIEdlbmVyaWNfU0xpc3Q7CmVuZCBH bGliLkdTbGlzdDsKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
next reply other threads:[~2002-10-09 20:16 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-10-09 13:16 john [this message] 2002-11-11 9:43 fw
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20021009201247.4282.qmail@sources.redhat.com \ --to=john@utzweb.net \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).