[prev] [thread] [next] [Date index for 2004/07/08]
------------1413C1DA3F8D18BE
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
AW> Christopher Taranto wrote:
>> My view is that TTree should be a module upon which a ttree script is
>> written. This way you can utilize a TTree module within other scripts.
AW> Yep, you've hit the nail on the head.
>> I will clean it up a little over the weekend and submit it to the list
>> as at least a base to work from.
AW> Excellent, thanks!
I have attached Template::TTree version 0.01 which is based on ttree
2.75, distributed as part of the Template Toolkit version 2.13,
released on 30 January 2004.
use Template::TTree;
my $ttree = Template::TTree->new({ config => '/home/abw/.ttreerc' })
|| die "$Template::_ERROR\n";
$ttree->process_tree();
I have updated the documentation and removed references to the ttree
script interface and have not included any tests :-( [bad boy - but I
will repent soon] Any ideas on writing tests for this type of utility
module where auxiliary files (such as config files and templates) are
needed for testing are definitely welcome.
I have also included write_config as a class method.
Template::TTree::write_config('/home/abw/.ttreerc');
This is simply a modularized version of the ttree script. I
definitely think that the other ideas mentioned in this thread will
make a TT3::TTree module rock!
--
Best regards,
Christopher mailto:christopher@xxxxxxx.xxx
------------1413C1DA3F8D18BE
Content-Type: APPLICATION/OCTET-STREAM; name="TTree.pm"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="TTree.pm"
cGFja2FnZSBUZW1wbGF0ZTo6VFRyZWU7DQoNCiM9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIwojIFRl
bXBsYXRlOjpUVHJlZQojCiMgREVTQ1JJUFRJT04KIyAgIE1vZHVsZSBmb3IgcHJvY2Vzc2lu
ZyBhbGwgZGlyZWN0b3J5IHRyZWVzIGNvbnRhaW5pbmcgdGVtcGxhdGVzLgojICAgVGVtcGxh
dGUgZmlsZXMgYXJlIHByb2Nlc3NlZCBhbmQgdGhlIG91dHB1dCBkaXJlY3RlZCB0byB0aGUg
CiMgICByZWx2YW50IGZpbGUgaW4gYW4gb3V0cHV0IHRyZWUuICBUaGUgdGltZXN0YW1wcyBv
ZiB0aGUgc291cmNlIGFuZAojICAgZGVzdGluYXRpb24gZmlsZXMgY2FuIHRoZW4gYmUgZXhh
bWluZWQgZm9yIGZ1dHVyZSBpbnZvY2F0aW9ucyAKIyAgIHRvIHByb2Nlc3Mgb25seSB0aG9z
ZSBmaWxlcyB0aGF0IGhhdmUgY2hhbmdlZC4NCiMKIyBBVVRIT1IKIyAgIEFuZHkgV2FyZGxl
eSAgIDxhYndAd2FyZGxleS5vcmc+CiMKIyBDT1BZUklHSFQKIyAgIENvcHlyaWdodCAoQykg
MTk5Ni0yMDAzIEFuZHkgV2FyZGxleS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiMgICBDb3B5
cmlnaHQgKEMpIDE5OTgtMjAwMyBDYW5vbiBSZXNlYXJjaCBDZW50cmUgRXVyb3BlIEx0ZC4K
IwojICAgVGhpcyBtb2R1bGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiMgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVy
bCBpdHNlbGYuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgJElkOiB0dHJlZSx2IDIuNzUg
MjAwNC8wMS8zMCAxODozMDowMyBhYncgRXhwICQKIwojPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cg0K
IyBBbmR5LCBub3Qgc3VyZSBpZiB0aGlzIHZlcnNpb24gb2YgUGVybCBpcyBjb3JyZWN0ICMN
CnVzZSA1LjAwNjsNCnVzZSBzdHJpY3Q7DQp1c2Ugd2FybmluZ3M7DQoNCnVzZSBiYXNlIHF3
KFRlbXBsYXRlOjpCYXNlKTsNCg0KdXNlIFRlbXBsYXRlOw0KdXNlIEFwcENvbmZpZyBxdygg
OmV4cGFuZCApOwp1c2UgRmlsZTo6Q29weTsKdXNlIEZpbGU6OlBhdGg7DQp1c2UgRmlsZTo6
U3BlYzsKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgVGV4dDo6UGFyc2VXb3JkcyBxdyhxdW90
ZXdvcmRzKTsNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGNvbmZpZwojLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCg0Kb3VyICROQU1FID0gIlRUcmVlIjsKb3VyICRWRVJTSU9OID0gc3ByaW50Zigi
JWQuJTAyZCIsIHEkUmV2aXNpb246IDAuMDEgJCA9fiAvKFxkKylcLihcZCspLyk7Cm15ICRU
VE1PRFVMRSA9ICdUZW1wbGF0ZSc7DQoNCnN1YiBfaW5pdCB7DQoNCiAgbXkgKCRzZWxmLCAk
Y29uZmlnKSA9IEBfOw0KDQogIG15ICRjb25maWdfZmlsZXBhdGggICAgICAgICAgICAgICAg
PSAkY29uZmlnLT57Y29uZmlnfTsNCg0KICAjIHdlIHNob3VsZCBhbHNvIGdldCBpbiBvdGhl
ciBmb3JtYXRzIGxpa2UgKHJlZmVyZW5jZSB0byBhIGZpbGVoYW5kbGUpPw0KICB1bmxlc3Mg
KC1mICRjb25maWdfZmlsZXBhdGgpIHsKDQogICAgIGRpZSBUZW1wbGF0ZTo6RXhjZXB0aW9u
LT5uZXcoIkNhbm5vdCBmaW5kIGNvbmZpZ3VyYXRpb24gZmlsZTogJGNvbmZpZ19maWxlcGF0
aCIpOw0KDQogIH0gZWxzZSB7DQoNCgkgbXkgJGNvbmZpZyA9ICRzZWxmLT5yZWFkX2NvbmZp
ZygkY29uZmlnX2ZpbGVwYXRoKTsKCQkJCQkJCQkgDQogICAgIG15ICRhYnNvbHV0ZSA9ICRj
b25maWctPmFic29sdXRlIHx8IDA7CgkgbXkgJGRlYnVnID0gJGNvbmZpZy0+ZGVidWc7CiAg
ICAgbXkgJGxpYmRpciA9ICRjb25maWctPmxpYjsKCSBteSAkZGVwZW5kcyAgPSAkY29uZmln
LT5kZXBlbmQ7CgkgbXkgJGRlcHNmaWxlID0gJGNvbmZpZy0+ZGVwZW5kX2ZpbGU7Cg0KCSBt
eSAkc3JjZGlyID0gJGNvbmZpZy0+c3JjICAgICANCgkgICAgIHx8IGRpZSBUZW1wbGF0ZTo6
RXhjZXB0aW9uLT5uZXcoIlNvdXJjZSBkaXJlY3Rvcnkgbm90IHNldCAoLXMpIik7CgkgbXkg
JGRlc3RkaXIgPSAkY29uZmlnLT5kZXN0ICAgIA0KCSAgICAgfHwgZGllIFRlbXBsYXRlOjpF
eGNlcHRpb24tPm5ldygiRGVzdGluYXRpb24gZGlyZWN0b3J5IG5vdCBzZXQgKC1kKSIpOwoN
CgkgZGllIFRlbXBsYXRlOjpFeGNlcHRpb24tPm5ldygiU291cmNlIGFuZCBkZXN0aW5hdGlv
biBkaXJlY3RvcmllcyBtYXkgbm90IGJlIHRoZSBzYW1lOiAkc3JjZGlyIikKCSAgICAgaWYg
JHNyY2RpciBlcSAkZGVzdGRpcjsKDQoJICMgdW5zaGlmdCBhbnkgcGVybDVsaWIgZGlyZWN0
b3JpZXMgb250byBmcm9udCBvZiBJTkMKCSB1bnNoaWZ0KEBJTkMsIEB7ICRjb25maWctPnBl
cmw1bGliIH0pOwoNCiAgICAgIyBnZXQgYWxsIHRlbXBsYXRlXyogb3B0aW9ucyBmcm9tIHRo
ZSBjb25maWcgYW5kIGZvbGQga2V5cyB0byBVUFBFUiBDQVNFCiAgICAgbXkgJXR0b3B0cyA9
ICRjb25maWctPnZhcmxpc3QoJ150ZW1wbGF0ZV8nLCAxKTsKICAgICBteSAkdHRtb2R1bGUg
PSBkZWxldGUoJHR0b3B0c3sgbW9kdWxlIH0pOwogICAgIG15ICR1Y3R0b3B0cyA9IHsKCQkJ
CSAgICAgbWFwIHsgbXkgJHYgPSAkdHRvcHRzeyAkXyB9OyBkZWZpbmVkICR2ID8gKHVjICRf
LCAkdikgOiAoKSB9CgkJCQkgICAgICAgICAgIGtleXMgJXR0b3B0cywKCQkJCSAgICAgICAg
IH07DQoNCgkgIyBub3cgY3JlYXRlIGNvbXBsZXRlIHBhcmFtZXRlciBoYXNoIGZvciBjcmVh
dGluZyB0ZW1wbGF0ZSBwcm9jZXNzb3IKCSBteSAkdHRvcHRzID0gewoJCQkJICAgJSR1Y3R0
b3B0cywKCSAgICAgICAgICAgICAgICAgUkVMQVRJVkUgICAgID0+IDEsCiAJCQkJICAgICBB
QlNPTFVURSAgICAgPT4gJGFic29sdXRlLAoJCQkJCSBJTkNMVURFX1BBVEggPT4gWyAkc3Jj
ZGlyLCBAJGxpYmRpciBdLAoJCQkJCSBPVVRQVVRfUEFUSCAgPT4gJGRlc3RkaXIsCgkJCQkg
IH07Cg0KCSAjIGxvYWQgY3VzdG9tIHRlbXBsYXRlIG1vZHVsZSAKCSBpZiAoJHR0bW9kdWxl
KSB7CgkgICAgIG15ICR0dHBrZyA9ICR0dG1vZHVsZTsKCSAgICAgJHR0cGtnID1+IHNbOjpd
Wy9dZzsKCSAgICAgJHR0cGtnIC49ICcucG0nOwoJICAgICByZXF1aXJlICR0dHBrZzsKCSB9
CgkgZWxzZSB7CgkgICAgICR0dG1vZHVsZSA9ICRUVE1PRFVMRTsKCSB9Cg0KICAgICAkc2Vs
Zi0+dHRtb2R1bGUoJHR0bW9kdWxlKTsNCgoJICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAjIGlu
dGVyLWZpbGUgZGVwZW5kZW5jaWVzCgkgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCSBpZiAoJGRl
cHNmaWxlIG9yICRkZXBlbmRzKSB7CgkgICAgICRkZXBlbmRzID0gJHNlbGYtPmRlcGVuZGVu
Y2llcygkZGVwc2ZpbGUsICRkZXBlbmRzKTsKCSB9IAoJIGVsc2UgewoJICAgICAkZGVwZW5k
cyA9IHsgfTsKCSB9CgogICAgIG15ICRnbG9iYWxfZGVwcyA9ICRkZXBlbmRzLT57JyonfSB8
fCBbIF07Cg0KCSAjIGFkZCBhbnkgUFJFX1BST0NFU1MsIGV0Yy4sIHRlbXBsYXRlcyBhcyBn
bG9iYWwgZGVwZW5kZW5jaWVzCgkgZm9yZWFjaCBteSAkdHRvcHQgKHF3KCBQUkVfUFJPQ0VT
UyBQT1NUX1BST0NFU1MgUFJPQ0VTUyBXUkFQUEVSICkpIHsKCSAgICBteSAkZGVwcyA9ICR1
Y3R0b3B0cy0+eyAkdHRvcHQgfSB8fCBuZXh0OwoJICAgIG15IEBkZXBzID0gcmVmICRkZXBz
IGVxICdBUlJBWScgPyAoQCRkZXBzKSA6ICgkZGVwcyk7CgkgICAgbmV4dCB1bmxlc3MgQGRl
cHM7CgkgICAgcHVzaChAJGdsb2JhbF9kZXBzLCBAZGVwcyk7CgkgfQoKCSAjIHJlbW92ZSBh
bnkgZHVwbGljYXRlcwoJICRnbG9iYWxfZGVwcyA9IHsgbWFwIHsgKCRfID0+IDEpIH0gQCRn
bG9iYWxfZGVwcyB9OwoJICRnbG9iYWxfZGVwcyA9IFsga2V5cyAlJGdsb2JhbF9kZXBzIF07
CgoJICMgdXBkYXRlICRkZXBlbmRzIGhhc2ggb3IgZGVsZXRlIGl0IGlmIHRoZXJlIGFyZSBu
byBkZXBlbmRlbmNpZXMKCSBpZiAoQCRnbG9iYWxfZGVwcykgewoJICAgICAkZGVwZW5kcy0+
eycqJ30gPSAkZ2xvYmFsX2RlcHM7CgkgfQoJIGVsc2UgewoJICAgICBkZWxldGUgJGRlcGVu
ZHMtPnsnKid9OwoJICAgICAkZ2xvYmFsX2RlcHMgPSB1bmRlZjsKCSB9CgkgJGRlcGVuZHMg
PSB1bmRlZgoJICAgICB1bmxlc3Mga2V5cyAlJGRlcGVuZHM7CgogICAgICRzZWxmLT5jb25m
aWcoJGNvbmZpZyk7DQogICAgICRzZWxmLT50dG9wdHMoJHR0b3B0cyk7DQogICAgICRzZWxm
LT51Y3R0b3B0cygkdWN0dG9wdHMpOw0KDQogICAgIG15ICR0ZW1wbGF0ZSA9ICR0dG1vZHVs
ZS0+bmV3KCR0dG9wdHMpIHx8IGRpZSAkdHRtb2R1bGUtPmVycm9yKCk7ICMiQ2FuJ3Qgc3Rh
cnQgdGVtcGxhdGUiOwogICAgICRzZWxmLT50ZW1wbGF0ZSgkdGVtcGxhdGUpOw0KCiAgICAg
JHNlbGYtPmRlYnVnKCRkZWJ1Zyk7DQogICAgICRzZWxmLT5kZXBlbmRzKCRkZXBlbmRzKTsN
Cg0KICB9DQoNCiAgcmV0dXJuICRzZWxmOyANCg0KfQ0KDQpzdWIgdmVyYm9zZSB7DQoNCiAg
bXkgJHNlbGYgPSBzaGlmdDsNCg0KICBteSAkdHRtb2R1bGUgPSAkc2VsZi0+dHRtb2R1bGUo
KTsNCiAgbXkgJGRlcGVuZHMgPSAkc2VsZi0+ZGVwZW5kcygpOw0KICBteSAkY29uZmlnID0g
JHNlbGYtPmNvbmZpZygpOw0KDQogIG15ICRsaWJkaXIgPSAkY29uZmlnLT5saWI7CiAgbXkg
JGlnbm9yZSA9ICRjb25maWctPmlnbm9yZTsKICBteSAkY29weSA9ICRjb25maWctPmNvcHk7
CiAgbXkgJGRyeXJ1biA9ICRjb25maWctPm5vdGhpbmc7CiAgbXkgJHZlcmJvc2UgPSAkY29u
ZmlnLT52ZXJib3NlIHx8ICRkcnlydW47CiAgbXkgJGFjY2VwdCA9ICRjb25maWctPmFjY2Vw
dDsKICBteSAkc3JjZGlyID0gJGNvbmZpZy0+c3JjOwogIG15ICRkZXN0ZGlyID0gJGNvbmZp
Zy0+ZGVzdDsKICBteSAkc3VmZml4ID0gJGNvbmZpZy0+c3VmZml4Ow0KICBteSAkREVQX0RF
QlVHID0gJGNvbmZpZy0+ZGVwZW5kX2RlYnVnKCk7Cg0KICBpZiAoJHZlcmJvc2UpIHsKDQog
ICAgICBsb2NhbCAkIiA9ICcsICc7CgkgIHByaW50ICIkTkFNRSAkVkVSU0lPTiAoVGVtcGxh
dGUgVG9vbGtpdCB2ZXJzaW9uICRUZW1wbGF0ZTo6VkVSU0lPTilcblxuIjsKCgkgIG15ICRz
ZnggPSBqb2luKCcsICcsIG1hcCB7ICIkXyA9PiAkc3VmZml4LT57JF99IiB9IGtleXMgJSRz
dWZmaXgpOwoKCSAgcHJpbnQoIiAgICAgIFNvdXJjZTogJHNyY2RpclxuIiwKCSAgICAgICAg
IiBEZXN0aW5hdGlvbjogJGRlc3RkaXJcbiIsCgkgICAgICAgICJJbmNsdWRlIFBhdGg6IFsg
QCRsaWJkaXIgXVxuIiwKCSAgICAgICAgIiAgICAgIElnbm9yZTogWyBAJGlnbm9yZSBdXG4i
LAoJICAgICAgICAiICAgICAgICBDb3B5OiBbIEAkY29weSBdXG4iLAoJICAgICAgICAiICAg
ICAgQWNjZXB0OiBbIEAkYWNjZXB0IF1cbiIsCgkgICAgICAgICIgICAgICBTdWZmaXg6IFsg
JHNmeCBdXG4iKTsKCSAgcHJpbnQoIiAgICAgIE1vZHVsZTogJHR0bW9kdWxlICIsICR0dG1v
ZHVsZS0+bW9kdWxlX3ZlcnNpb24oKSwgIlxuIikKCSAgICAgICAgdW5sZXNzICR0dG1vZHVs
ZSBlcSAkVFRNT0RVTEU7CgoJICBpZiAoJGRlcGVuZHMgJiYgJERFUF9ERUJVRykgewoJICAg
ICAgIHByaW50ICJEZXBlbmRlbmNpZXM6XG4iOwoJICAgICAgIGZvcmVhY2ggbXkgJGtleSAo
JyonLCBncmVwIHsgIS9cKi8gfSBrZXlzICUkZGVwZW5kcykgewoJICAgICAgICAgICBwcmlu
dGYoIiAgICAlLTE2cyAlc1xuIiwgJGtleSwgCgkgICAgICAgICAgICAgICAgICBqb2luKCcs
ICcsIEB7ICRkZXBlbmRzLT57ICRrZXkgfSB9KSk7CgkgICAgICAgfQoJICB9CgkgIHByaW50
ICJcbiI7CgkgIHByaW50ICJOT1RFOiBkcnkgcnVuLCBkb2luZyBub3RoaW5nLi4uXG4iCgkg
ICAgICBpZiAkZHJ5cnVuOwoNCiAgfQoNCn0NCg0Kc3ViIGRlYnVnIHsNCiANCiAgbXkgJHNl
bGYgPSBzaGlmdDsNCg0KICBteSAkdWN0dG9wdHMgPSAkc2VsZi0+dWN0dG9wdHMoKTsNCg0K
ICBteSAkY29uZmlnID0gJHNlbGYtPmNvbmZpZygpOw0KICBteSAkZGVidWcgPSAkY29uZmln
LT5kZWJ1ZzsKDQogIGlmICgkZGVidWcpIHsKICAgICAgbG9jYWwgJCIgPSAnLCAnOwogICAg
ICBwcmludCBTVERFUlIgIlRlbXBsYXRlIFRvb2xraXQgY29uZmlndXJhdGlvbjpcbiI7CiAg
ICAgIGZvcmVhY2ggKGtleXMgJSR1Y3R0b3B0cykgewoJCW15ICR2YWwgPSAkdWN0dG9wdHMt
PnskX307CgkJbmV4dCB1bmxlc3MgJHZhbDsKCQlpZiAocmVmKCR2YWwpIGVxICdBUlJBWScp
IHsKCQkgICAgbmV4dCB1bmxlc3MgQCR2YWw7CgkJICAgICR2YWwgPSAiWyBAJHZhbCBdIjsK
CQl9CgkJcHJpbnRmIFNUREVSUiAiICAlLTEycyA9PiAkdmFsXG4iLCAkXzsKCSAgICB9Cgkg
ICAgcHJpbnQgU1RERVJSICJcbiI7CiAgfQoNCn0NCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg
cHJvY2Vzc190cmVlKCRkaXIpCiMKIyBXYWxrcyB0aGUgZGlyZWN0b3J5IHRyZWUgc3RhcnRp
bmcgYXQgJGRpciBvciB0aGUgY3VycmVudCBkaXJlY3RvcnkKIyBpZiB1bnNwZWNpZmllZCwg
cHJvY2Vzc2luZyBmaWxlcyBhcyBmb3VuZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIHBy
b2Nlc3NfdHJlZSB7Cg0KICAgIG15ICRzZWxmID0gc2hpZnQ7DQogICAgbXkgJGRpciA9IHNo
aWZ0OwogICAgbXkgKCRmaWxlLCAkcGF0aCwgJGFic3BhdGgsICRjaGVjayk7CiAgICBteSAk
dGFyZ2V0OwogICAgbG9jYWwgKkRJUjsKDQogICAgbXkgJGNvbmZpZyA9ICRzZWxmLT5jb25m
aWcoKTsNCglteSAkcmVjdXJzZSAgID0gJGNvbmZpZy0+cmVjdXJzZTsKCW15ICRpZ25vcmUg
ICAgPSAkY29uZmlnLT5pZ25vcmU7CglteSAkZHJ5cnVuICAgID0gJGNvbmZpZy0+bm90aGlu
ZzsKCW15ICR2ZXJib3NlICAgPSAkY29uZmlnLT52ZXJib3NlIHx8ICRkcnlydW47CiAgICBt
eSAkc3JjZGlyICAgID0gJGNvbmZpZy0+c3JjOwogICAgbXkgJGRlc3RkaXIgICA9ICRjb25m
aWctPmRlc3Q7CiAgICBteSAkZGVidWcgICAgID0gJGNvbmZpZy0+ZGVidWc7Cg0KICAgIG15
ICRhYnNkaXIgPSBqb2luKCcvJywgJHNyY2RpciA/ICRzcmNkaXIgOiAoKSwgJGRpciA/ICRk
aXIgOiAoKSk7CiAgICAkYWJzZGlyIHx8PSAnLic7CgogICAgcHJpbnQgU1RERVJSICIgICog
cHJvY2Vzc2luZyB0cmVlOiAkYWJzZGlyXG4iIGlmICRkZWJ1ZzsKCiAgICBvcGVuZGlyKERJ
UiwgJGFic2RpcikgfHwgZG8geyB3YXJuICIkYWJzZGlyOiAkIVxuIjsgcmV0dXJuIHVuZGVm
OyB9OwoKICAgIEZJTEU6IHdoaWxlIChkZWZpbmVkICgkZmlsZSA9IHJlYWRkaXIoRElSKSkp
IHsKCW5leHQgaWYgJGZpbGUgZXEgJy4nIHx8ICRmaWxlIGVxICcuLic7CgkkcGF0aCA9ICRk
aXIgPyAiJGRpci8kZmlsZSIgOiAkZmlsZTsKCSRhYnNwYXRoID0gIiRhYnNkaXIvJGZpbGUi
OwoJCgluZXh0IHVubGVzcyAtZSAkYWJzcGF0aDsKCgkjIGNoZWNrIGFnYWluc3QgaWdub3Jl
IGxpc3QKCWZvcmVhY2ggJGNoZWNrIChAJGlnbm9yZSkgewoJICAgIGlmICgkcGF0aCA9fiAv
JGNoZWNrLykgewoJCXByaW50ZiAiICAtICUtMzJzIChpZ25vcmVkLCBtYXRjaGVzIC8kY2hl
Y2svKVxuIiwgJHBhdGgKCQkgICAgaWYgJHZlcmJvc2U7CgkJbmV4dCBGSUxFOwoJICAgIH0K
CX0KCglpZiAoLWQgJGFic3BhdGgpIHsKCSAgICBpZiAoJHJlY3Vyc2UpIHsKCQlteSAoJHVp
ZCwgJGdpZCwgJG1vZGUpOwoKCQkodW5kZWYsIHVuZGVmLCAkbW9kZSwgdW5kZWYsICR1aWQs
ICRnaWQsIHVuZGVmLCB1bmRlZiwKCQkgdW5kZWYsIHVuZGVmLCB1bmRlZiwgdW5kZWYsIHVu
ZGVmKSAgPSBzdGF0KCRhYnNwYXRoKTsKCgkJIyBjcmVhdGUgdGFyZ2V0IGRpcmVjdG9yeSBp
ZiByZXF1aXJlZAoJCSR0YXJnZXQgPSAiJGRlc3RkaXIvJHBhdGgiOwoJCXVubGVzcyAoLWQg
JHRhcmdldCB8fCAkZHJ5cnVuKSB7CgkJICAgIG1rZGlyICR0YXJnZXQsICRtb2RlIHx8IGRv
IHsgCgkJCXdhcm4gIm1rZGlyICAoJHRhcmdldCk6ICQhXG4iOwoJCQluZXh0OwoJCSAgICB9
OwojIGNvbW1lbnRlZCBvdXQgYnkgYWJ3IG9uIDIwMDAvMTIvMDQgLSBzZWVtcyB0byByYWlz
ZSBhIHdhcm5pbmc/ICAgCiMJCSAgICBjaG93bigkdWlkLCAkZ2lkLCAkdGFyZ2V0KSB8fCB3
YXJuICJjaG93bigkdGFyZ2V0KTogJCFcbiI7CgkJICAgIHByaW50ZiAiICArICUtMzJzIChj
cmVhdGVkIHRhcmdldCBkaXJlY3RvcnkpXG4iLCAkcGF0aAoJCQlpZiAkdmVyYm9zZTsKCQl9
CgkJIyByZWN1cnNlIGludG8gZGlyZWN0b3J5CgkJJHNlbGYtPnByb2Nlc3NfdHJlZSgkcGF0
aCk7CgkgICAgfQoJICAgIGVsc2UgewoJCXByaW50ZiAiICAtICUtMzJzIChkaXJlY3Rvcnks
IG5vdCByZWN1cnNpbmcpXG4iLCAkcGF0aAoJCSAgICBpZiAkdmVyYm9zZTsKCSAgICB9Cgl9
CgllbHNlIHsKCSAgICAkc2VsZi0+cHJvY2Vzc19maWxlKCRwYXRoLCAkYWJzcGF0aCk7Cgl9
CiAgICB9CiAgICBjbG9zZWRpcihESVIpOwp9CgkKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBw
cm9jZXNzX2ZpbGUoKQojCiMgRmlsZSBmaWx0ZXJpbmcgYW5kIHByb2Nlc3Npbmcgc3ViLXJv
dXRpbmUgY2FsbGVkIGJ5IHByb2Nlc3NfdHJlZSgpCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1
YiBwcm9jZXNzX2ZpbGUgewogICAgbXkgJHNlbGYgPSBzaGlmdDsNCiAgICBteSAoJGZpbGUs
ICRhYnNmaWxlLCAlb3B0aW9ucykgPSBAXzsKICAgIG15ICgkZGVzdCwgJGRlc3RmaWxlLCAk
ZmlsZW5hbWUsICRjaGVjaywgCiAgICAgICAgJHNyY3RpbWUsICRkZXN0dGltZSwgJG1vZGUs
ICR1aWQsICRnaWQpOwogICAgbXkgKCRvbGRfc3VmZml4LCAkbmV3X3N1ZmZpeCk7CiAgICBt
eSAkaXNfZGVwID0gMDsKICAgIG15ICRjb3B5X2ZpbGUgPSAwOwoNCglteSAkdGVtcGxhdGUg
PSAkc2VsZi0+dGVtcGxhdGUoKTsNCglteSAkZGVwZW5kcyA9ICRzZWxmLT5kZXBlbmRzOwog
ICAgbXkgJGNvbmZpZyA9ICRzZWxmLT5jb25maWcoKTsNCg0KCW15ICRhbGwgPSAkY29uZmln
LT5hbGw7CglteSAkY29weSA9ICRjb25maWctPmNvcHk7CglteSAkZHJ5cnVuID0gJGNvbmZp
Zy0+bm90aGluZzsKCW15ICR2ZXJib3NlID0gJGNvbmZpZy0+dmVyYm9zZSB8fCAkZHJ5cnVu
OwoJbXkgJGFjY2VwdCA9ICRjb25maWctPmFjY2VwdDsKICAgIG15ICRwcmVzZXJ2ZSA9ICRj
b25maWctPnByZXNlcnZlOwogICAgbXkgJGRlc3RkaXIgPSAkY29uZmlnLT5kZXN0Ow0KCW15
ICRzdWZmaXggPSAkY29uZmlnLT5zdWZmaXg7Cg0KICAgICMgZ2V0IGFsbCB0ZW1wbGF0ZSB2
YXJpYWJsZSBkZWZpbml0aW9ucwogICAgbXkgJHJlcGxhY2UgPSAkY29uZmlnLT5nZXQoJ2Rl
ZmluZScpOwoNCgkjcHJpbnQgInJlcGxhY2UgaGFzaDogIiwgam9pbignLCAnLCBtYXAgeyAi
JF8gPT4gJHJlcGxhY2UtPnsgJF8gfSJ9IAoJIwkJCSAgICAga2V5cyAlJHJlcGxhY2UpLCAi
XG4iOwoNCiAgICAkYWJzZmlsZSB8fD0gJGZpbGU7Cg0KICAgICRmaWxlbmFtZSA9IGJhc2Vu
YW1lKCRmaWxlKTsKICAgICRkZXN0ZmlsZSA9ICRmaWxlOwogICAgCiAgICAjIGxvb2sgZm9y
IGFueSByZWxldmFudCBzdWZmaXggbWFwcGluZwogICAgaWYgKCUkc3VmZml4KSB7CiAgICAg
ICAgaWYgKCRmaWxlbmFtZSA9fiBtL1wuKC4rKSQvKSB7CiAgICAgICAgICAgICRvbGRfc3Vm
Zml4ID0gJDE7CiAgICAgICAgICAgIGlmICgkbmV3X3N1ZmZpeCA9ICRzdWZmaXgtPnsgJG9s
ZF9zdWZmaXggfSkgewogICAgICAgICAgICAgICAgJGRlc3RmaWxlID1+IHMvJG9sZF9zdWZm
aXgkLyRuZXdfc3VmZml4LzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRk
ZXN0ID0gJGRlc3RkaXIgPyAiJGRlc3RkaXIvJGRlc3RmaWxlIiA6ICRkZXN0ZmlsZTsKICAg
ICMkYmFzZSA9IGJhc2VuYW1lKCRmaWxlKTsKCQkJICAgICAgIAojICAgIHByaW50ICJwcm9j
ICRmaWxlID0+ICRkZXN0XG4iOwogICAgCiAgICAjIGNoZWNrIGFnYWluc3QgY29weSBsaXN0
CiAgICBmb3JlYWNoICRjaGVjayAoQCRjb3B5KSB7CiAgICAgICAgaWYgKCRmaWxlbmFtZSA9
fiAvJGNoZWNrLykgewogICAgICAgICAgICAkY29weV9maWxlID0gMTsKICAgICAgICB9CiAg
ICB9CgogICAgIyBzdGF0IHRoZSBzb3VyY2UgZmlsZSB1bmNvbmRpdGlvbmFsbHksIHNvIHdl
IGNhbiBwcmVzZXJ2ZQogICAgIyBtb2RlIGFuZCBvd25lcnNoaXAKICAgICh1bmRlZiwgdW5k
ZWYsICRtb2RlLCB1bmRlZiwgJHVpZCwgJGdpZCwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJHNy
Y3RpbWUsCiAgICAgdW5kZWYsIHVuZGVmLCB1bmRlZikgID0gc3RhdCgkYWJzZmlsZSk7CiAg
ICAKICAgICMgdGVzdCBtb2RpZmljYXRpb24gdGltZSBvZiBleGlzdGluZyBkZXN0aW5hdGlv
biBmaWxlCiAgICBpZiAoISAkYWxsICYmICEgJG9wdGlvbnN7IGZvcmNlIH0gJiYgLWYgJGRl
c3QpIHsKCSRkZXN0dGltZSA9ICggc3RhdCgkZGVzdCkgKVs5XTsKCiAgICAgICAgaWYgKGRl
ZmluZWQgJGRlcGVuZHMgYW5kIG5vdCAkY29weV9maWxlKSB7CiAgICAgICAgICAgIG15ICRk
ZXB0aW1lICA9IGRlcGVuZF90aW1lKCRmaWxlLCAkZGVwZW5kcyk7CiAgICAgICAgICAgIGlm
IChkZWZpbmVkICRkZXB0aW1lICYmICgkc3JjdGltZSA8ICRkZXB0aW1lKSkgewogICAgICAg
ICAgICAgICAgJHNyY3RpbWUgPSAkZGVwdGltZTsKICAgICAgICAgICAgICAgICRpc19kZXAg
PSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCQlpZiAoJGRlc3R0aW1lID49ICRzcmN0
aW1lKSB7CgkJICAgIHByaW50ZiAiICAtICUtMzJzIChub3QgbW9kaWZpZWQpXG4iLCAkZmls
ZQoJCQlpZiAkdmVyYm9zZTsKCQkgICAgcmV0dXJuOwoJCX0NCgogICAgfQoJCiAgICAjIGNo
ZWNrIGFnYWluc3QgY29weSBsaXN0CglpZiAoJGNvcHlfZmlsZSkgewoJICAgIHByaW50ZiAi
ICA+ICUtMzJzIChjb3BpZWQsIG1hdGNoZXMgLyRjaGVjay8pXG4iLCAkZmlsZQoJCWlmICR2
ZXJib3NlOwoKCSAgICB1bmxlc3MgKCRkcnlydW4pIHsKCQljb3B5KCRhYnNmaWxlLCAkZGVz
dCk7CgoJCWlmICgkcHJlc2VydmUpIHsKCQkgICAgY2hvd24oJHVpZCwgJGdpZCwgJGRlc3Qp
IHx8IHdhcm4gImNob3duKCRkZXN0KTogJCFcbiI7CgkJICAgIGNobW9kKCRtb2RlLCAkZGVz
dCkgfHwgd2FybiAiY2htb2QoJGRlc3QpOiAkIVxuIjsKCQl9CgkgICAgfQoJICAgIHJldHVy
bjsKICAgIH0KCiAgICAjIGNoZWNrIGFnYWluc3QgYWNjZXB0YW5jZSBsaXN0DQogICAgaWYg
KEAkYWNjZXB0KSB7CiAgICAgICAgdW5sZXNzIChncmVwIHsgJGZpbGVuYW1lID1+IC8kXy8g
fSBAJGFjY2VwdCkgewogICAgICAgICAgICBwcmludGYgIiAgLSAlLTMycyAobm90IGFjY2Vw
dGVkKVxuIiwgJGZpbGUKICAgICAgICAgICAgICAgIGlmICR2ZXJib3NlOwogICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkdmVyYm9zZSkgewogICAgICAg
IHByaW50ZigiICArICUtMzJzIiwgJGZpbGUpOwogICAgICAgIHByaW50ICIgKGNoYW5nZWQg
c3VmZml4IHRvICRuZXdfc3VmZml4KSIgaWYgJG5ld19zdWZmaXg7CiAgICAgICAgcHJpbnQg
IlxuIjsKICAgIH0KCiAgICAjIHByb2Nlc3MgZmlsZQogICAgdW5sZXNzICgkZHJ5cnVuKSB7
CiAgICAgICAgJHRlbXBsYXRlLT5wcm9jZXNzKCRmaWxlLCAkcmVwbGFjZSwgJGRlc3RmaWxl
KQoJICAgIHx8IHByaW50KCIgICEgIiwgJHRlbXBsYXRlLT5lcnJvcigpLCAiXG4iKTsKCglp
ZiAoJHByZXNlcnZlKSB7CgkgICAgY2hvd24oJHVpZCwgJGdpZCwgJGRlc3QpIHx8IHdhcm4g
ImNob3duKCRkZXN0KTogJCFcbiI7CgkgICAgY2htb2QoJG1vZGUsICRkZXN0KSB8fCB3YXJu
ICJjaG1vZCgkZGVzdCk6ICQhXG4iOwoJfQogICAgfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiMgZGVwZW5kZW5jaWVzKCRmaWxlLCAkZGVwZW5kcykKIyAKIyBSZWFkIHRoZSBkZXBlbmRl
bmNpZXMgZnJvbSAkZmlsZSwgaWYgZGVmaW5lZCwgYW5kIG1lcmdlIGluIHdpdGggCiMgdGhv
c2UgcGFzc2VkIGluIGFzIHRoZSBoYXNoIGFycmF5ICRkZXBlbmRzLCBpZiBkZWZpbmVkLgoj
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgZGVwZW5kZW5jaWVzIHsKICAgIG15ICRzZWxmID0g
c2hpZnQ7CiAgICBteSAoJGZpbGUsICRkZXBlbmQpID0gQF87CiAgICBteSAlZGVwZW5kcyA9
ICgpOwoKICAgIGlmIChkZWZpbmVkICRmaWxlKSB7CiAgICAgICAgbXkgKCRmaCwgJHRleHQs
ICRsaW5lKTsKICAgICAgICBvcGVuICRmaCwgJGZpbGUgb3IgZGllIFRlbXBsYXRlOjpFeGNl
cHRpb24tPm5ldygiQ2FuJ3Qgb3BlbiAkZmlsZSwgJCEiKTsKICAgICAgICBsb2NhbCAkLyA9
IHVuZGVmOwogICAgICAgICR0ZXh0ID0gPCRmaD47CiAgICAgICAgY2xvc2UoJGZoKTsKICAg
ICAgICAkdGV4dCA9fiBzW1xcXG5dW11tZzsKICAgICAgICAKICAgICAgICBmb3JlYWNoICRs
aW5lIChzcGxpdCgiXG4iLCAkdGV4dCkpIHsKICAgICAgICAgICAgbmV4dCBpZiAkbGluZSA9
fiAvXlxzKigjfCQpLzsKICAgICAgICAgICAgY2hvbXAgJGxpbmU7CiAgICAgICAgICAgIG15
ICgkZmlsZSwgQGZpbGVzKSA9IHF1b3Rld29yZHMoJ1xzKjpccyonLCAwLCAkbGluZSk7CiAg
ICAgICAgICAgICRmaWxlID1+IHMvXlxzKy8vOwogICAgICAgICAgICBAZmlsZXMgPSBncmVw
KGRlZmluZWQsIHF1b3Rld29yZHMoJygsfFxzKVxzKicsIDAsIEBmaWxlcykpOwogICAgICAg
ICAgICAkZGVwZW5kc3skZmlsZX0gPSBcQGZpbGVzOwogICAgICAgIH0KICAgIH0KCiAgICBp
ZiAoZGVmaW5lZCAkZGVwZW5kKSB7CiAgICAgICAgZm9yZWFjaCBteSAka2V5IChrZXlzICUk
ZGVwZW5kKSB7CiAgICAgICAgICAgICRkZXBlbmRzeyRrZXl9ID0gWyBxdW90ZXdvcmRzKCcs
JywgMCwgJGRlcGVuZC0+eyRrZXl9KSBdOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4g
XCVkZXBlbmRzOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZGVwZW5kX3RpbWUoJGZpbGUs
IFwlZGVwZW5kcykKIwojIFJldHVybnMgdGhlIG10aW1lIG9mIHRoZSBtb3N0IHJlY2VudCBp
biBAZmlsZXMuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN1YiBkZXBlbmRfdGltZSB7CiAgICBt
eSAkc2VsZiA9IHNoaWZ0OwogICAgbXkgKCRmaWxlLCAkZGVwZW5kcykgPSBAXzsKICAgIG15
ICgkZGVwcywgJGFic2ZpbGUsICRtb2R0aW1lKTsKICAgIG15ICRtYXh0aW1lID0gMDsKICAg
IG15IEBwZW5kaW5nID0gKCRmaWxlKTsKICAgIG15IEBmaWxlczsKICAgIG15ICVzZWVuOwoN
CiAgICBteSAkY29uZmlnID0gJHNlbGYtPmNvbmZpZygpOw0KDQogICAgbXkgJHNyY2RpciA9
ICRjb25maWctPnNyYzsgICAgIA0KICAgIG15ICRsaWJkaXIgPSAkY29uZmlnLT5saWI7CiAg
ICBteSAkREVQX0RFQlVHID0gJGNvbmZpZy0+ZGVwZW5kX2RlYnVnKCk7CiAgCiAgICAjIHB1
c2ggYW55IGdsb2JhbCBkZXBlbmRlbmNpZXMgb250byB0aGUgcGVuZGluZyBsaXN0CiAgICBp
ZiAoJGRlcHMgPSAkZGVwZW5kcy0+eycqJ30pIHsKICAgICAgICBwdXNoKEBwZW5kaW5nLCBA
JGRlcHMpOwogICAgfQoKICAgIHByaW50ICIgICAgIyBjaGVja2luZyBkZXBlbmRlbmNpZXMg
Zm9yICRmaWxlLi4uXG4iCiAgICAgICAgaWYgJERFUF9ERUJVRzsKCiAgICAjIGl0ZXJhdGUg
dGhyb3VnaCB0aGUgbGlzdCBvZiBwZW5kaW5nIGZpbGVzCiAgICB3aGlsZSAoQHBlbmRpbmcp
IHsKICAgICAgICAkZmlsZSA9IHNoaWZ0IEBwZW5kaW5nOwogICAgICAgIG5leHQgaWYgJHNl
ZW57ICRmaWxlIH0rKzsKCiAgICAgICAgaWYgKEZpbGU6OlNwZWMtPmZpbGVfbmFtZV9pc19h
YnNvbHV0ZSgkZmlsZSkgJiYgLWYgJGZpbGUpIHsKICAgICAgICAgICAgJG1vZHRpbWUgPSAo
c3RhdCgkZmlsZSkpWzldOwogICAgICAgICAgICBwcmludCAiICAgICMgICAkZmlsZSBbJG1v
ZHRpbWVdXG4iCiAgICAgICAgICAgICAgICBpZiAkREVQX0RFQlVHOwogICAgICAgIH0KICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgJG1vZHRpbWUgPSAwOwogICAgICAgICAgICBmb3Jl
YWNoIG15ICRkaXIgKCRzcmNkaXIsIEAkbGliZGlyKSB7CiAgICAgICAgICAgICAgICAkYWJz
ZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRpciwgJGZpbGUpOwogICAgICAgICAgICAg
ICAgaWYgKC1mICRhYnNmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJG1vZHRpbWUgPSAo
c3RhdCgkYWJzZmlsZSkpWzldOwogICAgICAgICAgICAgICAgICAgIHByaW50ICIgICAgIyAg
ICRhYnNmaWxlIFskbW9kdGltZV1cbiIKICAgICAgICAgICAgICAgICAgICAgICAgaWYgJERF
UF9ERUJVRzsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRtYXh0aW1lID0gJG1vZHRpbWUKICAg
ICAgICAgICAgaWYgJG1vZHRpbWUgPiAkbWF4dGltZTsKCiAgICAgICAgaWYgKCRkZXBzID0g
JGRlcGVuZHMtPnsgJGZpbGUgfSkgewogICAgICAgICAgICBwdXNoKEBwZW5kaW5nLCBAJGRl
cHMpOwogICAgICAgICAgICBwcmludCAiICAgICMgICAgIGRlcGVuZHMgb24gIiwgam9pbign
LCAnLCBAJGRlcHMpLCAiXG4iCiAgICAgICAgICAgICAgICBpZiAkREVQX0RFQlVHOwogICAg
ICAgIH0KICAgIH0KCiAgICByZXR1cm4gJG1heHRpbWU7Cn0KDQojLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiMgcmVhZF9jb25maWcoJGZpbGUpCiMKIyBIYW5kbGVzIHJlYWRpbmcgb2YgY29uZmln
IGZpbGUgYW5kL29yIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCiMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KCnN1YiByZWFkX2NvbmZpZyB7Cg0KICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBteSAk
ZmlsZSA9IHNoaWZ0OwoKICAgIG15ICRjb25maWcgPSBBcHBDb25maWctPm5ldygKICAgICAg
ICB7IAogICAgICAgICAgICBFUlJPUiAgPT4gc3ViIHsgZGllKEBfLCAiXG50cnkgYCROQU1F
IC0taGVscCdcbiIpIH0KICAgICAgICB9LCAKICAgICAgICAnaGVscHxoJyAgICAgID0+IHsg
QUNUSU9OID0+IFwmaGVscCB9LAogICAgICAgICdzcmN8cz1zJyAgICAgPT4geyBFWFBBTkQg
PT4gRVhQQU5EX0FMTCB9LAogICAgICAgICdkZXN0fGQ9cycgICAgPT4geyBFWFBBTkQgPT4g
RVhQQU5EX0FMTCB9LAogICAgICAgICdsaWJ8bD1zQCcgICAgPT4geyBFWFBBTkQgPT4gRVhQ
QU5EX0FMTCB9LAogICAgICAgICdjZmd8Yz1zJyAgICAgPT4geyBFWFBBTkQgPT4gRVhQQU5E
X0FMTCwgREVGQVVMVCA9PiAnLicgfSwKICAgICAgICAndmVyYm9zZXx2JyAgID0+IHsgREVG
QVVMVCA9PiAwIH0sCiAgICAgICAgJ3JlY3Vyc2V8cicgICA9PiB7IERFRkFVTFQgPT4gMCB9
LAogICAgICAgICdub3RoaW5nfG4nICAgPT4geyBERUZBVUxUID0+IDAgfSwKICAgICAgICAn
cHJlc2VydmV8cCcgID0+IHsgREVGQVVMVCA9PiAwIH0sCiAgICAgICAgJ2Fic29sdXRlJyAg
ICA9PiB7IERFRkFVTFQgPT4gMCB9LAogICAgICAgICdyZWxhdGl2ZScgICAgPT4geyBERUZB
VUxUID0+IDAgfSwKICAgICAgICAnYWxsfGEnICAgICAgID0+IHsgREVGQVVMVCA9PiAwIH0s
CiAgICAgICAgJ2RlZmluZT1zJScsCiAgICAgICAgJ3N1ZmZpeD1zJScsCiAgICAgICAgJ2ln
bm9yZT1zQCcsCiAgICAgICAgJ2NvcHk9c0AnLAogICAgICAgICdhY2NlcHQ9c0AnLAogICAg
ICAgICdkZXBlbmQ9cyUnLAogICAgICAgICdkZXBlbmRfZmlsZXxkZXBmaWxlPXMnLAogICAg
ICAgICdkZXBlbmRfZGVidWd8ZGVwZGJnJywKICAgICAgICAndGVtcGxhdGVfbW9kdWxlfG1v
ZHVsZT1zJywKICAgICAgICAndGVtcGxhdGVfYW55Y2FzZXxhbnljYXNlJywKICAgICAgICAn
dGVtcGxhdGVfZXZhbF9wZXJsfGV2YWxfcGVybCcsCiAgICAgICAgJ3RlbXBsYXRlX2xvYWRf
cGVybHxsb2FkX3BlcmwnLAogICAgICAgICd0ZW1wbGF0ZV9pbnRlcnBvbGF0ZXxpbnRlcnBv
bGF0ZScsCiAgICAgICAgJ3RlbXBsYXRlX3ByZV9jaG9tcHxwcmVfY2hvbXB8cHJlY2hvbXAn
LAogICAgICAgICd0ZW1wbGF0ZV9wb3N0X2Nob21wfHBvc3RfY2hvbXB8cG9zdGNob21wJywK
ICAgICAgICAndGVtcGxhdGVfdHJpbXx0cmltJywKICAgICAgICAndGVtcGxhdGVfcHJlX3By
b2Nlc3N8cHJlX3Byb2Nlc3N8cHJlcHJvY2Vzcz1zQCcsCiAgICAgICAgJ3RlbXBsYXRlX3Bv
c3RfcHJvY2Vzc3xwb3N0X3Byb2Nlc3N8cG9zdHByb2Nlc3M9c0AnLAogICAgICAgICd0ZW1w
bGF0ZV9wcm9jZXNzfHByb2Nlc3M9cycsCiAgICAgICAgJ3RlbXBsYXRlX3dyYXBwZXJ8d3Jh
cHBlcj1zJywKICAgICAgICAndGVtcGxhdGVfcmVjdXJzaW9ufHJlY3Vyc2lvbicsCiAgICAg
ICAgJ3RlbXBsYXRlX2V4cG9zZV9ibG9ja3N8ZXhwb3NlX2Jsb2NrcycsCiAgICAgICAgJ3Rl
bXBsYXRlX2RlZmF1bHR8ZGVmYXVsdD1zJywKICAgICAgICAndGVtcGxhdGVfZXJyb3J8ZXJy
b3I9cycsCiAgICAgICAgJ3RlbXBsYXRlX2RlYnVnfGRlYnVnPXMnLAogICAgICAgICd0ZW1w
bGF0ZV9zdGFydF90YWd8c3RhcnRfdGFnfHN0YXJ0dGFnPXMnLAogICAgICAgICd0ZW1wbGF0
ZV9lbmRfdGFnfGVuZF90YWd8ZW5kdGFnPXMnLAogICAgICAgICd0ZW1wbGF0ZV90YWdfc3R5
bGV8dGFnX3N0eWxlfHRhZ3N0eWxlPXMnLAogICAgICAgICd0ZW1wbGF0ZV9jb21waWxlX2V4
dHxjb21waWxlX2V4dD1zJywKICAgICAgICAndGVtcGxhdGVfY29tcGlsZV9kaXJ8Y29tcGls
ZV9kaXI9cycsCiAgICAgICAgJ3RlbXBsYXRlX3BsdWdpbl9iYXNlfHBsdWdpbl9iYXNlfHBs
dWdpbmJhc2U9c0AnLAogICAgICAgICdwZXJsNWxpYnxwZXJsbGliPXNAJwogICAgKTsNCgog
ICAgIyBhZGQgdGhlICdmaWxlJyBvcHRpb24gbm93IHRoYXQgd2UgaGF2ZSBhICRjb25maWcg
b2JqZWN0IHRoYXQgd2UgCiAgICAjIGNhbiByZWZlcmVuY2UgaW4gYSBjbG9zdXJlCiAgICAk
Y29uZmlnLT5kZWZpbmUoCgknZmlsZXxmPXNAJyAgID0+IHsgRVhQQU5EID0+IEVYUEFORF9B
TEwsIAoJCQkgICBBQ1RJT04gPT4gc3ViIHsgCgkJCSAgICAgICBteSAoJHN0YXRlLCAkaXRl
bSwgJGZpbGUpID0gQF87CgkJCSAgICAgICAkZmlsZSA9ICRzdGF0ZS0+Y2ZnIC4gIi8kZmls
ZSIgCgkJCQkgICB1bmxlc3MgJGZpbGUgPX4gL15bXC5cL118KD86XHc6KS87CgkJCSAgICAg
ICAkY29uZmlnLT5maWxlKCRmaWxlKSB9ICAKCQkJICAgfQogICAgKTsKCiAgICAjIHByb2Nl
c3MgbWFpbiBjb25maWcgZmlsZSwgdGhlbiBjb21tYW5kIGxpbmUgYXJncwogICAgJGNvbmZp
Zy0+ZmlsZSgkZmlsZSkgaWYgKC1mICRmaWxlKTsKICAgICRjb25maWctPmFyZ3MoKTsKCiAg
ICByZXR1cm4gJGNvbmZpZzsKDQp9Cg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHdyaXRlX2Nv
bmZpZygkZmlsZSkKIwojIFdyaXRlcyBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGUgdG8g
dGhlIGZpbGVuYW1lIHNwZWNpZmllZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIHdyaXRl
X2NvbmZpZyB7CiAgICBteSAkZmlsZSA9IHNoaWZ0OwoKICAgIG9wZW4oQ09ORklHLCAiPiRm
aWxlIikgfHwgZGllIFRlbXBsYXRlOjpFeGNlcHRpb24tPm5ldygiZmFpbGVkIHRvIGNyZWF0
ZSAkZmlsZTogJCEiKTsKICAgIHByaW50KENPTkZJRyA8PEVORF9PRl9DT05GSUcpOwojLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiMgc2FtcGxlIC50dHJlZXJjIGZpbGUgY3JlYXRlZCBhdXRvbWF0
aWNhbGx5IGJ5ICROQU1FIHZlcnNpb24gJFZFUlNJT04KIwojIFRoaXMgZmlsZSBvcmlnaW5h
bGx5IHdyaXR0ZW4gdG8gJGZpbGUKIwojIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBj
b250ZW50cyBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSwgc2VlCiMgCiMgICAgIHBlcmxk
b2MgdHRyZWUKIyAgICAgdHRyZWUgLWgKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIFRoZSBt
b3N0IGZsZXhpYmxlIHdheSB0byB1c2UgdHRyZWUgaXMgdG8gY3JlYXRlIGEgc2VwYXJhdGUg
ZGlyZWN0b3J5IAojIGZvciBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBzaW1wbHkgdXNlIHRo
ZSAudHRyZWVyYyB0byB0ZWxsIHR0cmVlIHdoZXJlCiMgaXQgaXMuICAKIwojICAgICBjZmcg
PSAvcGF0aC90by90dHJlZS9jb25maWcvZGlyZWN0b3J5CgojIHByaW50IHN1bW1hcnkgb2Yg
d2hhdCdzIGdvaW5nIG9uIAp2ZXJib3NlIAoKIyByZWN1cnNlIGludG8gYW55IHN1Yi1kaXJl
Y3RvcmllcyBhbmQgcHJvY2VzcyBmaWxlcwpyZWN1cnNlCgojIHJlZ2V4ZW4gb2YgdGhpbmdz
IHRoYXQgYXJlbid0IHRlbXBsYXRlcyBhbmQgc2hvdWxkIGJlIGlnbm9yZWQKaWdub3JlID0g
XFxiKENWU3xSQ1MpXFxiCmlnbm9yZSA9IF4jCgojIGRpdHRvIGZvciB0aGluZ3MgdGhhdCBz
aG91bGQgYmUgY29waWVkIHJhdGhlciB0aGFuIHByb2Nlc3NlZC4KY29weSA9IFxcLnBuZ1wk
IApjb3B5ID0gXFwuZ2lmXCQgCgojIGJ5IGRlZmF1bHQsIGV2ZXJ5dGhpbmcgbm90IGlnbm9y
ZWQgb3IgY29waWVkIGlzIGFjY2VwdGVkOyBhZGQgJ2FjY2VwdCcKIyBsaW5lcyBpZiB5b3Ug
d2FudCB0byBmaWx0ZXIgZnVydGhlci4gZS5nLgojCiMgICAgYWNjZXB0ID0gXFwuaHRtbFwk
CiMgICAgYWNjZXB0ID0gXFwudHQyXCQKCiMgb3B0aW9ucyB0byByZXdyaXRlIGZpbGVzIHN1
ZmZpeGVzIChodG0gPT4gaHRtbCwgdHQyID0+IGh0bWwpCiMKIyAgICBzdWZmaXggaHRtPWh0
bWwKIyAgICBzdWZmaXggdHQyPWh0bWwKCiMgb3B0aW9ucyB0byBkZWZpbmUgZGVwZW5kZW5j
aWVzIGJldHdlZW4gdGVtcGxhdGVzCiMKIyAgICBkZXBlbmQgKj1oZWFkZXIsZm9vdGVyLG1l
bnUKIyAgICBkZXBlbmQgaW5kZXguaHRtbD1tYWlucGFnZSxzaWRlYmFyCiMgICAgZGVwZW5k
IG1lbnU9bWVudWl0ZW0sbWVudWJhcgojIAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoZSBm
b2xsb3dpbmcgb3B0aW9ucyB1c3VhbGx5IHJlbGF0ZSB0byBhIHBhcnRpY3VsYXIgcHJvamVj
dCBzbyAKIyB5b3UnbGwgcHJvYmFibHkgd2FudCB0byBwdXQgdGhlbSBpbiBhIHNlcGFyYXRl
IGNvbmZpZ3VyYXRpb24gZmlsZSAKIyBpbiB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSB0
aGUgJ2NmZycgb3B0aW9uIGFuZCB0aGVuIGludm9rZSB0cmVlIAojIHVzaW5nICctZicgdG8g
dGVsbCBpdCB3aGljaCBjb25maWd1cmF0aW9uIHlvdSB3YW50IHRvIHVzZS4KIyBIb3dldmVy
LCB0aGVyZSdzIG5vdGhpbmcgdG8gc3RvcCB5b3UgZnJvbSBhZGRpbmcgZGVmYXVsdCAnc3Jj
JywKIyAnZGVzdCcgb3IgJ2xpYicgb3B0aW9ucyBpbiB0aGUgLnR0cmVlcmMuICBUaGUgJ3Ny
YycgYW5kICdkZXN0JyBvcHRpb25zCiMgY2FuIGJlIHJlLWRlZmluZWQgaW4gYW5vdGhlciBj
b25maWd1cmF0aW9uIGZpbGUsIGJ1dCBiZSBhd2FyZSB0aGF0ICdsaWInIAojIG9wdGlvbnMg
YWNjdW11bGF0ZSBzbyBhbnkgJ2xpYicgb3B0aW9ucyBkZWZpbmVkIGluIHRoZSAudHRyZWVy
YyB3aWxsCiMgYmUgYXBwbGllZCBldmVyeSB0aW1lIHlvdSBydW4gdHRyZWUuCiMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIyAjIGRpcmVjdG9yeSBjb250YWluaW5nIHNvdXJjZSBwYWdlIHRlbXBs
YXRlcwojIHNyYyA9IC9wYXRoL3RvL3lvdXIvc291cmNlL3BhZ2UvdGVtcGxhdGVzCiMKIyAj
IGRpcmVjdG9yeSB3aGVyZSBvdXRwdXQgZmlsZXMgc2hvdWxkIGJlIHdyaXR0ZW4KIyBkZXN0
ID0gL3BhdGgvdG8veW91ci9odG1sL291dHB1dC9kaXJlY3RvcnkKIyAKIyAjIGFkZGl0aW9u
YWwgZGlyZWN0b3JpZXMgb2YgbGlicmFyeSB0ZW1wbGF0ZXMKIyBsaWIgPSAvZmlyc3QvcGF0
aC90by95b3VyL2xpYnJhcnkvdGVtcGxhdGVzCiMgbGliID0gL3NlY29uZC9wYXRoL3RvL3lv
dXIvbGlicmFyeS90ZW1wbGF0ZXMKDQpFTkRfT0ZfQ09ORklHCgogICAgY2xvc2UoQ09ORklH
KTsKICAgIHByaW50ICIkZmlsZSBjcmVhdGVkLiAgUGxlYXNlIGVkaXQgYWNjb3JkaW5nbHkg
YW5kIHJlLXJ1biAkTkFNRVxuIjsgCg0KfQoNCnN1YiB0ZW1wbGF0ZSB7DQogIG15ICRzZWxm
ID0gc2hpZnQ7DQogIHJldHVybiAoQF8pID8gJHNlbGYtPntfdGVtcGxhdGV9ID0gc2hpZnQg
OiAkc2VsZi0+e190ZW1wbGF0ZX07DQp9DQoNCnN1YiB0dG1vZHVsZSB7DQogIG15ICRzZWxm
ID0gc2hpZnQ7DQogIHJldHVybiAoQF8pID8gJHNlbGYtPntfdHRtb2R1bGV9ID0gc2hpZnQg
OiAkc2VsZi0+e190dG1vZHVsZX07DQp9DQoNCnN1YiBjb25maWcgew0KICBteSAkc2VsZiA9
IHNoaWZ0Ow0KICByZXR1cm4gKEBfKSA/ICRzZWxmLT57X2NvbmZpZ30gPSBzaGlmdCA6ICRz
ZWxmLT57X2NvbmZpZ307DQp9DQoNCnN1YiB0dG9wdHMgew0KICBteSAkc2VsZiA9IHNoaWZ0
Ow0KICByZXR1cm4gKEBfKSA/ICRzZWxmLT57X3R0b3B0c30gPSBzaGlmdCA6ICRzZWxmLT57
X3R0b3B0c307DQp9DQoNCnN1YiB1Y3R0b3B0cyB7DQogIG15ICRzZWxmID0gc2hpZnQ7DQog
IHJldHVybiAoQF8pID8gJHNlbGYtPntfdWN0dG9wdHN9ID0gc2hpZnQgOiAkc2VsZi0+e191
Y3R0b3B0c307DQp9DQoNCnN1YiBkZXBlbmRzIHsNCiAgbXkgJHNlbGYgPSBzaGlmdDsNCiAg
cmV0dXJuIChAXykgPyAkc2VsZi0+e19kZXBlbmRzfSA9IHNoaWZ0IDogJHNlbGYtPntfZGVw
ZW5kc307DQp9DQoNCjE7DQpfX0VORF9fDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBJTVBP
UlRBTlQgTk9URQojICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGdlbmVyYXRlZCBhdXRvbWF0
aWNhbGx5IGZyb20gc291cmNlCiMgICB0ZW1wbGF0ZXMuICBBbnkgY2hhbmdlcyB5b3UgbWFr
ZSBoZXJlIG1heSBiZSBsb3N0LgojIAojICAgVGhlICdkb2NzcmMnIGRvY3VtZW50YXRpb24g
c291cmNlIGJ1bmRsZSBpcyBhdmFpbGFibGUgZm9yIGRvd25sb2FkCiMgICBmcm9tIGh0dHA6
Ly93d3cudGVtcGxhdGUtdG9vbGtpdC5vcmcvZG9jcy5odG1sIGFuZCBjb250YWlucyBhbGwK
IyAgIHRoZSBzb3VyY2UgdGVtcGxhdGVzLCBYTUwgZmlsZXMsIHNjcmlwdHMsIGV0Yy4sIGZy
b20gd2hpY2ggdGhlCiMgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgVGVtcGxhdGUgVG9vbGtp
dCBpcyBidWlsdC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPWhlYWQxIE5BTUUKDQpUZW1wbGF0
ZTo6VFRyZWUgLSBtb2R1bGFyaXplZCB2ZXJzaW9uIG9mIHRoZSBUZW1wbGF0ZSBUb29sa2l0
J3MgdHRyZWUgc2NyaXB0DQoKPWhlYWQxIFNZTk9QU0lTCgogICAgdXNlIFRlbXBsYXRlOjpU
VHJlZTsNCg0KICAgIG15ICR0dHJlZSA9IFRlbXBsYXRlOjpUVHJlZS0+bmV3KHsgY29uZmln
ID0+ICcvaG9tZS9hYncvLnR0cmVlcmMnIH0pDQogICAgICAgICB8fCBkaWUgIiRUZW1wbGF0
ZTo6X0VSUk9SXG4iOw0KDQogICAgJHR0cmVlLT5wcm9jZXNzX3RyZWUoKTsKDQo9aGVhZDEg
REVTQ1JJUFRJT04KDQpUZW1wbGF0ZTo6VFRyZWUgaXMgYSBtb2R1bGFyaXplZCB2ZXJzaW9u
IG9mIHRoZSBUZW1wbGF0ZSBUb29sa2l0J3MgdHRyZWUgc2NyaXB0Lg0KDQpUaGUgRjxUZW1w
bGF0ZTo6VFRyZWU+IG1vZHVsZSBpcyB1c2VkIHRvIHByb2Nlc3MgZW50aXJlIGRpcmVjdG9y
eSB0cmVlcyANCmNvbnRhaW5pbmcgdGVtcGxhdGUgZmlsZXMuICBUaGUgcmVzdWx0aW5nIG91
dHB1dCBmcm9tIHByb2Nlc3NpbmcgZWFjaCBmaWxlDQppcyB0aGVuIHdyaXR0ZW4gdG8gYSBj
b3JyZXNwb25kaW5nIGZpbGUgaW4gYSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuICBUaGUgbW9k
dWxlCmNvbXBhcmVzIHRoZSBtb2RpZmljYXRpb24gdGltZXMgb2Ygc291cmNlIGFuZCBkZXN0
aW5hdGlvbiBmaWxlcyAod2hlcmUKdGhleSBhbHJlYWR5IGV4aXN0KSBhbmQgcHJvY2Vzc2Vz
IG9ubHkgdGhvc2UgZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuCgpJdCBzdXBwb3J0
cyBhIG51bWJlciBvZiBvcHRpb25zIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZQpi
ZWhhdmlvdXIsIGRlZmluZSBsb2NhdGlvbnMgYW5kIHNldCBUZW1wbGF0ZSBUb29sa2l0IG9w
dGlvbnMuICBUaGUKbW9kdWxlIHRha2VzIGEgY29uZmlnIGFyZ3VtZW50IHdoaWNoIGNvbnRh
aW5zIGEgZnVsbHBhdGggdG8gYSBGPC50dHJlZXJjPg0KY29uZmlndXJhdGlvbiBmaWxlLg0K
Cj1oZWFkMiBUaGUgRjwudHRyZWVyYz4gQ29uZmlndXJhdGlvbiBGaWxlCgpXaGVuIHlvdSBp
bnZva2UgdGhlIHdyaXRlX2NvbmZpZyBtZXRob2QgaXQgd2lsbCBjcmVhdGUgYSBGPC50dHJl
ZXJjPiBmaWxlDQpmb3IgeW91IGluIHRoZSBmaWxlIHRoYXQgeW91IHNwZWNpZnkgYXMgYW4g
YXJndW1lbnQuCgogICAgVGVtcGxhdGU6OlRUcmVlOjp3cml0ZV9jb25maWcoJy9ob21lL2Fi
dy8udHRyZWVyYycpOwogICAgL2hvbWUvYWJ3Ly50dHJlZXJjIGNyZWF0ZWQuICBQbGVhc2Ug
ZWRpdCBhY2NvcmRpbmdseSBhbmQgcmUtcnVuIHR0cmVlCgpUaGUgcHVycG9zZSBvZiB0aGlz
IGZpbGUgaXMgdG8gc2V0IGFueSBJPGdsb2JhbD4gY29uZmlndXJhdGlvbiBvcHRpb25zCnRo
YXQgeW91IHdhbnQgYXBwbGllZCBJPGV2ZXJ5PiB0aW1lIEY8VGVtcGxhdGU6OlRUcmVlPiBp
cyBydW4uICBGb3IgZXhhbXBsZSwNCnlvdSBjYW4gdXNlIHRoZSBDPGlnbm9yZT4gYW5kIEM8
Y29weT4gb3B0aW9uIHRvIHByb3ZpZGUgcmVndWxhciBleHByZXNzaW9ucwp0aGF0IHNwZWNp
Znkgd2hpY2ggZmlsZXMgc2hvdWxkIGJlIGlnbm9yZWQgYW5kIHdoaWNoIHNob3VsZCBiZSBj
b3BpZWQgCnJhdGhlciB0aGFuIGJlaW5nIHByb2Nlc3NlZCBhcyB0ZW1wbGF0ZXMuICBZb3Ug
bWF5IGFsc28gd2FudCB0byBzZXQgCmZsYWdzIGxpa2UgQzx2ZXJib3NlPiBhbmQgQzxyZWN1
cnNlPiBhY2NvcmRpbmcgdG8geW91ciBwcmVmZXJlbmNlLgoKQSBtaW5pbWFsIEY8LnR0cmVl
cmM+OgoKICAgICMgaWdub3JlIHRoZXNlIGZpbGVzCiAgICBpZ25vcmUgPSBcYihDVlN8UkNT
KVxiCiAgICBpZ25vcmUgPSBeIwogICAgaWdub3JlID0gfiQKCiAgICAjIGNvcHkgdGhlc2Ug
ZmlsZXMKICAgIGNvcHkgICA9IFwuKGdpZnxwbmd8anBnfHBkZikkIAoKICAgICMgcmVjdXJz
ZSBpbnRvIGRpcmVjdG9yaWVzCiAgICByZWN1cnNlCgogICAgIyBwcm92aWRlIGluZm8gYWJv
dXQgd2hhdCdzIGdvaW5nIG9uCiAgICB2ZXJib3NlCgpJbiBtb3N0IGNhc2VzLCB5b3UnbGwg
d2FudCB0byBjcmVhdGUgYSBkaWZmZXJlbnQgRjx0dHJlZT4gY29uZmlndXJhdGlvbiAKZmls
ZSBmb3IgZWFjaCBwcm9qZWN0IHlvdSdyZSB3b3JraW5nIG9uLiAgVGhlIEM8Y2ZnPiBvcHRp
b24gYWxsb3dzIHlvdQp0byBzcGVjaWZ5IGEgZGlyZWN0b3J5IHdoZXJlIEY8VGVtcGxhdGU6
OlRUcmVlPiBjYW4gZmluZCBmdXJ0aGVyIGNvbmZpZ3VyYXRpb24gCmZpbGVzLgoKICAgIGNm
ZyA9IC9ob21lL2Fidy8udHRyZWUKClRoZSBDPGNmZz4gb3B0aW9uIGNhbiBvbmx5IGJlIHVz
ZWQgaW4gdGhlIEY8LnR0cmVlcmM+IGZpbGUuICBBbGwgdGhlCm90aGVyIG9wdGlvbnMgY2Fu
IGJlIHVzZWQgaW4gdGhlIEY8LnR0cmVlcmM+IG9yIGFueSBvdGhlciBGPFRlbXBsYXRlOjpU
VHJlZT4KY29uZmlndXJhdGlvbiBmaWxlLg0KCkNlcnRhaW4gb3B0aW9ucyBsaWtlIEM8bGli
PiBjYW4gYmUgdXNlZCBhbnkgbnVtYmVyIG9mIHRpbWVzIGFuZCBhY2N1bXVsYXRlDQp0aGVp
ciB2YWx1ZXMuCgpGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBjb25maWd1
cmF0aW9uIGZpbGVzOgoKRjwvaG9tZS9hYncvLnR0cmVlcmM+OgoKICAgIGNmZyA9IC9ob21l
L2Fidy8udHRyZWUKICAgIGxpYiA9IC91c3IvbG9jYWwvdHQyL3RlbXBsYXRlcwoKRjwvaG9t
ZS9hYncvLnR0cmVlL215Y29uZmlnPjoKCiAgICBsaWIgPSAvaG9tZS9hYncvd2ViL2V4YW1w
bGUvdGVtcGxhdGVzL2xpYgoKV2hlbiBGPFRlbXBsYXRlOjpUVHJlZT4gaXMgaW52b2tlZCBh
cyBmb2xsb3dzOgoKICAgICQgbXkgJHR0cmVlID0gVGVtcGxhdGU6OlRUcmVlLT5uZXcoIHsg
Y29uZmlnID0+ICcvbXljb25maWcnIH0gKTsKCnRoZSBDPGxpYj4gb3B0aW9uIHdpbGwgYmUg
c2V0IHRvIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXM6CgogICAgL3Vzci9sb2NhbC90dDIv
dGVtcGxhdGVzCiAgICAvaG9tZS9hYncvd2ViL2V4YW1wbGUvdGVtcGxhdGVzL2xpYgoKQW55
IHRlbXBsYXRlcyBsb2NhdGVkIHVuZGVyIEY8L3Vzci9sb2NhbC90dDIvdGVtcGxhdGVzPiB3
aWxsIGJlIHVzZWQKaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBsb2NhdGVkIHVuZGVyCkY8L2hv
bWUvYWJ3L3dlYi9leGFtcGxlL3RlbXBsYXRlcy9saWI+LiAgVGhpcyBtYXkgYmUgd2hhdCB5
b3Ugd2FudCwKYnV0IHRoZW4gYWdhaW4sIGl0IG1pZ2h0IG5vdC4gIEZvciB0aGlzIHJlYXNv
biwgaXQgaXMgZ29vZCBwcmFjdGljZSB0bwprZWVwIHRoZSBGPC50dHJlZXJjPiBhcyBzaW1w
bGUgYXMgcG9zc2libGUgYW5kIHVzZSBkaWZmZXJlbnQKY29uZmlndXJhdGlvbiBmaWxlcyBm
b3IgZWFjaCBGPHR0cmVlPiBwcm9qZWN0LgoKPWhlYWQyIERpcmVjdG9yeSBPcHRpb25zCgpU
aGUgQzxzcmM+IG9wdGlvbiBpcyB1c2VkIHRvIGRlZmluZSB0aGUgZGlyZWN0b3J5IGNvbnRh
aW5pbmcgdGhlCnNvdXJjZSB0ZW1wbGF0ZXMgdG8gYmUgcHJvY2Vzc2VkLiAgSXQgY2FuIGJl
IHByb3ZpZGVkIGFzIGEgY29tbWFuZApsaW5lIG9wdGlvbiBvciBpbiBhIGNvbmZpZ3VyYXRp
b24gZmlsZSBhcyBzaG93biBoZXJlOgoKICAgIHNyYyA9IC9ob21lL2Fidy93ZWIvZXhhbXBs
ZS90ZW1wbGF0ZXMvc3JjCgpFYWNoIHRlbXBsYXRlIGluIHRoaXMgZGlyZWN0b3J5IHR5cGlj
YWxseSBjb3JyZXNwb25kcyB0byBhIHNpbmdsZQp3ZWIgcGFnZSBvciBvdGhlciBkb2N1bWVu
dC4gCgpUaGUgQzxkZXN0PiBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBkZXN0aW5h
dGlvbiBkaXJlY3RvcnkgZm9yIHRoZQpnZW5lcmF0ZWQgb3V0cHV0LgoKICAgIGRlc3QgPSAv
aG9tZS9hYncvd2ViL2V4YW1wbGUvaHRtbAoKVGhlIEM8bGliPiBvcHRpb24gaXMgdXNlZCB0
byBkZWZpbmUgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgY29udGFpbmluZwphZGRpdGlvbmFs
IGxpYnJhcnkgdGVtcGxhdGVzLiAgVGhlc2UgdGVtcGxhdGVzIGFyZSBub3QgZG9jdW1lbnRz
IGluCnRoZWlyIG93biByaWdodCBhbmQgdHlwaWNhbGx5IGNvbXByaXNlIG9mIHNtYWxsZXIs
IG1vZHVsYXIgY29tcG9uZW50cwpsaWtlIGhlYWRlcnMsIGZvb3RlcnMgYW5kIG1lbnVzIHRo
YXQgYXJlIGluY29ycG9yYXRlZCBpbnRvIHBhZ2VzIHRlbXBsYXRlcy4KCiAgICBsaWIgPSAv
aG9tZS9hYncvd2ViL2V4YW1wbGUvdGVtcGxhdGVzL2xpYgogICAgbGliID0gL3Vzci9sb2Nh
bC90dDIvdGVtcGxhdGVzCgpUaGUgQzxsaWI+IG9wdGlvbiBjYW4gYmUgdXNlZCByZXBlYXRl
ZGx5IHRvIGFkZCBmdXJ0aGVyIGRpcmVjdG9yaWVzIHRvCnRoZSBzZWFyY2ggcGF0aC4KCklm
IHRoZSBDPHJlY3Vyc2U+IG9wdGlvbiBpcyBzZXQgdGhlbiBpdCB3aWxsIGFkZGl0aW9uYWxs
eSBpdGVyYXRlIGRvd24NCnRocm91Z2ggc3ViLWRpcmVjdG9yaWVzIGFuZCBwcm9jZXNzIGFu
ZCBvdGhlciB0ZW1wbGF0ZSBmaWxlcyBpdCBmaW5kcwp0aGVyZWluLgoKICAgIHJlY3Vyc2Ug
PSAxIAoKSWYgYSB0ZW1wbGF0ZSBoYXMgYmVlbiBwcm9jZXNzZWQgcHJldmlvdXNseSwgRjxU
ZW1wbGF0ZTo6VFRyZWU+IHdpbGwgY29tcGFyZQ0KdGhlIG1vZGlmaWNhdGlvbiB0aW1lcyBv
ZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmaWxlcy4gIElmIHRoZSBzb3VyY2UKdGVt
cGxhdGUgKG9yIG9uZSBpdCBpcyBkZXBlbmRhbnQgb24pIGhhcyBub3QgYmVlbiBtb2RpZmll
ZCBtb3JlIHJlY2VudGx5DQp0aGFuIHRoZSBnZW5lcmF0ZWQgb3V0cHV0IGZpbGUgdGhlbiBG
PFRlbXBsYXRlOjpUVHJlZT4gd2lsbCBub3QgcHJvY2VzcwppdC4gIFRoZSBGPGFsbD4gb3B0
aW9uIGNhbiBiZSB1c2VkIHRvIGZvcmNlIEY8VGVtcGxhdGU6OlRUcmVlPiB0byBwcm9jZXNz
CmFsbCBmaWxlcyByZWdhcmRsZXNzIG9mIG1vZGlmaWNhdGlvbiB0aW1lLgoKICAgIGFsbCA9
IDEKCj1oZWFkMiBGaWxlIE9wdGlvbnMKClRoZSBDPGlnbm9yZT4sIEM8Y29weT4gYW5kIEM8
YWNjZXB0PiBvcHRpb25zIGFyZSB1c2VkIHRvIHNwZWNpZnkgUGVybApyZWdleGVuIHRvIGZp
bHRlciBmaWxlIG5hbWVzLiAgRmlsZXMgdGhhdCBtYXRjaCBhbnkgb2YgdGhlIEM8aWdub3Jl
PgpvcHRpb25zIHdpbGwgbm90IGJlIHByb2Nlc3NlZC4gIFJlbWFpbmluZyBmaWxlcyB0aGF0
IG1hdGNoIGFueSBvZiB0aGUKQzxjb3B5PiByZWdleGVuIHdpbGwgYmUgY29waWVkIHRvIHRo
ZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuICBSZW1haW5pbmcKZmlsZXMgdGhhdCB0aGVuIG1h
dGNoIGFueSBvZiB0aGUgQzxhY2NlcHQ+IGNyaXRlcmlhIGFyZSB0aGVuIHByb2Nlc3NlZAp2
aWEgdGhlIFRlbXBsYXRlIFRvb2xraXQuICBJZiBubyBDPGFjY2VwdD4gcGFyYW1ldGVyIGlz
IHNwZWNpZmllZCB0aGVuIAphbGwgZmlsZXMgd2lsbCBiZSBhY2NlcHRlZCBmb3IgcHJvY2Vz
c2luZyBpZiBub3QgYWxyZWFkeSBjb3BpZWQgb3IKaWdub3JlZC4KCiAgICAjIGlnbm9yZSB0
aGVzZSBmaWxlcwogICAgaWdub3JlID0gXGIoQ1ZTfFJDUylcYgogICAgaWdub3JlID0gXiMK
ICAgIGlnbm9yZSA9IH4kCgogICAgIyBjb3B5IHRoZXNlIGZpbGVzCiAgICBjb3B5ICAgPSBc
LihnaWZ8cG5nfGpwZ3xwZGYpJCAKCiAgICAjIGFjY2VwdCBvbmx5IC50dDIgdGVtcGxhdGVz
CiAgICBhY2NlcHQgPSBcLnR0MiQKClRoZSBDPHN1ZmZpeD4gb3B0aW9uIGlzIHVzZWQgdG8g
ZGVmaW5lIG1hcHBpbmdzIGJldHdlZW4gdGhlIGZpbGUKZXh0ZW5zaW9ucyBmb3Igc291cmNl
IHRlbXBsYXRlcyBhbmQgdGhlIGdlbmVyYXRlZCBvdXRwdXQgZmlsZXMuICBUaGUKZm9sbG93
aW5nIGV4YW1wbGUgc3BlY2lmaWVzIHRoYXQgc291cmNlIHRlbXBsYXRlcyB3aXRoIGEgQzwu
dHQyPgpzdWZmaXggc2hvdWxkIGJlIG91dHB1dCBhcyBDPC5odG1sPiBmaWxlczoKCiAgICBz
dWZmaXggdHQyPWh0bWwKCllvdSBjYW4gcHJvdmlkZSBhbnkgbnVtYmVyIG9mIGRpZmZlcmVu
dCBzdWZmaXggbWFwcGluZ3MgYnkgcmVwZWF0aW5nIAp0aGlzIG9wdGlvbi4KCj1oZWFkMiBU
ZW1wbGF0ZSBEZXBlbmRlbmNpZXMKClRoZSBDPGRlcGVuZD4gYW5kIEM8ZGVwZW5kX2ZpbGU+
IG9wdGlvbnMgYWxsb3cgeW91IHRvIHNwZWNpZnkKaG93IGFueSBnaXZlbiB0ZW1wbGF0ZSBm
aWxlIGRlcGVuZHMgb24gYW5vdGhlciBmaWxlIG9yIGdyb3VwIG9mIGZpbGVzLiAKVGhlIEM8
ZGVwZW5kPiBvcHRpb24gaXMgdXNlZCB0byBleHByZXNzIGEgc2luZ2xlIGRlcGVuZGVuY3ku
CgogICAgZGVwZW5kIGZvbz1iYXIsYmF6CgpUaGlzIGV4YW1wbGUgc2hvd3MgdGhlIEM8LS1k
ZXBlbmQ+IG9wdGlvbiBiZWluZyB1c2VkIHRvIHNwZWNpZnkgdGhhdA0KdGhlIEY8Zm9vPiBm
aWxlIGlzIGRlcGVuZGFudCBvbiB0aGUgRjxiYXI+IGFuZCBGPGJhej4gdGVtcGxhdGVzLiAg
VGhpcw0Kb3B0aW9uIGNhbiBiZSB1c2VkIG1hbnkgdGltZXMgaW4gYSBjb25maWd1cmF0aW9u
IGZpbGU6CgogICAgZGVwZW5kIGZvbz1iYXIsYmF6CiAgICBkZXBlbmQgY3Jhc2g9YmFuZyx3
YWxsb3AKClRoZSBmaWxlIGFwcGVhcmluZyBvbiB0aGUgbGVmdCBvZiB0aGUgQzw9PiBpcyBz
cGVjaWZpZWQgcmVsYXRpdmUgdG8KdGhlIEM8c3JjPiBvciBDPGxpYj4gZGlyZWN0b3JpZXMu
ICBUaGUgZmlsZShzKSBhcHBlYXJpbmcgb24gdGhlIHJpZ2h0CmNhbiBiZSBzcGVjaWZpZWQg
cmVsYXRpdmUgdG8gYW55IG9mIHRoZXNlIGRpcmVjdG9yaWVzIG9yIGFzIGFic29sdXRlCmZp
bGUgcGF0aHMuCgpGb3IgZXhhbXBsZToKCiAgICBkZXBlbmQgZm9vPWJhciwvdG1wL2JhegoK
VG8gZGVmaW5lIGEgZGVwZW5kZW5jeSB0aGF0IGFwcGxpZXMgdG8gYWxsIGZpbGVzLCB1c2Ug
QzwqPiBvbiB0aGUgCmxlZnQgb2YgdGhlIEM8PT4uCgogICAgZGVwZW5kICo9aGVhZGVyLGZv
b3RlcgoKQW55IHRlbXBsYXRlcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSBDPHByZV9wcm9j
ZXNzPiwgQzxwb3N0X3Byb2Nlc3M+LApDPHByb2Nlc3M+IG9yIEM8d3JhcHBlcj4gb3B0aW9u
cyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhlCmxpc3Qgb2YgZ2xvYmFsIGRl
cGVuZGVuY2llcyB0aGF0IGFwcGx5IHRvIGFsbCB0ZW1wbGF0ZXMuCgpUaGUgQzxkZXBlbmRf
ZmlsZT4gb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBmaWxlIHRoYXQgY29udGFp
bnMKZGVwZW5kZW5jeSBpbmZvcm1hdGlvbi4gIAoKICAgIGRlcGVuZF9maWxlID0gL2hvbWUv
YWJ3L3dlYi9leGFtcGxlL2V0Yy90dHJlZS5kZXAKCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBh
IGRlcGVuZGVuY3kgZmlsZToKCiAgICAjIFRoaXMgaXMgYSBjb21tZW50LiBJdCBpcyBpZ25v
cmVkLgogIAogICAgaW5kZXguaHRtbDogaGVhZGVyIGZvb3RlciBtZW51YmFyIAogIAogICAg
aGVhZGVyOiB0aXRsZWJhciBob3RsaW5rcwogIAogICAgbWVudWJhcjogbWVudWl0ZW0KICAK
ICAgICMgc3Bhbm5pbmcgbXVsdGlwbGUgbGluZXMgd2l0aCB0aGUgYmFja3NsYXNoCiAgICBh
bm90aGVyLmh0bWw6IGhlYWRlciBmb290ZXIgbWVudWJhciBcCiAgICBzaWRlYmFyIHNlYXJj
aGZvcm0KCkxpbmVzIGJlZ2lubmluZyB3aXRoIHRoZSBDPCM+IGNoYXJhY3RlciBhcmUgY29t
bWVudHMgYW5kIGFyZSBpZ25vcmVkLgpCbGFuayBsaW5lcyBhcmUgYWxzbyBpZ25vcmVkLiAg
QWxsIG90aGVyIGxpbmVzIHNob3VsZCBwcm92aWRlIGEKZmlsZW5hbWUgZm9sbG93ZWQgYnkg
YSBjb2xvbiBhbmQgdGhlbiBhIGxpc3Qgb2YgZGVwZW5kYW50IGZpbGVzCnNlcGFyYXRlZCBi
eSB3aGl0ZXNwYWNlLCBjb21tYXMgb3IgYm90aC4gIFdoaXRlc3BhY2UgYXJvdW5kIHRoZSBj
b2xvbgppcyBhbHNvIG9wdGlvbmFsLiAgTGluZXMgZW5kaW5nIGluIHRoZSBDPFw+IGNoYXJh
Y3RlciBhcmUgY29udGludWVkCm9udG8gdGhlIGZvbGxvd2luZyBsaW5lLgoKRmlsZXMgdGhh
dCBjb250YWluIHNwYWNlcyBjYW4gYmUgcXVvdGVkLiBUaGF0IGlzIG9ubHkgbmVjZXNzYXJ5
CmZvciBmaWxlcyBhZnRlciB0aGUgY29sb24gKCc6JykuIFRoZSBmaWxlIGJlZm9yZSB0aGUg
Y29sb24gbWF5IGJlCnF1b3RlZCBpZiBpdCBjb250YWlucyBhIGNvbG9uLiAKCkFzIHdpdGgg
dGhlIGNvbW1hbmQgbGluZSBvcHRpb25zLCB0aGUgQzwqPiBjaGFyYWN0ZXIgY2FuIGJlIHVz
ZWQKYXMgYSB3aWxkY2FyZCB0byBzcGVjaWZ5IGEgZGVwZW5kZW5jeSBmb3IgYWxsIHRlbXBs
YXRlcy4KCiAgICAqIDogY29uZmlnLGhlYWRlcgoKPWhlYWQyIFRlbXBsYXRlIFRvb2xraXQg
T3B0aW9ucwoKRjxUZW1wbGF0ZTo6VFRyZWU+IGFsc28gcHJvdmlkZXMgYWNjZXNzIHRvIHRo
ZSB1c3VhbCByYW5nZSBvZiBUZW1wbGF0ZQ0KVG9vbGtpdCBvcHRpb25zLiAgRm9yIGV4YW1w
bGUsIHRoZSBDPHByZV9jaG9tcD4gYW5kIEM8cG9zdF9jaG9tcD4gDQpGPFRlbXBsYXRlOjpU
VHJlZT4gb3B0aW9ucyBjb3JyZXNwb25kIHRvIHRoZSBDPFBSRV9DSE9NUD4gYW5kIEM8UE9T
VF9DSE9NUD4NCm9wdGlvbnMuCg0KT3B0aW9uczoKICAgIGFsbCAgICAgICAgICAgICAgICAg
ICAgICBQcm9jZXNzIGFsbCBmaWxlcywgcmVnYXJkbGVzcyBvZiBtb2RpZmljYXRpb24KICAg
IHJlY3Vyc2UgICAgICAgICAgICAgICAgICBSZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yaWVz
CiAgICBwcmVzZXJ2ZSAgICAgICAgICAgICAgICAgUHJlc2VydmUgZmlsZSBvd25lcnNoaXAg
YW5kIHBlcm1pc3Npb24KICAgIG5vdGhpbmcgICAgICAgICAgICAgICAgICBEbyBub3RoaW5n
LCBqdXN0IHByaW50IHN1bW1hcnkgKGVuYWJsZXMgLXYpCiAgICB2ZXJib3NlICAgICAgICAg
ICAgICAgICAgVmVyYm9zZSBtb2RlCiAgICBzcmMgPSBESVIgICAgICAgICAgICAgICAgU291
cmNlIGRpcmVjdG9yeQogICAgZGVzdCA9IERJUiAgICAgICAgICAgICAgIERlc3RpbmF0aW9u
IGRpcmVjdG9yeQogICAgY2ZnID0gRElSICAgICAgICAgICAgICAgIExvY2F0aW9uIG9mIGNv
bmZpZ3VyYXRpb24gZmlsZXMKICAgIGxpYiA9IERJUiAgICAgICAgICAgICAgICBMaWJyYXJ5
IGRpcmVjdG9yeSAoSU5DTFVERV9QQVRIKSAgKG11bHRpcGxlKQogICAgZmlsZSA9IEZJTEUg
ICAgICAgICAgICAgIFJlYWQgbmFtZWQgY29uZmlndXJhdGlvbiBmaWxlICAgICAobXVsdGlw
bGUpCgpGaWxlIHNlYXJjaCBzcGVjaWZpY2F0aW9ucyAoYWxsIG1heSBhcHBlYXIgbXVsdGlw
bGUgdGltZXMpOgogICAgaWdub3JlID0gUkVHRVggICAgICAgICAgIElnbm9yZSBmaWxlcyBt
YXRjaGluZyBSRUdFWAogICAgY29weSA9IFJFR0VYICAgICAgICAgICAgIENvcHkgZmlsZXMg
bWF0Y2hpbmcgUkVHRVgKICAgIGFjY2VwdCA9IFJFR0VYICAgICAgICAgICBQcm9jZXNzIG9u
bHkgZmlsZXMgbWF0Y2hpbmcgUkVHRVggCgpGaWxlIERlcGVuZGVuY2llcyBPcHRpb25zOgog
ICAgZGVwZW5kIGZvbz1iYXIsYmF6ICAgICAgIFNwZWNpZnkgdGhhdCAnZm9vJyBkZXBlbmRz
IG9uICdiYXInIGFuZCAnYmF6Jy4KICAgIGRlcGVuZF9maWxlIEZJTEUgICAgICAgICBSZWFk
IGZpbGUgZGVwZW5kYW5jaWVzIGZyb20gRklMRS4KICAgIGRlcGVuZF9kZWJ1ZyAgICAgICAg
ICAgICBFbmFibGUgZGVidWdnaW5nIGZvciBkZXBlbmRlbmNpZXMKCkZpbGUgc3VmZml4IHJl
d3JpdGluZyAobWF5IGFwcGVhciBtdWx0aXBsZSB0aW1lcykKICAgIHN1ZmZpeCBvbGQ9bmV3
ICAgICAgICAgICBDaGFuZ2UgYW55ICcub2xkJyBzdWZmaXggdG8gJy5uZXcnCgpBZGRpdGlv
bmFsIG9wdGlvbnMgdG8gc2V0IFRlbXBsYXRlIFRvb2xraXQgY29uZmlndXJhdGlvbiBpdGVt
czoKICAgIGRlZmluZSB2YXI9dmFsdWUgICAgICAgICBEZWZpbmUgdGVtcGxhdGUgdmFyaWFi
bGUKICAgIGludGVycG9sYXRlICAgICAgICAgICAgICBJbnRlcnBvbGF0ZSAnXCR2YXInIHJl
ZmVyZW5jZXMgaW4gdGV4dAogICAgYW55Y2FzZSAgICAgICAgICAgICAgICAgIEFjY2VwdCBk
aXJlY3RpdmUga2V5d29yZHMgaW4gYW55IGNhc2UuCiAgICBwcmVfY2hvbXAgICAgICAgICAg
ICAgICAgQ2hvbXAgbGVhZGluZyB3aGl0ZXNwYWNlIAogICAgcG9zdF9jaG9tcCAgICAgICAg
ICAgICAgIENob21wIHRyYWlsaW5nIHdoaXRlc3BhY2UKICAgIHRyaW0gICAgICAgICAgICAg
ICAgICAgICBUcmltIGJsYW5rIGxpbmVzIGFyb3VuZCB0ZW1wbGF0ZSBibG9ja3MKICAgIGV2
YWxfcGVybCAgICAgICAgICAgICAgICBFdmFsdWF0ZSBbJSBQRVJMICVdIC4uLiBbJSBFTkQg
JV0gY29kZSBibG9ja3MKICAgIGxvYWRfcGVybCAgICAgICAgICAgICAgICBMb2FkIHJlZ3Vs
YXIgUGVybCBtb2R1bGVzIHZpYSBVU0UgZGlyZWN0aXZlCiAgICBhYnNvbHV0ZSAgICAgICAg
ICAgICAgICAgRW5hYmxlIHRoZSBBQlNPTFVURSBvcHRpb24KICAgIHJlbGF0aXZlICAgICAg
ICAgICAgICAgICBFbmFibGUgdGhlIFJFTEFUSVZFIG9wdGlvbgogICAgcHJlX3Byb2Nlc3M9
VEVNUExBVEUgICAgIFByb2Nlc3MgVEVNUExBVEUgYmVmb3JlIGVhY2ggbWFpbiB0ZW1wbGF0
ZQogICAgcG9zdF9wcm9jZXNzPVRFTVBMQVRFICAgIFByb2Nlc3MgVEVNUExBVEUgYWZ0ZXIg
ZWFjaCBtYWluIHRlbXBsYXRlCiAgICBwcm9jZXNzPVRFTVBMQVRFICAgICAgICAgUHJvY2Vz
cyBURU1QTEFURSBpbnN0ZWFkIG9mIG1haW4gdGVtcGxhdGUKICAgIHdyYXBwZXI9VEVNUExB
VEUgICAgICAgICBQcm9jZXNzIFRFTVBMQVRFIHdyYXBwZXIgYXJvdW5kIG1haW4gdGVtcGxh
dGUKICAgIGRlZmF1bHQ9VEVNUExBVEUgICAgICAgICBVc2UgVEVNUExBVEUgYXMgZGVmYXVs
dAogICAgZXJyb3I9VEVNUExBVEUgICAgICAgICAgIFVzZSBURU1QTEFURSB0byBoYW5kbGUg
ZXJyb3JzCiAgICBkZWJ1Zz1TVFJJTkcgICAgICAgICAgICAgU2V0IFRUIERFQlVHIG9wdGlv
biB0byBTVFJJTkcKICAgIHN0YXJ0X3RhZz1TVFJJTkcgICAgICAgICBTVFJJTkcgZGVmaW5l
cyBzdGFydCBvZiBkaXJlY3RpdmUgdGFnCiAgICBlbmRfdGFnPVNUUklORyAgICAgICAgICAg
U1RSSU5HIGRlZmluZWQgZW5kIG9mIGRpcmVjdGl2ZSB0YWcKICAgIHRhZ19zdHlsZT1TVFlM
RSAgICAgICAgICBVc2UgcHJlLWRlZmluZWQgdGFnIFNUWUxFICAgIAogICAgcGx1Z2luX2Jh
c2U9UEFDS0FHRSAgICAgIEJhc2UgUEFDS0FHRSBmb3IgcGx1Z2lucyAgICAgICAgICAgIAog
ICAgY29tcGlsZV9leHQ9U1RSSU5HICAgICAgIEZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxl
ZCB0ZW1wbGF0ZSBmaWxlcwogICAgY29tcGlsZV9kaXI9RElSICAgICAgICAgIERpcmVjdG9y
eSBmb3IgY29tcGlsZWQgdGVtcGxhdGUgZmlsZXMKICAgIHBlcmw1bGliPURJUiAgICAgICAg
ICAgICBTcGVjaWZ5IGFkZGl0aW9uYWwgUGVybCBsaWJyYXJ5IGRpcmVjdG9yaWVzCiAgICB0
ZW1wbGF0ZV9tb2R1bGU9TU9EVUxFICAgU3BlY2lmeSBhbHRlcm5hdGUgVGVtcGxhdGUgbW9k
dWxlCgo9aGVhZDEgQVVUSE9SUwoKQW5keSBXYXJkbGV5IEU8bHQ+YWJ3QGFuZHl3YXJkbGV5
LmNvbUU8Z3Q+CgpMPGh0dHA6Ly93d3cuYW5keXdhcmRsZXkuY29tL3xodHRwOi8vd3d3LmFu
ZHl3YXJkbGV5LmNvbS8+CgpXaXRoIGNvbnRyaWJ1dGlvbnMgZnJvbSBEeWxhbiBXaWxsaWFt
IEhhcmRpc29uIChzdXBwb3J0IGZvcgpkZXBlbmRlbmNpZXMpLCBCcnljZSBIYXJyaW5ndG9u
IChDPGFic29sdXRlPiBhbmQgQzxyZWxhdGl2ZT4gb3B0aW9ucyksCk1hcmsgQW5kZXJzb24g
KEM8c3VmZml4PiBhbmQgQzxkZWJ1Zz4gb3B0aW9ucyksIEhhcmFsZCBKb2VyZyBhbmQgTGVv
bgpCcm9jYXJkIHdobyBnZXRzIGV2ZXJ5d2hlcmUsIGl0IHNlZW1zLCBhbmQgQ2hyaXN0b3Bo
ZXIgVGFyYW50by4KCj1oZWFkMSBWRVJTSU9OCgoyLjc1LCBkaXN0cmlidXRlZCBhcyBwYXJ0
IG9mIHRoZSBUZW1wbGF0ZSBUb29sa2l0IHZlcnNpb24gMi4xMywgDQpyZWxlYXNlZCBvbiAz
MCBKYW51YXJ5IDIwMDQuCgo9aGVhZDEgQ09QWVJJR0hUCgogIENvcHlyaWdodCAoQykgMTk5
Ni0yMDA0IEFuZHkgV2FyZGxleS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgQ29weXJpZ2h0
IChDKSAxOTk4LTIwMDIgQ2Fub24gUmVzZWFyY2ggQ2VudHJlIEV1cm9wZSBMdGQuCgpUaGlz
IG1vZHVsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKbW9kaWZ5IGl0IHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRzZWxmLgoKPWhl
YWQxIFNFRSBBTFNPCgpMPHR0cmVlfFRlbXBsYXRlOjpUb29sczo6dHRyZWU+Cg0KPWN1dA0K
------------1413C1DA3F8D18BE--
_______________________________________________
templates mailing list
templates@xxxxxxxxxxxxxxxx.xxx
http://lists.template-toolkit.org/mailman/listinfo/templates
|
(message missing) |
|
[Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re[2]: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re: [Templates] Odd....
|
|
Re[2]: [Templates] Odd.... => Template::TTree
|
|
Re: Re[2]: [Templates] Odd.... => Template::TTree
|
Generated at 08:56 on 15 Mar 2005 by mariachi v0.52