<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>159101</bug_id>
          
          <creation_ts>2016-06-24 13:43:05 -0700</creation_ts>
          <short_desc>Add a ES6 generator benchmark</short_desc>
          <delta_ts>2016-06-24 13:59:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1205199</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-24 13:43:05 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205201</commentid>
    <comment_count>1</comment_count>
      <attachid>282015</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-24 13:52:13 -0700</bug_when>
    <thetext>Created attachment 282015
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205202</commentid>
    <comment_count>2</comment_count>
      <attachid>282015</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-24 13:56:39 -0700</bug_when>
    <thetext>Comment on attachment 282015
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=282015&amp;action=review

&gt; PerformanceTests/Basic/lexer_test.js:6
&gt; +&quot;use strict&quot;;
&gt; +load(&quot;lexer.js&quot;);
&gt; +let g = lex(&quot;10 print \&quot;hello, world!\&quot;\n20 end&quot;);
&gt; +for (let {string} of g)
&gt; +    print(string);
&gt; +

I will remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205203</commentid>
    <comment_count>3</comment_count>
      <attachid>282015</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-24 13:57:41 -0700</bug_when>
    <thetext>Comment on attachment 282015
the patch

rs=me. I&apos;ll look at this in more detail later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205204</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-24 13:59:46 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/202446</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282015</attachid>
            <date>2016-06-24 13:52:13 -0700</date>
            <delta_ts>2016-06-24 13:57:41 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>67867</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDI0NDMpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzNCBAQAorMjAxNi0wNi0yNCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIEVTNiBnZW5l
cmF0b3IgYmVuY2htYXJrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTkxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgYWRkcyBhIEJhc2ljIGludGVycHJldGVyIGxvb3NlbHkgYmFz
ZWQgb24gRUNNQS01NToKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9wdWJsaWNhdGlvbnMvZmlsZXMvRUNNQS1TVC1XSVRIRFJBV04vRUNNQS01NSwl
MjAxc3QlMjBFZGl0aW9uLCUyMEphbnVhcnklMjAxOTc4LnBkZgorICAgICAgICAKKyAgICAgICAg
SXQgaW5jbHVkZXMgYSBsZXhlciB0aGF0IGlzIGEgZ2VuZXJhdG9yLCBhIHBhcnNlciB0aGF0IHVz
ZXMgcmVndWxhciBleHByZXNzaW9ucywgYW5kIGFuIEFTVAorICAgICAgICB3YWxrIGludGVycHJl
dGVyIHdoZXJlIHRoZSB3YWxraW5nIGZ1bmN0aW9ucyBmb3Igc3RhdGVtZW50cyBhcmUgZ2VuZXJh
dG9ycyB0aGF0IGNhbGwgZWFjaAorICAgICAgICBvdGhlciB3aXRoIHlpZWxkKi4gVGhpcyBlbmFi
bGVzIHRoZSBpbnRlcnByZXRlciB0byBsb29rIGxpa2UgYW4gQVNUIHdhbGsgZXZlbiB0aG91Z2gg
aXQgY2FuCisgICAgICAgIHlpZWxkIGF0IElOUFVUIGFuZCBQUklOVCBzdGF0ZW1lbnRzLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBhbHNvIHVzZXMgZm9yLW9mLCBjbGFzc2VzLCBNYXAsIGFuZCBX
ZWFrTWFwLiBJdCBhbHNvIHVzZXMgZGVwcmVjYXRlZC1idXQtYXdlc29tZSBSZWdFeHAKKyAgICAg
ICAgZmVhdHVyZXMgbGlrZSBSZWdFeHAubGFzdE1hdGNoIGFuZCBSZWdFeHAucmlnaHRDb250ZXh0
LiBJIGRpZCBpdCB0aGF0IHdheSBiZWNhdXNlIHRoaXMgaXMKKyAgICAgICAgaG93IEkndmUgYWx3
YXlzIHdyaXR0ZW4gbGV4ZXJzIGluIGR5bmFtaWMgbGFuZ3VhZ2VzOyBzZWUgb2ZmbGluZWFzbSdz
IGxleCgpIG1ldGhvZCBpbgorICAgICAgICBwYXJzZXIucmIgZm9yIGV4YW1wbGUuCisgICAgICAg
IAorICAgICAgICBUaGUgYmVuY2htYXJrIHJ1bnMgYSBoYW5kZnVsIG9mIHNpbXBsZSBCYXNpYyBw
cm9ncmFtcy4gVGhlIGxvbmdlc3QtcnVubmluZyBvbmUgY29tcHV0ZXMKKyAgICAgICAgcHJpbWUg
bnVtYmVycy4KKyAgICAgICAgCisgICAgICAgIEluY2x1ZGVzIGEgY29tbWFuZC1saW5lIGFuZCB3
ZWIgaGFybmVzcy4gT24gbXkgbWFjaGluZSBpdCBydW5zIGluIDItMyBzZWNvbmRzLgorCisgICAg
ICAgICogQmFzaWM6IEFkZGVkLgorICAgICAgICAqIEJhc2ljL2FzdC5qczogQWRkZWQuCisgICAg
ICAgIChCYXNpYy5OdW1iZXJBcHBseSk6CisgICAgICAgIChCYXNpYy5WYXJpYWJsZSk6CisgICAg
ICAgIChCYXNpYy5Db25zdCk6CisgICAgICAgIChCYXNpYy5OdW1iZXJQb3cpOgorICAgICAgICAo
QmFzaWMuTnVtYmVyTXVsKToKKyAgICAgICAgKEJhc2ljLk51bWJlckRpdik6CisgICAgICAgIChC
YXNpYy5OdW1iZXJOZWcpOgorICAgICAgICAoQmFzaWMuTnVtYmVyQWRkKToKKyAgICAgICAgKEJh
c2ljLk51bWJlclN1Yik6CisgICAgICAgIChCYXNpYy5TdHJpbmdWYXIpOgorICAgICAgICAoQmFz
aWMuRXF1YWxzKToKKyAgICAgICAgKEJhc2ljLk5vdEVxdWFscyk6CisgICAgICAgIChCYXNpYy5M
ZXNzVGhhbik6CisgICAgICAgIChCYXNpYy5HcmVhdGVyVGhhbik6CisgICAgICAgIChCYXNpYy5M
ZXNzRXF1YWwpOgorICAgICAgICAoQmFzaWMuR3JlYXRlckVxdWFsKToKKyAgICAgICAgKEJhc2lj
LkdvVG8pOgorICAgICAgICAoQmFzaWMuR29TdWIpOgorICAgICAgICAoQmFzaWMuRGVmKToKKyAg
ICAgICAgKEJhc2ljLkxldCk6CisgICAgICAgIChCYXNpYy5JZik6CisgICAgICAgIChCYXNpYy5S
ZXR1cm4pOgorICAgICAgICAoQmFzaWMuU3RvcCk6CisgICAgICAgIChCYXNpYy5Pbik6CisgICAg
ICAgIChzaWRlU3RhdGUuc2hvdWxkU3RvcCk6CisgICAgICAgIChCYXNpYy5Gb3IpOgorICAgICAg
ICAoQmFzaWMuTmV4dCk6CisgICAgICAgIChCYXNpYy5QcmludCk6CisgICAgICAgIChCYXNpYy5J
bnB1dCk6CisgICAgICAgIChCYXNpYy5SZWFkKToKKyAgICAgICAgKEJhc2ljLlJlc3RvcmUpOgor
ICAgICAgICAoQmFzaWMuRGltKToKKyAgICAgICAgKEJhc2ljLlJhbmRvbWl6ZSk6CisgICAgICAg
IChCYXNpYy5FbmQpOgorICAgICAgICAoQmFzaWMuUHJvZ3JhbSk6CisgICAgICAgICogQmFzaWMv
YmFzaWMuanM6IEFkZGVkLgorICAgICAgICAocHJlcGFyZSk6CisgICAgICAgIChzaW11bGF0ZSk6
CisgICAgICAgICogQmFzaWMvYmVuY2htYXJrLmpzOiBBZGRlZC4KKyAgICAgICAgKEJlbmNobWFy
ayk6CisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJ1bkl0ZXJhdGlvbi5leHBlY3QpOgor
ICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5ydW5JdGVyYXRpb24pOgorICAgICAgICAocnVu
QmVuY2htYXJrKToKKyAgICAgICAgKiBCYXNpYy9jYXNlbGVzc19tYXAuanM6IEFkZGVkLgorICAg
ICAgICAoQ2FzZWxlc3NNYXApOgorICAgICAgICAqIEJhc2ljL2xleGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxleC5jb25zdW1lV2hpdGVzcGFjZSk6CisgICAgICAgIChsZXguY29uc3VtZSk6Cisg
ICAgICAgIChsZXgpOgorICAgICAgICAqIEJhc2ljL2xleGVyX3Rlc3QuanM6IEFkZGVkLgorICAg
ICAgICAqIEJhc2ljL251bWJlci5qczogQWRkZWQuCisgICAgICAgIChOdW1iZXJWYWx1ZSk6Cisg
ICAgICAgIChOdW1iZXJWYWx1ZS5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKE51bWJl
clZhbHVlLnByb3RvdHlwZS5hcHBseSk6CisgICAgICAgIChOdW1iZXJWYWx1ZS5wcm90b3R5cGUu
bGVmdEFwcGx5KToKKyAgICAgICAgKE51bWJlclZhbHVlLnByb3RvdHlwZS5hc3NpZ24pOgorICAg
ICAgICAoTnVtYmVyQXJyYXkuKToKKyAgICAgICAgKE51bWJlckFycmF5KToKKyAgICAgICAgKE51
bWJlckFycmF5LnByb3RvdHlwZS5hcHBseSk6CisgICAgICAgIChOdW1iZXJBcnJheS5wcm90b3R5
cGUubGVmdEFwcGx5KToKKyAgICAgICAgKE51bWJlckZ1bmN0aW9uKToKKyAgICAgICAgKE51bWJl
ckZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSk6CisgICAgICAgIChOdW1iZXJGdW5jdGlvbi5wcm90
b3R5cGUubGVmdEFwcGx5KToKKyAgICAgICAgKE5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAgKE5h
dGl2ZUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSk6CisgICAgICAgIChOYXRpdmVGdW5jdGlvbi5w
cm90b3R5cGUubGVmdEFwcGx5KToKKyAgICAgICAgKiBCYXNpYy9wYXJzZXIuanM6IEFkZGVkLgor
ICAgICAgICAocGFyc2UpOgorICAgICAgICAocGFyc2UucHVzaFRva2VuKToKKyAgICAgICAgKHBh
cnNlLnBlZWtUb2tlbik6CisgICAgICAgIChwYXJzZS5jb25zdW1lS2luZCk6CisgICAgICAgIChw
YXJzZS5jb25zdW1lVG9rZW4pOgorICAgICAgICAocGFyc2UucGFyc2VWYXJpYWJsZSk6CisgICAg
ICAgIChwYXJzZS5wYXJzZU51bWVyaWNFeHByZXNzaW9uLnBhcnNlUHJpbWFyeSk6CisgICAgICAg
IChwYXJzZS5wYXJzZU51bWVyaWNFeHByZXNzaW9uLnBhcnNlRmFjdG9yKToKKyAgICAgICAgKHBh
cnNlLnBhcnNlTnVtZXJpY0V4cHJlc3Npb24ucGFyc2VUZXJtKToKKyAgICAgICAgKHBhcnNlLnBh
cnNlTnVtZXJpY0V4cHJlc3Npb24pOgorICAgICAgICAocGFyc2UucGFyc2VDb25zdGFudCk6Cisg
ICAgICAgIChwYXJzZS5wYXJzZVN0cmluZ0V4cHJlc3Npb24pOgorICAgICAgICAocGFyc2UuaXNT
dHJpbmdFeHByZXNzaW9uKToKKyAgICAgICAgKHBhcnNlLnBhcnNlUmVsYXRpb25hbEV4cHJlc3Np
b24pOgorICAgICAgICAocGFyc2UucGFyc2VOb25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAo
cGFyc2UucGFyc2VHb1RvU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlLnBhcnNlR29TdWJTdGF0
ZW1lbnQpOgorICAgICAgICAocGFyc2UucGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAocGFyc2Uu
cGFyc2VTdGF0ZW1lbnRzKToKKyAgICAgICAgKiBCYXNpYy9yYW5kb20uanM6IEFkZGVkLgorICAg
ICAgICAoY3JlYXRlUk5HKToKKyAgICAgICAgKGNyZWF0ZVJOR1dpdGhGaXhlZFNlZWQpOgorICAg
ICAgICAoY3JlYXRlUk5HV2l0aFJhbmRvbVNlZWQpOgorICAgICAgICAqIEJhc2ljL3N0YXRlLmpz
OiBBZGRlZC4KKyAgICAgICAgKFN0YXRlKToKKyAgICAgICAgKFN0YXRlLnByb3RvdHlwZS5nZXRW
YWx1ZSk6CisgICAgICAgIChTdGF0ZS5wcm90b3R5cGUuZ2V0U2lkZVN0YXRlKToKKyAgICAgICAg
KFN0YXRlLnByb3RvdHlwZS5hYm9ydCk6CisgICAgICAgIChTdGF0ZS5wcm90b3R5cGUudmFsaWRh
dGUpOgorICAgICAgICAqIEJhc2ljL3Rlc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogQmFzaWMv
dGVzdC5qczogQWRkZWQuCisgICAgICAgICogQmFzaWMvdXRpbC5qczogQWRkZWQuCisgICAgICAg
ICh0aGlzLnBlcmZvcm1hbmNlLnBlcmZvcm1hbmNlLm5vdy5jdXJyZW50VGltZSk6CisgICAgICAg
IChlbHNlLnRoaXMucHJlY2lzZVRpbWUuY3VycmVudFRpbWUpOgorICAgICAgICAoZWxzZS5jdXJy
ZW50VGltZSk6CisKIDIwMTYtMDYtMjEgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVwZGF0ZSBjYW52YXMgc2l6ZSB3aGVuIGJlbmNobWFyayBiZWdpbnMKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQmFzaWMvYXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvQmFzaWMvYXN0LmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9CYXNpYy9h
c3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY29uc3QgQmFzaWMg
PSB7fTsKKworQmFzaWMuTnVtYmVyQXBwbHkgPSBmdW5jdGlvbihzdGF0ZSkKK3sKKyAgICAvLyBJ
J2QgY2FsbCB0aGlzIGFyZ3VtZW50cyBidXQgd2UncmUgaW4gc3RyaWN0IG1vZGUuCisgICAgbGV0
IHBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtZXRlcnMubWFwKHZhbHVlID0+IHZhbHVlLmV2YWx1YXRl
KHN0YXRlKSk7CisgICAgCisgICAgcmV0dXJuIHN0YXRlLmdldFZhbHVlKHRoaXMubmFtZSwgcGFy
YW1ldGVycy5sZW5ndGgpLmFwcGx5KHN0YXRlLCBwYXJhbWV0ZXJzKTsKK307CisKK0Jhc2ljLlZh
cmlhYmxlID0gZnVuY3Rpb24oc3RhdGUpCit7CisgICAgbGV0IHBhcmFtZXRlcnMgPSB0aGlzLnBh
cmFtZXRlcnMubWFwKHZhbHVlID0+IHZhbHVlLmV2YWx1YXRlKHN0YXRlKSk7CisgICAgCisgICAg
cmV0dXJuIHN0YXRlLmdldFZhbHVlKHRoaXMubmFtZSwgcGFyYW1ldGVycy5sZW5ndGgpLmxlZnRB
cHBseShzdGF0ZSwgcGFyYW1ldGVycyk7Cit9CisKK0Jhc2ljLkNvbnN0ID0gZnVuY3Rpb24oc3Rh
dGUpCit7CisgICAgcmV0dXJuIHRoaXMudmFsdWU7Cit9CisKK0Jhc2ljLk51bWJlclBvdyA9IGZ1
bmN0aW9uKHN0YXRlKQoreworICAgIHJldHVybiBNYXRoLnBvdyh0aGlzLmxlZnQuZXZhbHVhdGUo
c3RhdGUpLCB0aGlzLnJpZ2h0LmV2YWx1YXRlKHN0YXRlKSk7Cit9CisKK0Jhc2ljLk51bWJlck11
bCA9IGZ1bmN0aW9uKHN0YXRlKQoreworICAgIHJldHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3Rh
dGUpICogdGhpcy5yaWdodC5ldmFsdWF0ZShzdGF0ZSk7Cit9CisKK0Jhc2ljLk51bWJlckRpdiA9
IGZ1bmN0aW9uKHN0YXRlKQoreworICAgIHJldHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3RhdGUp
IC8gdGhpcy5yaWdodC5ldmFsdWF0ZShzdGF0ZSk7Cit9CisKK0Jhc2ljLk51bWJlck5lZyA9IGZ1
bmN0aW9uKHN0YXRlKQoreworICAgIHJldHVybiAtdGhpcy50ZXJtLmV2YWx1YXRlKHN0YXRlKTsK
K30KKworQmFzaWMuTnVtYmVyQWRkID0gZnVuY3Rpb24oc3RhdGUpCit7CisgICAgcmV0dXJuIHRo
aXMubGVmdC5ldmFsdWF0ZShzdGF0ZSkgKyB0aGlzLnJpZ2h0LmV2YWx1YXRlKHN0YXRlKTsKK30K
KworQmFzaWMuTnVtYmVyU3ViID0gZnVuY3Rpb24oc3RhdGUpCit7CisgICAgcmV0dXJuIHRoaXMu
bGVmdC5ldmFsdWF0ZShzdGF0ZSkgLSB0aGlzLnJpZ2h0LmV2YWx1YXRlKHN0YXRlKTsKK30KKwor
QmFzaWMuU3RyaW5nVmFyID0gZnVuY3Rpb24oc3RhdGUpCit7CisgICAgbGV0IHZhbHVlID0gc3Rh
dGUuc3RyaW5nVmFsdWVzLmdldCh0aGlzLm5hbWUpOworICAgIGlmICh2YWx1ZSA9PSBudWxsKQor
ICAgICAgICBzdGF0ZS5hYm9ydCgiQ291bGQgbm90IGZpbmQgc3RyaW5nIHZhcmlhYmxlICIgKyB0
aGlzLm5hbWUpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworQmFzaWMuRXF1YWxzID0gZnVuY3Rp
b24oc3RhdGUpCit7CisgICAgcmV0dXJuIHRoaXMubGVmdC5ldmFsdWF0ZShzdGF0ZSkgPT0gdGhp
cy5yaWdodC5ldmFsdWF0ZShzdGF0ZSk7Cit9CisKK0Jhc2ljLk5vdEVxdWFscyA9IGZ1bmN0aW9u
KHN0YXRlKQoreworICAgIHJldHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3RhdGUpICE9IHRoaXMu
cmlnaHQuZXZhbHVhdGUoc3RhdGUpOworfQorCitCYXNpYy5MZXNzVGhhbiA9IGZ1bmN0aW9uKHN0
YXRlKQoreworICAgIHJldHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3RhdGUpIDwgdGhpcy5yaWdo
dC5ldmFsdWF0ZShzdGF0ZSk7Cit9CisKK0Jhc2ljLkdyZWF0ZXJUaGFuID0gZnVuY3Rpb24oc3Rh
dGUpCit7CisgICAgcmV0dXJuIHRoaXMubGVmdC5ldmFsdWF0ZShzdGF0ZSkgPiB0aGlzLnJpZ2h0
LmV2YWx1YXRlKHN0YXRlKTsKK30KKworQmFzaWMuTGVzc0VxdWFsID0gZnVuY3Rpb24oc3RhdGUp
Cit7CisgICAgcmV0dXJuIHRoaXMubGVmdC5ldmFsdWF0ZShzdGF0ZSkgPD0gdGhpcy5yaWdodC5l
dmFsdWF0ZShzdGF0ZSk7Cit9CisKK0Jhc2ljLkdyZWF0ZXJFcXVhbCA9IGZ1bmN0aW9uKHN0YXRl
KQoreworICAgIHJldHVybiB0aGlzLmxlZnQuZXZhbHVhdGUoc3RhdGUpID49IHRoaXMucmlnaHQu
ZXZhbHVhdGUoc3RhdGUpOworfQorCitCYXNpYy5Hb1RvID0gZnVuY3Rpb24qKHN0YXRlKQorewor
ICAgIHN0YXRlLm5leHRMaW5lTnVtYmVyID0gdGhpcy50YXJnZXQ7Cit9CisKK0Jhc2ljLkdvU3Vi
ID0gZnVuY3Rpb24qKHN0YXRlKQoreworICAgIHN0YXRlLnN1YlN0YWNrLnB1c2goc3RhdGUubmV4
dExpbmVOdW1iZXIpOworICAgIHN0YXRlLm5leHRMaW5lTnVtYmVyID0gdGhpcy50YXJnZXQ7Cit9
CisKK0Jhc2ljLkRlZiA9IGZ1bmN0aW9uKihzdGF0ZSkKK3sKKyAgICBzdGF0ZS52YWxpZGF0ZSgh
c3RhdGUudmFsdWVzLmhhcyh0aGlzLm5hbWUpLCAiQ2Fubm90IHJlZGVmaW5lIGZ1bmN0aW9uIik7
CisgICAgc3RhdGUudmFsdWVzLnNldCh0aGlzLm5hbWUsIG5ldyBOdW1iZXJGdW5jdGlvbih0aGlz
LnBhcmFtZXRlcnMsIHRoaXMuZXhwcmVzc2lvbikpOworfQorCitCYXNpYy5MZXQgPSBmdW5jdGlv
biooc3RhdGUpCit7CisgICAgdGhpcy52YXJpYWJsZS5ldmFsdWF0ZShzdGF0ZSkuYXNzaWduKHRo
aXMuZXhwcmVzc2lvbi5ldmFsdWF0ZShzdGF0ZSkpOworfQorCitCYXNpYy5JZiA9IGZ1bmN0aW9u
KihzdGF0ZSkKK3sKKyAgICBpZiAodGhpcy5jb25kaXRpb24uZXZhbHVhdGUoc3RhdGUpKQorICAg
ICAgICBzdGF0ZS5uZXh0TGluZU51bWJlciA9IHRoaXMudGFyZ2V0OworfQorCitCYXNpYy5SZXR1
cm4gPSBmdW5jdGlvbiooc3RhdGUpCit7CisgICAgdGhpcy52YWxpZGF0ZShzdGF0ZS5zdWJTdGFj
ay5sZW5ndGgsICJOb3QgaW4gYSBzdWJyb3V0aW5lIik7CisgICAgdGhpcy5uZXh0TGluZU51bWJl
ciA9IHN0YXRlLnN1YlN0YWNrLnBvcCgpOworfQorCitCYXNpYy5TdG9wID0gZnVuY3Rpb24qKHN0
YXRlKQoreworICAgIHN0YXRlLm5leHRMaW5lTnVtYmVyID0gbnVsbDsKK30KKworQmFzaWMuT24g
PSBmdW5jdGlvbiooc3RhdGUpCit7CisgICAgbGV0IGluZGV4ID0gdGhpcy5leHByZXNzaW9uLmV2
YWx1YXRlKHN0YXRlKTsKKyAgICBpZiAoIShpbmRleCA+PSAxKSB8fCAhKGluZGV4IDw9IHRoaXMu
dGFyZ2V0cy5sZW5ndGgpKQorICAgICAgICBzdGF0ZS5hYm9ydCgiSW5kZXggb3V0IG9mIGJvdW5k
czogIiArIGluZGV4KTsKKyAgICB0aGlzLm5leHRMaW5lTnVtYmVyID0gdGhpcy50YXJnZXRzW01h
dGguZmxvb3IoaW5kZXgpXTsKK30KKworQmFzaWMuRm9yID0gZnVuY3Rpb24qKHN0YXRlKQorewor
ICAgIGxldCBzaWRlU3RhdGUgPSBzdGF0ZS5nZXRTaWRlU3RhdGUodGhpcyk7CisgICAgc2lkZVN0
YXRlLnZhcmlhYmxlID0gc3RhdGUuZ2V0VmFsdWUodGhpcy52YXJpYWJsZSwgMCkubGVmdEFwcGx5
KHN0YXRlLCBbXSk7CisgICAgc2lkZVN0YXRlLmluaXRpYWxWYWx1ZSA9IHRoaXMuaW5pdGlhbC5l
dmFsdWF0ZShzdGF0ZSk7CisgICAgc2lkZVN0YXRlLmxpbWl0VmFsdWUgPSB0aGlzLmxpbWl0LmV2
YWx1YXRlKHN0YXRlKTsKKyAgICBzaWRlU3RhdGUuc3RlcFZhbHVlID0gdGhpcy5zdGVwLmV2YWx1
YXRlKHN0YXRlKTsKKyAgICBzaWRlU3RhdGUudmFyaWFibGUuYXNzaWduKHNpZGVTdGF0ZS5pbml0
aWFsVmFsdWUpOworICAgIHNpZGVTdGF0ZS5zaG91bGRTdG9wID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIHJldHVybiAoc2lkZVN0YXRlLnZhcmlhYmxlLnZhbHVlIC0gc2lkZVN0YXRlLmxpbWl0VmFs
dWUpICogTWF0aC5zaWduKHNpZGVTdGF0ZS5zdGVwVmFsdWUpID4gMDsKKyAgICB9OworICAgIGlm
IChzaWRlU3RhdGUuc2hvdWxkU3RvcCgpKQorICAgICAgICB0aGlzLm5leHRMaW5lTnVtYmVyID0g
dGhpcy50YXJnZXQubGluZU51bWJlciArIDE7Cit9CisKK0Jhc2ljLk5leHQgPSBmdW5jdGlvbioo
c3RhdGUpCit7CisgICAgbGV0IHNpZGVTdGF0ZSA9IHN0YXRlLmdldFNpZGVTdGF0ZSh0aGlzLnRh
cmdldCk7CisgICAgc2lkZVN0YXRlLnZhcmlhYmxlLmFzc2lnbihzaWRlU3RhdGUudmFyaWFibGUu
dmFsdWUgKyBzaWRlU3RhdGUuc3RlcFZhbHVlKTsKKyAgICBpZiAoc2lkZVN0YXRlLnNob3VsZFN0
b3AoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHN0YXRlLm5leHRMaW5lTnVtYmVyID0gdGhpcy50
YXJnZXQubGluZU51bWJlciArIDE7Cit9CisKK0Jhc2ljLk5leHQuaXNCbG9ja0VuZCA9IHRydWU7
CisKK0Jhc2ljLlByaW50ID0gZnVuY3Rpb24qKHN0YXRlKQoreworICAgIGxldCBzdHJpbmcgPSAi
IjsKKyAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuaXRlbXMpIHsKKyAgICAgICAgc3dpdGNoIChp
dGVtLmtpbmQpIHsKKyAgICAgICAgY2FzZSAiY29tbWEiOgorICAgICAgICAgICAgd2hpbGUgKHN0
cmluZy5sZW5ndGggJSAxNCkKKyAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInRhYiI6IHsKKyAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGl0ZW0udmFsdWUuZXZhbHVhdGUoc3RhdGUpOworICAgICAgICAgICAgdmFsdWUgPSBNYXRo
Lm1heChNYXRoLnJvdW5kKHZhbHVlKSwgMSk7CisgICAgICAgICAgICB3aGlsZSAoc3RyaW5nLmxl
bmd0aCAlIHZhbHVlKQorICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICBjYXNl
ICJudW1iZXIiOgorICAgICAgICAgICAgc3RyaW5nICs9IGl0ZW0udmFsdWUuZXZhbHVhdGUoc3Rh
dGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBpdGVtIGtpbmQ6ICIgKyBpdGVtLmtpbmQpOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHlpZWxkIHtraW5kOiAib3V0cHV0Iiwgc3RyaW5nfTsKK30KKwor
QmFzaWMuSW5wdXQgPSBmdW5jdGlvbiooc3RhdGUpCit7CisgICAgbGV0IHJlc3VsdHMgPSB5aWVs
ZCB7a2luZDogImlucHV0IiwgbnVtSXRlbXM6IHRoaXMuaXRlbXMubGVuZ3RofTsKKyAgICBzdGF0
ZS52YWxpZGF0ZShyZXN1bHRzICE9IG51bGwgJiYgcmVzdWx0cy5sZW5ndGggPT0gdGhpcy5pdGVt
cy5sZW5ndGgsICJJbnB1dCBkaWQgbm90IGdldCB0aGUgcmlnaHQgbnVtYmVyIG9mIGl0ZW1zIik7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgKytpKQorICAgICAgICB0
aGlzLml0ZW1zW2ldLmV2YWx1YXRlKHN0YXRlKS5hc3NpZ24ocmVzdWx0c1tpXSk7Cit9CisKK0Jh
c2ljLlJlYWQgPSBmdW5jdGlvbiooc3RhdGUpCit7CisgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlz
Lml0ZW1zKSB7CisgICAgICAgIHN0YXRlLnZhbGlkYXRlKHN0YXRlLmRhdGFJbmRleCA8IHN0YXRl
LnByb2dyYW0uZGF0YS5sZW5ndGgsICJBdHRlbXB0aW5nIHRvIHJlYWQgcGFzdCB0aGUgZW5kIG9m
IGRhdGEiKTsKKyAgICAgICAgaXRlbS5hc3NpZ24oc3RhdGUucHJvZ3JhbS5kYXRhW3N0YXRlLmRh
dGFJbmRleCsrXSk7CisgICAgfQorfQorCitCYXNpYy5SZXN0b3JlID0gZnVuY3Rpb24qKHN0YXRl
KQoreworICAgIHN0YXRlLmRhdGFJbmRleCA9IDA7Cit9CisKK0Jhc2ljLkRpbSA9IGZ1bmN0aW9u
KihzdGF0ZSkKK3sKKyAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuaXRlbXMpIHsKKyAgICAgICAg
c3RhdGUudmFsaWRhdGUoIXN0YXRlLnZhbHVlcy5oYXMoaXRlbS5uYW1lKSwgIlZhcmlhYmxlICIg
KyBpdGVtLm5hbWUgKyAiIGFscmVhZHkgZXhpc3RzIik7CisgICAgICAgIHN0YXRlLnZhbGlkYXRl
KGl0ZW0uYm91bmRzLmxlbmd0aCwgIkRpbSBzdGF0ZW1lbnQgaXMgZm9yIGFycmF5cyIpOworICAg
ICAgICBzdGF0ZS52YWx1ZXMuc2V0KGl0ZW0ubmFtZSwgbmV3IE51bWJlckFycmF5KGl0ZW0uYm91
bmRzLm1hcChib3VuZCA9PiBib3VuZCArIDEpKSk7CisgICAgfQorfQorCitCYXNpYy5SYW5kb21p
emUgPSBmdW5jdGlvbiooc3RhdGUpCit7CisgICAgc3RhdGUucm5nID0gY3JlYXRlUk5HV2l0aFJh
bmRvbVNlZWQoKTsKK30KKworQmFzaWMuRW5kID0gZnVuY3Rpb24qKHN0YXRlKQoreworICAgIHN0
YXRlLm5leHRMaW5lTnVtYmVyID0gbnVsbDsKK30KKworQmFzaWMuRW5kLmlzQmxvY2tFbmQgPSB0
cnVlOworCitCYXNpYy5Qcm9ncmFtID0gZnVuY3Rpb24qKHN0YXRlKQoreworICAgIHN0YXRlLnZh
bGlkYXRlKHN0YXRlLnByb2dyYW0gPT0gdGhpcywgIlN0YXRlIG11c3QgbWF0Y2ggcHJvZ3JhbSIp
OworICAgIGxldCBtYXhMaW5lTnVtYmVyID0gTWF0aC5tYXgoLi4udGhpcy5zdGF0ZW1lbnRzLmtl
eXMoKSk7CisgICAgd2hpbGUgKHN0YXRlLm5leHRMaW5lTnVtYmVyICE9IG51bGwpIHsKKyAgICAg
ICAgc3RhdGUudmFsaWRhdGUoc3RhdGUubmV4dExpbmVOdW1iZXIgPD0gbWF4TGluZU51bWJlciwg
IldlbnQgb3V0IG9mIGJvdW5kcyBvZiB0aGUgcHJvZ3JhbSIpOworICAgICAgICBsZXQgc3RhdGVt
ZW50ID0gdGhpcy5zdGF0ZW1lbnRzLmdldChzdGF0ZS5uZXh0TGluZU51bWJlcisrKTsKKyAgICAg
ICAgaWYgKHN0YXRlbWVudCA9PSBudWxsIHx8IHN0YXRlbWVudC5wcm9jZXNzID09IG51bGwpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgc3RhdGUuc3RhdGVtZW50ID0gc3RhdGVtZW50
OworICAgICAgICB5aWVsZCogc3RhdGVtZW50LnByb2Nlc3Moc3RhdGUpOworICAgIH0KK30KKwpJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9CYXNpYy9iYXNpYy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0Jhc2ljL2Jhc2ljLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9CYXNpYy9iYXNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisK
K2Z1bmN0aW9uIHByZXBhcmUoc3RyaW5nKQoreworICAgIGxldCBwcm9ncmFtID0gcGFyc2UobGV4
KHN0cmluZykpLnByb2dyYW0oKTsKKyAgICByZXR1cm4gcHJvZ3JhbS5wcm9jZXNzKG5ldyBTdGF0
ZShwcm9ncmFtKSk7Cit9CisKK2Z1bmN0aW9uIHNpbXVsYXRlKHByb2dyYW0sIGlucHV0cyA9IFtd
KQoreworICAgIGxldCByZXN1bHQgPSAiIjsKKyAgICBsZXQgYXJncyA9IFtdOworICAgIGZvciAo
OzspIHsKKyAgICAgICAgbGV0IG5leHQgPSBwcm9ncmFtLm5leHQoLi4uYXJncyk7CisgICAgICAg
IGFyZ3MgPSBbXTsKKyAgICAgICAgaWYgKG5leHQuZG9uZSkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBpZiAobmV4dC52YWx1ZS5raW5kID09ICJvdXRwdXQiKSB7CisgICAgICAgICAgICBy
ZXN1bHQgKz0gbmV4dC52YWx1ZS5zdHJpbmcgKyAiXG4iOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5leHQudmFsdWUua2luZCA9PSAiaW5wdXQiKSB7Cisg
ICAgICAgICAgICBhcmdzID0gaW5wdXRzLnNwbGljZSgwLCBuZXh0LnZhbHVlLm51bUl0ZW1zKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQmFzaWMvYmVuY2htYXJrLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQmFzaWMvYmVuY2htYXJrLmpzCShyZXZpc2lvbiAw
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9CYXNpYy9iZW5jaG1hcmsuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBCZW5jaG1hcmsgeworICAgIGNvbnN0cnVjdG9y
KHZlcmJvc2UpCisgICAgeworICAgICAgICB0aGlzLl92ZXJib3NlID0gdmVyYm9zZTsKKyAgICB9
CisgICAgCisgICAgcnVuSXRlcmF0aW9uKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGV4cGVj
dChwcm9ncmFtLCBleHBlY3RlZCwgLi4uaW5wdXRzKQorICAgICAgICB7CisgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gc2ltdWxhdGUocHJlcGFyZShwcm9ncmFtLCBpbnB1dHMpKTsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJQcm9ncmFtICIgKyBKU09OLnN0cmluZ2lmeShwcm9ncmFtKSArICIgd2l0aCBpbnB1dHMg
IiArIEpTT04uc3RyaW5naWZ5KGlucHV0cykgKyAiIHByb2R1Y2VkICIgKyBKU09OLnN0cmluZ2lm
eShyZXN1bHQpICsgIiBidXQgd2UgZXhwZWN0ZWQgIiArIEpTT04uc3RyaW5naWZ5KGV4cGVjdGVk
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGV4cGVjdCgiMTAgcHJpbnQgXCJoZWxs
bywgd29ybGQhXCJcbjIwIGVuZCIsICJoZWxsbywgd29ybGQhXG4iKTsKKyAgICAgICAgZXhwZWN0
KCIxMCBsZXQgeCA9IDBcbjIwIGxldCB4ID0geCArIDFcbjMwIHByaW50IHhcbjQwIGlmIHggPCAx
MCB0aGVuIDIwXG41MCBlbmQiLCAiMVxuMlxuM1xuNFxuNVxuNlxuN1xuOFxuOVxuMTBcbiIpOwor
ICAgICAgICBleHBlY3QoIjEwIHByaW50IGludChybmQgKiAxMDApXG4yMCBlbmRcbiIsICI5OFxu
Iik7CisgICAgICAgIGV4cGVjdCgiMTAgbGV0IHZhbHVlID0gaW50KHJuZCAqIDIwMDApXG4yMCBw
cmludCB2YWx1ZVxuMzAgaWYgdmFsdWUgPD4gMTAwIHRoZW4gMTBcbjQwIGVuZCIsICIxOTc0XG42
OTdcbjExMjZcbjE5OThcbjE2NThcbjI2NFxuMTY1MFxuMTY3N1xuMjI2XG4xMTdcbjQ5MlxuODYx
XG44NzdcbjE5NjlcbjM4XG4xMDM5XG4xOTdcbjEyNjFcbjExMDJcbjE1MjJcbjkxNlxuMTY4M1xu
MTk0M1xuMTgzNVxuNDc2XG4xODk4XG45MzlcbjE3NlxuOTY2XG45MDhcbjQ3NFxuNjE0XG4xMzI2
XG41NjRcbjE5MTZcbjcyOFxuNTI0XG4xNjJcbjEzMDNcbjc1OFxuODMyXG4xMjc5XG4xODU2XG4x
ODc2XG45ODJcbjZcbjE2MTNcbjE3ODFcbjY4MVxuMTIzOFxuNDk0XG4xNTgzXG4xOTUzXG43ODhc
bjEwMjZcbjM0N1xuMTExNlxuMTQ2NVxuNTE0XG41ODNcbjQ2M1xuMTk3MFxuMTU3M1xuNDEyXG4x
MjU2XG4xNDUzXG44MzhcbjE1MzhcbjE5ODRcbjE1OThcbjIwOVxuNDExXG4xNzAwXG41NDZcbjg2
MVxuOTFcbjEzMlxuODg0XG4zNzhcbjY5M1xuMTFcbjQzM1xuMTcxOVxuODYwXG4xNjRcbjQ3Mlxu
MjMxXG4xNzg2XG44MDZcbjgxMVxuMTA2XG4xNjk3XG4xMThcbjk4MFxuODkwXG4xMTk5XG4yMjdc
bjE2NjdcbjE5MzNcbjE5MDNcbjEzOTBcbjE1OTVcbjkyM1xuMTc0NlxuMzlcbjEzNjFcbjExN1xu
MTI5N1xuOTIzXG45MDFcbjExODBcbjgxOFxuMTQ0NFxuMjY5XG45MzNcbjMyN1xuMTc0NFxuMTA4
MlxuMTUyN1xuMTI2MFxuNjIyXG41MjhcbjMxOFxuODU2XG4yOTZcbjE3OTZcbjE1NzRcbjU4NVxu
MTg3MVxuMTExXG44MjdcbjE3MjVcbjEzMjBcbjE4NjhcbjE2OTVcbjE5MTRcbjIxNlxuNjNcbjE4
NDdcbjE1NlxuNjcxXG44OTNcbjEyN1xuMTg2N1xuODExXG4yNzlcbjkxM1xuMzEwXG44MTRcbjkw
N1xuMTM2M1xuMTYyNFxuMTY3MFxuNDc4XG43MTRcbjQzNlxuMzU1XG4xNDg0XG4xNjI4XG4xMjA4
XG44MDBcbjYxMVxuOTE3XG44MjlcbjgzMFxuMjczXG4xNzkxXG4zNDBcbjIxNFxuOTkyXG4xNDQ0
XG40NDJcbjE1NTVcbjE0NFxuMTE5NFxuMjgyXG4xODBcbjEyMjhcbjEyNTFcbjE4ODNcbjY3OFxu
MTU1NVxuMzQ3XG43MlxuMTY2MVxuMTgyOFxuMTA5MFxuMTE4M1xuOTU3XG4xNjg1XG45MzBcbjQ3
NVxuMTAzXG43NTlcbjE3MjVcbjE5MDJcbjE2NjJcbjE1ODdcbjYxXG42MTRcbjg2M1xuMTQxOFxu
MzIxXG4xMDUwXG41MDVcbjE2MjJcbjE0MjVcbjgwM1xuNTg5XG4xNTExXG4xMDk4XG4xMDUxXG4x
NTU0XG4xODk4XG4yN1xuNzQ3XG44MTNcbjE1NDRcbjMzMlxuNzI4XG4xMzYzXG43NzFcbjc1OVxu
MTE0NVxuMTA5OFxuMTk5MVxuMzg1XG4yMzBcbjUyMFxuMTM2OVxuMTg0MFxuMTI4NVxuMTU2Mlxu
MTg0NVxuMTAyXG43NjBcbjE4NzRcbjc0OFxuMzYxXG41NzVcbjI3N1xuMTY2MVxuMTc2NFxuMTEx
N1xuMzMyXG43NTdcbjE3NjZcbjE3MjJcbjE0M1xuNDc0XG4xNTA3XG4xMjk0XG4xMTgwXG4xNTc4
XG45MDRcbjg0NVxuMzIxXG40OTZcbjE5MTFcbjE3ODRcbjExMTZcbjkzOFxuMTU5MVxuMTQwM1xu
MTM3NFxuNTMzXG4xMDg1XG40NTJcbjcwOFxuMTA5NlxuMTYzNFxuNTIyXG41NjRcbjEzOTdcbjEz
NTdcbjk4MFxuOTc4XG4xNzYwXG4xMDg4XG4xMzYxXG4xMTg0XG4zMTRcbjEyNDJcbjIxN1xuMTMz
XG4xMTg3XG4xNzIzXG42NDZcbjYwNVxuNTkxXG40NlxuMTM1XG4xNDIwXG4xODIxXG4xMTQ3XG4x
MjExXG42MVxuMjQ0XG4xMzA3XG4xNTUxXG40NDlcbjExMjJcbjEzMzZcbjE0MFxuODgwXG4yMlxu
MTE1NVxuMTMyNlxuNTkwXG4xNDk5XG4xMzc2XG4xMTJcbjE3NzFcbjE4OTdcbjEwNzFcbjkzOFxu
MTY4NVxuMTk2M1xuMTIwM1xuMTI5NlxuODA0XG4xMjc1XG40NTNcbjEzODdcbjQ4MlxuMTI2Mlxu
MTg4M1xuMTM4MVxuNDE4XG4xNDE3XG4xMjIyXG4xMjA4XG4xMjYzXG42MzJcbjQ1MFxuMTQyMlxu
MTI4NVxuMTQwOFxuNjQ0XG42NjVcbjI3NVxuMzYzXG4xMDEyXG4xNjVcbjM1NFxuODBcbjYwOVxu
MjkxXG4xNjYxXG4xNzI0XG4xMTdcbjQwN1xuNTlcbjkwNlxuMTIyNFxuMTM2XG44NTVcbjEyNzVc
bjE0NjhcbjQ4MlxuMTUzN1xuMTI4M1xuMTc4NFxuMTU2OFxuMTgzMlxuNDUyXG44NjdcbjE1NDZc
bjE0NjdcbjgwMFxuNDVcbjEyMjVcbjE4OTBcbjQ2NVxuMTM3MlxuNDdcbjE2MDhcbjE5M1xuMTM0
NVxuMTg0N1xuMTA1OVxuMTc4OFxuNTE4XG41MlxuMTA1MlxuMTAwM1xuMTIxMFxuMTEzNVxuMTQz
M1xuNTE5XG4xNTU4XG4zOVxuMTI0OVxuMTAxN1xuMzlcbjE3MTNcbjE0NDlcbjEyNDVcbjEzNTRc
bjgyXG4xMTQwXG45MTZcbjE1OTVcbjgzOFxuNjA3XG4zODlcbjEyNzBcbjgyMVxuMjQ3XG4xNjky
XG4xMzA1XG4xMjExXG4xOTYwXG40MjlcbjE3MDNcbjE2MzVcbjU3NVxuMTYxOFxuMTQ5MFxuMTQ5
NVxuNjgyXG4xMjU2XG45NjRcbjQyMFxuMTUyMFxuMTQyOVxuMTk5N1xuMzk2XG4zODJcbjg1Nlxu
MTE4MlxuMjk2XG4xMjk1XG4yOThcbjE4OTJcbjk5MFxuNzExXG45MzRcbjE5MzlcbjEzMzlcbjY4
MlxuMTYzMVxuMTUzM1xuNzQyXG4xNTIwXG4xMjgxXG4xMzMyXG4xMDQyXG42NTZcbjE1NzZcbjEy
NTNcbjE2MDhcbjM3NVxuMTY5XG4xNFxuNDE0XG4xNTg2XG4xNTYyXG4xNTA4XG4xMjQ1XG4zMDNc
bjcxNVxuMTA1M1xuMzQwXG45MTVcbjE2MFxuMTc5NlxuMTExXG45MjVcbjE4NzJcbjczNVxuMzUw
XG4xMDdcbjE5MTNcbjE2NTNcbjk4N1xuODI1XG4xODkzXG4xNjAxXG40NjBcbjEyMjhcbjE1MjZc
bjE2MTNcbjEzNTlcbjE4NTRcbjEzNTJcbjU0MlxuNjY1XG4xMDlcbjE4NzRcbjQ2N1xuNTMzXG4x
MTg4XG4xNjI5XG44NTFcbjYzMFxuMTA2MFxuMTUzMFxuMTg1M1xuNzQzXG43NjVcbjEyNlxuMTU0
MFxuMTQxMVxuODU4XG4xNzQxXG4yODRcbjI5OVxuNTc3XG4xODQ4XG4xNDk1XG4yODNcbjE4ODZc
bjI4NFxuMTI5XG4xMDc3XG4xMjQ1XG4xMzY0XG4xNTA1XG4xNzZcbjEwMTJcbjE2NjNcbjEzMDZc
bjE1ODZcbjQxMFxuMzE1XG42NjBcbjI1NlxuMTEwMlxuMTI4OVxuMTI5MlxuOTM5XG43NjJcbjYw
MVxuMTE0MFxuNTc0XG4xODUxXG40NFxuNTYwXG4xOTQ4XG4xMTQyXG4xNzg3XG45NDdcbjk0OFxu
MjgwXG4xMjEwXG4xMTM5XG4xMDcyXG4xMDMzXG45MlxuMTI0NFxuMTU4OVxuMTA3OVxuMjJcbjE1
MTRcbjE2M1xuMTU3XG4xNzQyXG4xMDU4XG41MTRcbjE5NlxuMTg1OFxuNTY1XG4zNTRcbjE0MTNc
bjc5MlxuMTgzXG41MjZcbjE3MjRcbjEwMDdcbjE1OFxuMTIyOVxuMTgwMlxuOTlcbjE1MTRcbjcw
OFxuMTI3NlxuMTgwMlxuMTU2NFxuMTM4N1xuMTIzNVxuMTEzMlxuNzE1XG4xNTg0XG42MTdcbjE2
NjRcbjE1NTlcbjE2MjVcbjEwMzdcbjYwMVxuMTE3NVxuMTcxM1xuMTA3XG44OFxuMzg0XG4xNjM0
XG45MDRcbjE4MzVcbjE0NzJcbjIxMlxuMTE0NVxuNDQzXG4xNjE3XG44NjZcbjE5NjNcbjkzN1xu
MTkxN1xuODU1XG4xMjE1XG4xODY3XG41MjBcbjg5MlxuMTQ4M1xuMTg5OFxuMTc0N1xuMTQ0MVxu
Mjg5XG4xNjA5XG4zMjhcbjU2NlxuMjcxXG40NThcbjE2MTZcbjg0M1xuMTEwN1xuNTA3XG4xMDkw
XG44NTRcbjEwOTRcbjgwNlxuMTY2XG40MDhcbjY2MVxuMzM0XG4yMzBcbjE5MTdcbjEzMjNcbjky
N1xuMTkxMlxuNjczXG4zMTFcbjk1MlxuMTc4M1xuMTU0OVxuMTcxNFxuMTUwMFxuNDUwXG4xNDk4
XG41MzBcbjQ0MlxuNjA3XG42MDlcbjEyMjZcbjM3MFxuMTc2OVxuMTgxNVxuNzg4XG41MzZcbjI5
M1xuMTE1XG45NDdcbjI5MFxuMTc2NFxuMjQzXG4xMjE5XG4xODUxXG4yODlcbjU5OVxuMTUyOFxu
MTUwXG4xODU5XG4yOTdcbjI3OVxuMTU0MlxuMTcxOVxuMTkxMFxuNTUxXG40MDFcbjk1MlxuMTc2
NFxuOTQ2XG4xODM1XG42NDdcbjEzMDlcbjI3MVxuMjc1XG43MFxuMTI5XG4xNTE4XG45NzJcbjEx
NjRcbjgxNlxuMTEyNVxuNTc1XG41ODhcbjE0NTZcbjExNTRcbjI5MFxuMTY4MVxuMTEzM1xuNTYx
XG4zNDNcbjEzNjBcbjEwMzVcbjExNThcbjEzNjVcbjc0NFxuNzgxXG41OFxuNTMxXG4yNzFcbjE2
MTJcbjE3NzRcbjI4XG4xNDgwXG4xMzEyXG4xODU1XG42NjZcbjE1NzRcbjYxM1xuNDJcbjQ1Nlxu
MzUxXG43MjdcbjE1MDNcbjExMTVcbjMzM1xuMTk3MlxuODIyXG4xNTc1XG44NDhcbjEwODdcbjEy
NjJcbjE2NzFcbjcxMFxuNDYwXG4xODE2XG4yODdcbjE3MlxuNDkyXG4xMDc5XG41ODJcbjEyMzZc
bjE3NTZcbjE3OTJcbjEwOTVcbjEyMDVcbjE4OTRcbjIyXG4xOTMwXG4xNTI5XG4xNTQ3XG4xMzgz
XG4xNzY4XG4zNjRcbjExMDhcbjE5NzJcbjI4N1xuMjAwXG4yMzBcbjEzMzVcbjE4N1xuNDg2XG4x
NzIyXG4yMFxuOTYzXG43OTJcbjExMTRcbjYzM1xuMTg2MlxuMTQzM1xuODI5XG43MzdcbjIxNVxu
MTU3MFxuMzc4XG4xNjc3XG45NDRcbjEzMDFcbjExNjBcbjUwMFxuMTUwXG44ODZcbjEzMzdcbjY2
MlxuMTA2MlxuMjkwXG40NjBcbjU5MlxuMTg2N1xuODcyXG4xNTVcbjE2MTNcbjE5MTNcbjE1NDhc
bjE4NDdcbjg1NVxuMTcwMlxuOTUyXG4xODk0XG41ODdcbjE4MTNcbjEwMjFcbjIxXG42NTRcbjI1
NFxuOTEwXG4xNjk2XG4xNjA2XG42NzlcbjEyMjJcbjY5NlxuMTMxOVxuMzY4XG40NDdcbjU0OVxu
OTA1XG4xMTk0XG4xODlcbjE3NjZcbjYxNlxuMjc4XG4xNDE4XG4xOTY1XG44NzJcbjk5OFxuMTI2
OFxuMTY3M1xuMTY0N1xuMTE2M1xuNTMzXG4xNjUwXG4xODQ5XG4xMTI0XG4xMjUyXG4xNDEyXG43
MDNcbjk0NFxuNDY4XG4xNDg1XG4xMzUyXG42ODFcbjg2NFxuMTQzMlxuMTc3MVxuNDk3XG45NTZc
bjE3OTRcbjM2M1xuMTA5OVxuMTgwNFxuNDU3XG4xMjI3XG4xNDg3XG40NDZcbjE5OTNcbjE1NzZc
bjI3MlxuNzA5XG4xODEwXG4zMzBcbjg3NlxuMTEwN1xuMTE4N1xuMTIyXG4xNjI1XG40NzJcbjY3
NlxuMzE0XG4xMjU3XG4xNTA5XG4zNTBcbjc0MVxuMzY2XG4zM1xuNTM2XG4yOTNcbjE2NjNcbjEw
MzlcbjE1MjdcbjEyNlxuOTIzXG4xOTM3XG4xNzY3XG4xMzAyXG4xNTEwXG4xNTE4XG4xMzQzXG45
MVxuMTU1MVxuMTYxNFxuMTY4N1xuMTc0OFxuMTM3XG43NVxuNzM4XG4xOTc3XG43NTFcbjIzN1xu
MzEzXG41NjZcbjI0XG4yMDJcbjg4OVxuMTcxNlxuMTQ2MFxuMTI5XG4xNzYwXG4xNTk3XG45Nlxu
MTA1N1xuMTMyM1xuMTE4OFxuMTM3M1xuNTM3XG45NTVcbjY1XG4xNjc5XG4xNDQxXG4xMzE1XG4z
OThcbjY0N1xuMTQ3MFxuMTMzNVxuNjE3XG4zMzFcbjc5NlxuMTI5XG4xNjM1XG4xNDk3XG44MzZc
bjg1NVxuMTQ3MlxuMTgyOFxuNTY4XG44NjJcbjY5MFxuMTM3MFxuMTY1N1xuODE5XG40NVxuNDIw
XG4yNThcbjE5ODBcbjY3MlxuNjE1XG4zNThcbjg1MlxuMTE0OFxuMTg5N1xuMTMwNlxuMTA5Mlxu
MTQwNVxuNzE5XG4xNzUyXG4xNDU2XG4xMzM4XG4zMzJcbjM1MVxuNDc5XG43NDdcbjI0OVxuMTk3
N1xuMTY3MVxuMTA2MVxuMTY4NVxuMzA2XG4yNTRcbjEwNjBcbjc2NFxuNDIwXG4xMTM5XG4xNDUy
XG40MjZcbjgzNVxuOTI5XG4xNDI0XG4xMzM2XG42OTdcbjE5MVxuMTY5N1xuMTg5N1xuNjQ0XG41
NDZcbjk4MlxuMzU5XG4xMjAxXG4xMDk1XG4xNjIzXG4xOTQ3XG4yMTVcbjEwXG44NTVcbjI5N1xu
NTUxXG4xMDM3XG45NDVcbjM5NlxuMjExXG4xMDU5XG40MjNcbjE1MjFcbjE3NzBcbjIwM1xuMTgy
OFxuODc5XG4xMTc5XG4xOTEyXG4xMDI4XG4xNDE2XG4xODQ1XG42OThcbjcxNVxuMTg1N1xuODE3
XG41MFxuNDczXG4xMTIyXG4xMjZcbjcwXG4xNzczXG40MFxuMTk3MFxuMTMxMVxuODI2XG4zNTVc
bjE5MjFcbjIzXG41MjZcbjE3MTdcbjEzOTdcbjE5MzJcbjEwNzVcbjE2NTJcbjk5N1xuMTAzOVxu
MTQ4MVxuNzc5XG40MTVcbjQ5XG4xMzMwXG4zMTdcbjE3MDFcbjY5MFxuMjQ1XG4xODI0XG42Mzlc
bjc5OVxuMTI0MFxuNDIyXG4zNDRcbjE2MzlcbjIwXG41NDZcbjkxMlxuMTkzMFxuMTM2OFxuMTU0
MVxuMTEwOVxuMzY5XG42NlxuMTU2NFxuNDQ0XG4xOTI4XG4xOTYzXG4xODk5XG43NDRcbjE1OTNc
bjE3MDJcbjEwMFxuIik7CisKKyAgICAgICAgZXhwZWN0KCIxMCBkaW0gYSgyMDAwKVxuMjAgZm9y
IGkgPSAyIHRvIDIwMDBcbjMwIGxldCBhKGkpID0gMVxuNDAgbmV4dCBpXG41MCBmb3IgaSA9IDIg
dG8gc3FyKDIwMDApXG42MCBpZiBhKGkpID0gMCB0aGVuIDEwMFxuNzAgZm9yIGogPSBpIF4gMiB0
byAyMDAwIHN0ZXAgaVxuODAgbGV0IGEoaikgPSAwXG45MCBuZXh0IGpcbjEwMCBuZXh0IGlcbjEx
MCBmb3IgaSA9IDIgdG8gMjAwMFxuMTIwIGlmIGEoaSkgPSAwIHRoZW4gMTQwXG4xMzAgcHJpbnQg
aVxuMTQwIG5leHQgaVxuMTUwIGVuZFxuIiwgIjJcbjNcbjVcbjdcbjExXG4xM1xuMTdcbjE5XG4y
M1xuMjlcbjMxXG4zN1xuNDFcbjQzXG40N1xuNTNcbjU5XG42MVxuNjdcbjcxXG43M1xuNzlcbjgz
XG44OVxuOTdcbjEwMVxuMTAzXG4xMDdcbjEwOVxuMTEzXG4xMjdcbjEzMVxuMTM3XG4xMzlcbjE0
OVxuMTUxXG4xNTdcbjE2M1xuMTY3XG4xNzNcbjE3OVxuMTgxXG4xOTFcbjE5M1xuMTk3XG4xOTlc
bjIxMVxuMjIzXG4yMjdcbjIyOVxuMjMzXG4yMzlcbjI0MVxuMjUxXG4yNTdcbjI2M1xuMjY5XG4y
NzFcbjI3N1xuMjgxXG4yODNcbjI5M1xuMzA3XG4zMTFcbjMxM1xuMzE3XG4zMzFcbjMzN1xuMzQ3
XG4zNDlcbjM1M1xuMzU5XG4zNjdcbjM3M1xuMzc5XG4zODNcbjM4OVxuMzk3XG40MDFcbjQwOVxu
NDE5XG40MjFcbjQzMVxuNDMzXG40MzlcbjQ0M1xuNDQ5XG40NTdcbjQ2MVxuNDYzXG40NjdcbjQ3
OVxuNDg3XG40OTFcbjQ5OVxuNTAzXG41MDlcbjUyMVxuNTIzXG41NDFcbjU0N1xuNTU3XG41NjNc
bjU2OVxuNTcxXG41NzdcbjU4N1xuNTkzXG41OTlcbjYwMVxuNjA3XG42MTNcbjYxN1xuNjE5XG42
MzFcbjY0MVxuNjQzXG42NDdcbjY1M1xuNjU5XG42NjFcbjY3M1xuNjc3XG42ODNcbjY5MVxuNzAx
XG43MDlcbjcxOVxuNzI3XG43MzNcbjczOVxuNzQzXG43NTFcbjc1N1xuNzYxXG43Njlcbjc3M1xu
Nzg3XG43OTdcbjgwOVxuODExXG44MjFcbjgyM1xuODI3XG44MjlcbjgzOVxuODUzXG44NTdcbjg1
OVxuODYzXG44Nzdcbjg4MVxuODgzXG44ODdcbjkwN1xuOTExXG45MTlcbjkyOVxuOTM3XG45NDFc
bjk0N1xuOTUzXG45Njdcbjk3MVxuOTc3XG45ODNcbjk5MVxuOTk3XG4xMDA5XG4xMDEzXG4xMDE5
XG4xMDIxXG4xMDMxXG4xMDMzXG4xMDM5XG4xMDQ5XG4xMDUxXG4xMDYxXG4xMDYzXG4xMDY5XG4x
MDg3XG4xMDkxXG4xMDkzXG4xMDk3XG4xMTAzXG4xMTA5XG4xMTE3XG4xMTIzXG4xMTI5XG4xMTUx
XG4xMTUzXG4xMTYzXG4xMTcxXG4xMTgxXG4xMTg3XG4xMTkzXG4xMjAxXG4xMjEzXG4xMjE3XG4x
MjIzXG4xMjI5XG4xMjMxXG4xMjM3XG4xMjQ5XG4xMjU5XG4xMjc3XG4xMjc5XG4xMjgzXG4xMjg5
XG4xMjkxXG4xMjk3XG4xMzAxXG4xMzAzXG4xMzA3XG4xMzE5XG4xMzIxXG4xMzI3XG4xMzYxXG4x
MzY3XG4xMzczXG4xMzgxXG4xMzk5XG4xNDA5XG4xNDIzXG4xNDI3XG4xNDI5XG4xNDMzXG4xNDM5
XG4xNDQ3XG4xNDUxXG4xNDUzXG4xNDU5XG4xNDcxXG4xNDgxXG4xNDgzXG4xNDg3XG4xNDg5XG4x
NDkzXG4xNDk5XG4xNTExXG4xNTIzXG4xNTMxXG4xNTQzXG4xNTQ5XG4xNTUzXG4xNTU5XG4xNTY3
XG4xNTcxXG4xNTc5XG4xNTgzXG4xNTk3XG4xNjAxXG4xNjA3XG4xNjA5XG4xNjEzXG4xNjE5XG4x
NjIxXG4xNjI3XG4xNjM3XG4xNjU3XG4xNjYzXG4xNjY3XG4xNjY5XG4xNjkzXG4xNjk3XG4xNjk5
XG4xNzA5XG4xNzIxXG4xNzIzXG4xNzMzXG4xNzQxXG4xNzQ3XG4xNzUzXG4xNzU5XG4xNzc3XG4x
NzgzXG4xNzg3XG4xNzg5XG4xODAxXG4xODExXG4xODIzXG4xODMxXG4xODQ3XG4xODYxXG4xODY3
XG4xODcxXG4xODczXG4xODc3XG4xODc5XG4xODg5XG4xOTAxXG4xOTA3XG4xOTEzXG4xOTMxXG4x
OTMzXG4xOTQ5XG4xOTUxXG4xOTczXG4xOTc5XG4xOTg3XG4xOTkzXG4xOTk3XG4xOTk5XG4iKTsK
KyAgICB9Cit9CisgICAgCitmdW5jdGlvbiBydW5CZW5jaG1hcmsoKQoreworICAgIGNvbnN0IHZl
cmJvc2UgPSAwOworICAgIGNvbnN0IG51bUl0ZXJhdGlvbnMgPSAxNTA7CisgICAgCisgICAgbGV0
IGJlZm9yZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgCisgICAgbGV0IGJlbmNobWFyayA9IG5ldyBC
ZW5jaG1hcmsodmVyYm9zZSk7CisgICAgCisgICAgZm9yIChsZXQgaXRlcmF0aW9uID0gMDsgaXRl
cmF0aW9uIDwgbnVtSXRlcmF0aW9uczsgKytpdGVyYXRpb24pCisgICAgICAgIGJlbmNobWFyay5y
dW5JdGVyYXRpb24oKTsKKyAgICAKKyAgICBsZXQgYWZ0ZXIgPSBjdXJyZW50VGltZSgpOworICAg
IHJldHVybiBhZnRlciAtIGJlZm9yZTsKK30KKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9CYXNp
Yy9jYXNlbGVzc19tYXAuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9CYXNpYy9j
YXNlbGVzc19tYXAuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL2Nh
c2VsZXNzX21hcC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNz
IENhc2VsZXNzTWFwIHsKKyAgICBjb25zdHJ1Y3RvcihvdGhlck1hcCkKKyAgICB7CisgICAgICAg
IGlmIChvdGhlck1hcCA9PSBudWxsKQorICAgICAgICAgICAgdGhpcy5fbWFwID0gbmV3IE1hcCgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9tYXAgPSBuZXcgTWFwKG90aGVyTWFw
Ll9tYXApOworICAgIH0KKyAgICAKKyAgICBzZXQoa2V5LCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX21hcC5zZXQoa2V5LnRvTG93ZXJDYXNlKCksIHZhbHVlKTsKKyAgICB9CisgICAgCisg
ICAgaGFzKGtleSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXAuaGFzKGtleS50b0xv
d2VyQ2FzZSgpKTsKKyAgICB9CisgICAgCisgICAgZ2V0KGtleSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9tYXAuZ2V0KGtleS50b0xvd2VyQ2FzZSgpKTsKKyAgICB9CisKKyAgICBbU3lt
Ym9sLml0ZXJhdG9yXSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbWFwW1N5bWJvbC5p
dGVyYXRvcl0oKTsKKyAgICB9Cit9CisKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQmFzaWMvbGV4
ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9CYXNpYy9sZXhlci5qcwkocmV2
aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQmFzaWMvbGV4ZXIuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworInVzZSBzdHJpY3QiOworCisvLyBMb29zZWx5IGJhc2VkIG9uIEVDTUEgNTUgc2Vj
dGlvbnMgNC04LCBidXQgbG9vc2VuZWQgdG8gYWxsb3cgZm9yIG1vZGVybiBjb252ZW50aW9ucywg
bGlrZQorLy8gbXVsdGktY2hhcmFjdGVyIHZhcmlhYmxlIG5hbWVzLiBCdXQgdGhpcyBkb2Vzbid0
IGdvIHRvbyBmYXIgLSBpbiBwYXJ0aWN1bGFyLCB0aGlzIGRvZXNuJ3QgZG8KKy8vIHVuaWNvZGUs
IGJlY2F1c2UgdGhhdCB3b3VsZCByZXF1aXJlIG1vcmUgdGhvdWdodC4KK2Z1bmN0aW9uKiBsZXgo
c3RyaW5nKQoreworICAgIGxldCBzb3VyY2VMaW5lTnVtYmVyID0gMDsKKyAgICBmb3IgKGxldCBs
aW5lIG9mIHN0cmluZy5zcGxpdCgiXG4iKSkgeworICAgICAgICArK3NvdXJjZUxpbmVOdW1iZXI7
CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBjb25zdW1lV2hpdGVzcGFjZSgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICgvXlxzKy8udGVzdChsaW5lKSkKKyAgICAgICAgICAgICAgICBs
aW5lID0gUmVnRXhwLnJpZ2h0Q29udGV4dDsKKyAgICAgICAgfQorICAgCisgICAgICAgIGZ1bmN0
aW9uIGNvbnN1bWUoa2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgbGluZSA9IFJlZ0V4cC5y
aWdodENvbnRleHQ7CisgICAgICAgICAgICByZXR1cm4ge2tpbmQsIHN0cmluZzogUmVnRXhwLmxh
c3RNYXRjaCwgc291cmNlTGluZU51bWJlciwgdXNlckxpbmVOdW1iZXJ9OworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBjb25zdCBpc0lkZW50aWZpZXIgPSAvXlthLXpfXShbYS16MC05X10q
KS9pOworICAgICAgICBjb25zdCBpc051bWJlciA9IC9eKChbMC05XSsoXC4oWzAtOV0qKSk/KXwo
XC5bMC05XSspKGUoWystXT8pKFswLTldKykpPykvaTsKKyAgICAgICAgY29uc3QgaXNTdHJpbmcg
PSAvXlwiKFteXCJdfChcIlwiKSkqXCIvOworICAgICAgICBjb25zdCBpc0tleXdvcmQgPSAvXigo
YmFzZSl8KGRhdGEpfChkZWYpfChkaW0pfChlbmQpfChmb3IpfChnbyl8KGdvc3ViKXwoZ290byl8
KGlmKXwoaW5wdXQpfChsZXQpfChuZXh0KXwob24pfChvcHRpb24pfChwcmludCl8KHJhbmRvbWl6
ZSl8KHJlYWQpfChyZXN0b3JlKXwocmV0dXJuKXwoc3RlcCl8KHN0b3ApfChzdWIpfCh0aGVuKXwo
dG8pKS9pOworICAgICAgICBjb25zdCBpc09wZXJhdG9yID0gL14oLXxcK3xcKnxcL3xcXnxcKHxc
KXwoPFs+PV0/KXwoPj0/KXw9fCx8XCR8OykvOworICAgICAgICBjb25zdCBpc1JlbSA9IC9ecmVt
XHMuKi87CisgICAgICAgIAorICAgICAgICBjb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAK
KyAgICAgICAgaWYgKCEvXlswLTldKy8udGVzdChsaW5lKSkKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiQXQgbGluZSAiICsgc291cmNlTGluZU51bWJlciArICI6IEV4cGVjdCBsaW5lIG51
bWJlcjogIiArIGxpbmUpOworICAgICAgICBsZXQgdXNlckxpbmVOdW1iZXIgPSArUmVnRXhwLmxh
c3RNYXRjaDsKKyAgICAgICAgbGluZSA9IFJlZ0V4cC5yaWdodENvbnRleHQ7CisgICAgICAgIHlp
ZWxkIHtraW5kOiAidXNlckxpbmVOdW1iZXIiLCBzdHJpbmc6IFJlZ0V4cC5sYXN0TWF0Y2gsIHNv
dXJjZUxpbmVOdW1iZXIsIHVzZXJMaW5lTnVtYmVyfTsKKyAgICAgICAgCisgICAgICAgIGNvbnN1
bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIAorICAgICAgICB3aGlsZSAobGluZS5sZW5ndGgpIHsK
KyAgICAgICAgICAgIGlmIChpc0tleXdvcmQudGVzdChsaW5lKSkKKyAgICAgICAgICAgICAgICB5
aWVsZCBjb25zdW1lKCJrZXl3b3JkIik7CisgICAgICAgICAgICBlbHNlIGlmIChpc0lkZW50aWZp
ZXIudGVzdChsaW5lKSkKKyAgICAgICAgICAgICAgICB5aWVsZCBjb25zdW1lKCJpZGVudGlmaWVy
Iik7CisgICAgICAgICAgICBlbHNlIGlmIChpc051bWJlci50ZXN0KGxpbmUpKSB7CisgICAgICAg
ICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgibnVtYmVyIik7CisgICAgICAgICAgICAgICAg
dG9rZW4udmFsdWUgPSArdG9rZW4uc3RyaW5nOworICAgICAgICAgICAgICAgIHlpZWxkIHRva2Vu
OworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZy50ZXN0KGxpbmUpKSB7CisgICAgICAg
ICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgic3RyaW5nIik7CisgICAgICAgICAgICAgICAg
dG9rZW4udmFsdWUgPSAiIjsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRv
a2VuLnN0cmluZy5sZW5ndGggLSAxOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGNo
YXIgPSB0b2tlbi5zdHJpbmcuY2hhckF0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hh
ciA9PSAiXCIiKQorICAgICAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAg
ICAgICB0b2tlbi52YWx1ZSArPSBjaGFyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB5aWVsZCB0b2tlbjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNPcGVyYXRvci50ZXN0
KGxpbmUpKQorICAgICAgICAgICAgICAgIHlpZWxkIGNvbnN1bWUoIm9wZXJhdG9yIik7CisgICAg
ICAgICAgICBlbHNlIGlmIChpc1JlbS50ZXN0KGxpbmUpKQorICAgICAgICAgICAgICAgIHlpZWxk
IGNvbnN1bWUoInJlbWFyayIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQXQgbGluZSAiICsgc291cmNlTGluZU51bWJlciArICI6IENhbm5vdCBs
ZXggdG9rZW46ICIgKyBsaW5lKTsKKyAgICAgICAgICAgIGNvbnN1bWVXaGl0ZXNwYWNlKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5vdGU6IHRoaXMgaXMgbmVjZXNzYXJ5IGZv
ciB0aGUgcGFyc2VyLCB3aGljaCBtYXkgbG9vay1haGVhZCB3aXRob3V0IGNoZWNraW5nIGlmIHdl
J3JlCisgICAgICAgIC8vIGRvbmUuIEZvcnR1bmF0ZWx5LCBpdCB3b24ndCBsb29rLWFoZWFkIHBh
c3QgYSBuZXdMaW5lLgorICAgICAgICB5aWVsZCB7a2luZDogIm5ld0xpbmUiLCBzdHJpbmc6Ilxu
Iiwgc291cmNlTGluZU51bWJlciwgdXNlckxpbmVOdW1iZXJ9OworICAgIH0KK30KSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvQmFzaWMvbGV4ZXJfdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0Jhc2ljL2xleGVyX3Rlc3QuanMJKHJldmlzaW9uIDApCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL0Jhc2ljL2xleGVyX3Rlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBA
CisidXNlIHN0cmljdCI7Citsb2FkKCJsZXhlci5qcyIpOworbGV0IGcgPSBsZXgoIjEwIHByaW50
IFwiaGVsbG8sIHdvcmxkIVwiXG4yMCBlbmQiKTsKK2ZvciAobGV0IHtzdHJpbmd9IG9mIGcpCisg
ICAgcHJpbnQoc3RyaW5nKTsKKwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9CYXNpYy9udW1iZXIu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9CYXNpYy9udW1iZXIuanMJKHJldmlz
aW9uIDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL251bWJlci5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBOdW1iZXJWYWx1ZSB7CisgICAgY29uc3Ry
dWN0b3IodmFsdWUgPSAwKQorICAgIHsKKyAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKKyAg
ICB9CisgICAgCisgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICAK
KyAgICBhcHBseShzdGF0ZSwgcGFyYW1ldGVycykKKyAgICB7CisgICAgICAgIHN0YXRlLnZhbGlk
YXRlKHBhcmFtZXRlcnMubGVuZ3RoID09IDAsICJTaG91bGQgbm90IHBhc3MgYXJndW1lbnRzIHRv
IHNpbXBsZSBudW1lcmljIHZhcmlhYmxlcyIpOworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7
CisgICAgfQorICAgIAorICAgIGxlZnRBcHBseShzdGF0ZSwgcGFyYW1ldGVycykKKyAgICB7Cisg
ICAgICAgIHN0YXRlLnZhbGlkYXRlKHBhcmFtZXRlcnMubGVuZ3RoID09IDAsICJTaG91bGQgbm90
IHBhc3MgYXJndW1lbnRzIHRvIHNpbXBsZSBudW1lcmljIHZhcmlhYmxlcyIpOworICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICB9CisgICAgCisgICAgYXNzaWduKHZhbHVlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKKyAgICB9Cit9CisKK2NsYXNzIE51bWJlckFycmF5IHsK
KyAgICBjb25zdHJ1Y3RvcihkaW0gPSBbMTFdKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gYWxs
b2NhdGVEaW0oaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBuZXcg
QXJyYXkoZGltW2luZGV4XSk7CisgICAgICAgICAgICBpZiAoaW5kZXggKyAxIDwgZGltLmxlbmd0
aCkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltW2luZGV4XTsgKytp
KQorICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBhbGxvY2F0ZURpbShpbmRleCArIDEp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGRpbVtpbmRleF07ICsraSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gbmV3
IE51bWJlclZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0aGlzLl9hcnJheSA9IGFsbG9jYXRlRGlt
KDApOworICAgICAgICB0aGlzLl9kaW0gPSBkaW07CisgICAgfQorICAgIAorICAgIGFwcGx5KHN0
YXRlLCBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubGVmdEFwcGx5KHN0
YXRlLCBwYXJhbWV0ZXJzKS5hcHBseShzdGF0ZSwgW10pOworICAgIH0KKyAgICAKKyAgICBsZWZ0
QXBwbHkoc3RhdGUsIHBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZGltLmxl
bmd0aCAhPSBwYXJhbWV0ZXJzLmxlbmd0aCkKKyAgICAgICAgICAgIHN0YXRlLmFib3J0KCJFeHBl
Y3RlZCAiICsgdGhpcy5fZGltLmxlbmd0aCArICIgYXJndW1lbnRzIGJ1dCAiICsgcGFyYW1ldGVy
cy5sZW5ndGggKyAiIHdlcmUgcGFzc2VkLiIpOworICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5f
YXJyYXk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgbGV0IGluZGV4ID0gTWF0aC5mbG9vcihwYXJhbWV0ZXJzW2ldKTsK
KyAgICAgICAgICAgIGlmICghKGluZGV4ID49IHN0YXRlLnByb2dyYW0uYmFzZSkgfHwgIShpbmRl
eCA8IHJlc3VsdC5sZW5ndGgpKQorICAgICAgICAgICAgICAgIHN0YXRlLmFib3J0KCJJbmRleCBv
dXQgb2YgYm91bmRzOiAiICsgaW5kZXgpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0W2lu
ZGV4XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KKworY2xh
c3MgTnVtYmVyRnVuY3Rpb24geworICAgIGNvbnN0cnVjdG9yKHBhcmFtZXRlcnMsIGNvZGUpCisg
ICAgeworICAgICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICAgICAgdGhp
cy5fY29kZSA9IGNvZGU7CisgICAgfQorICAgIAorICAgIGFwcGx5KHN0YXRlLCBwYXJhbWV0ZXJz
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3BhcmFtZXRlcnMubGVuZ3RoICE9IHBhcmFtZXRl
cnMubGVuZ3RoKQorICAgICAgICAgICAgc3RhdGUuYWJvcnQoIkV4cGVjdGVkICIgKyB0aGlzLl9w
YXJhbWV0ZXJzLmxlbmd0aCArICIgYXJndW1lbnRzIGJ1dCAiICsgcGFyYW1ldGVycy5sZW5ndGgg
KyAiIHdlcmUgcGFzc2VkIik7CisgICAgICAgIGxldCBvbGRWYWx1ZXMgPSBzdGF0ZS52YWx1ZXM7
CisgICAgICAgIHN0YXRlLnZhbHVlcyA9IG5ldyBNYXAob2xkVmFsdWVzKTsKKyAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc3Rh
dGUudmFsdWVzLnNldCh0aGlzLl9wYXJhbWV0ZXJzW2ldLCBwYXJhbWV0ZXJzW2ldKTsKKyAgICAg
ICAgbGV0IHJlc3VsdCA9IHRoaXMuY29kZS5ldmFsdWF0ZShzdGF0ZSk7CisgICAgICAgIHN0YXRl
LnZhbHVlcyA9IG9sZFZhbHVlczsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
CisgICAgbGVmdEFwcGx5KHN0YXRlLCBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgc3RhdGUu
YWJvcnQoIkNhbm5vdCB1c2UgYSBmdW5jdGlvbiBhcyBhbiBsdmFsdWUiKTsKKyAgICB9Cit9CisK
K2NsYXNzIE5hdGl2ZUZ1bmN0aW9uIHsKKyAgICBjb25zdHJ1Y3RvcihjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgfQorICAgIAorICAgIGFw
cGx5KHN0YXRlLCBwYXJhbWV0ZXJzKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NhbGxiYWNr
Lmxlbmd0aCAhPSBwYXJhbWV0ZXJzLmxlbmd0aCkKKyAgICAgICAgICAgIHN0YXRlLmFib3J0KCJF
eHBlY3RlZCAiICsgdGhpcy5fY2FsbGJhY2subGVuZ3RoICsgIiBhcmd1bWVudHMgYnV0ICIgKyBw
YXJhbWV0ZXJzLmxlbmd0aCArICIgd2VyZSBwYXNzZWQiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2NhbGxiYWNrKC4uLnBhcmFtZXRlcnMpOworICAgIH0KKyAgICAKKyAgICBsZWZ0QXBwbHkoc3Rh
dGUsIHBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBzdGF0ZS5hYm9ydCgiQ2Fubm90IHVzZSBh
IG5hdGl2ZSBmdW5jdGlvbiBhcyBhbiBsdmFsdWUiKTsKKyAgICB9Cit9CisKSW5kZXg6IFBlcmZv
cm1hbmNlVGVzdHMvQmFzaWMvcGFyc2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVz
dHMvQmFzaWMvcGFyc2VyLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9CYXNp
Yy9wYXJzZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rp
b24gcGFyc2UodG9rZW5pemVyKQoreworICAgIGxldCBwcm9ncmFtOworICAgIAorICAgIGxldCBw
dXNoQmFja0J1ZmZlciA9IFtdOworICAgIAorICAgIGZ1bmN0aW9uIG5leHRUb2tlbigpCisgICAg
eworICAgICAgICBpZiAocHVzaEJhY2tCdWZmZXIubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
IHB1c2hCYWNrQnVmZmVyLnBvcCgpOworICAgICAgICBsZXQgcmVzdWx0ID0gdG9rZW5pemVyLm5l
eHQoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5kb25lKQorICAgICAgICAgICAgcmV0dXJuIHtraW5k
OiAiZW5kT2ZGaWxlIiwgc3RyaW5nOiAiPGVuZCBvZiBmaWxlPiJ9OworICAgICAgICByZXR1cm4g
cmVzdWx0LnZhbHVlOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBwdXNoVG9rZW4odG9rZW4p
CisgICAgeworICAgICAgICBwdXNoQmFja0J1ZmZlci5wdXNoKHRva2VuKTsKKyAgICB9CisgICAg
CisgICAgZnVuY3Rpb24gcGVla1Rva2VuKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBu
ZXh0VG9rZW4oKTsKKyAgICAgICAgcHVzaFRva2VuKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNvbnN1bWVLaW5kKGtpbmQpCisgICAg
eworICAgICAgICBsZXQgdG9rZW4gPSBuZXh0VG9rZW4oKTsKKyAgICAgICAgaWYgKHRva2VuLmtp
bmQgIT0ga2luZCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsgdG9rZW4u
c291cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkICIgKyBraW5kICsgIiBidXQgZ290OiAiICsg
dG9rZW4uc3RyaW5nKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdG9rZW47CisgICAgfQor
ICAgIAorICAgIGZ1bmN0aW9uIGNvbnN1bWVUb2tlbihzdHJpbmcpCisgICAgeworICAgICAgICBs
ZXQgdG9rZW4gPSBuZXh0VG9rZW4oKTsKKyAgICAgICAgaWYgKHRva2VuLnN0cmluZy50b0xvd2Vy
Q2FzZSgpICE9IHN0cmluZy50b0xvd2VyQ2FzZSgpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJBdCAiICsgdG9rZW4uc291cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkICIgKyBzdHJp
bmcgKyAiIGJ1dCBnb3Q6ICIgKyB0b2tlbi5zdHJpbmcpOworICAgICAgICByZXR1cm4gdG9rZW47
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGUoKQorICAgIHsKKyAgICAg
ICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnN0cmluZzsKKyAgICAgICAg
bGV0IHJlc3VsdCA9IHtldmFsdWF0ZTogQmFzaWMuVmFyaWFibGUsIG5hbWUsIHBhcmFtZXRlcnM6
IFtdfTsKKyAgICAgICAgaWYgKHBlZWtUb2tlbigpLnN0cmluZyA9PSAiKCIpIHsKKyAgICAgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgICAgICBuZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQucGFyYW1ldGVycy5wdXNoKHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKSk7CisgICAgICAg
ICAgICB9IHdoaWxlIChwZWVrVG9rZW4oKS5zdHJpbmcgPT0gIiwiKTsKKyAgICAgICAgICAgIGNv
bnN1bWVUb2tlbigiKSIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKQorICAgIHsKKyAg
ICAgICAgZnVuY3Rpb24gcGFyc2VQcmltYXJ5KCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0
IHRva2VuID0gbmV4dFRva2VuKCk7CisgICAgICAgICAgICBzd2l0Y2ggKHRva2VuLmtpbmQpIHsK
KyAgICAgICAgICAgIGNhc2UgImlkZW50aWZpZXIiOiB7CisgICAgICAgICAgICAgICAgbGV0IHJl
c3VsdCA9IHtldmFsdWF0ZTogQmFzaWMuTnVtYmVyQXBwbHksIG5hbWU6IHRva2VuLnN0cmluZywg
cGFyYW1ldGVyczogW119OworICAgICAgICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5zdHJpbmcg
PT0gIigiKSB7CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnBhcmFtZXRl
cnMucHVzaChwYXJzZU51bWVyaWNFeHByZXNzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICB9
IHdoaWxlIChwZWVrVG9rZW4oKS5zdHJpbmcgPT0gIiwiKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3VtZVRva2VuKCIpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICBjYXNlICJudW1iZXIiOgorICAgICAgICAgICAgICAgIHJldHVybiB7ZXZhbHVhdGU6IEJhc2lj
LkNvbnN0LCB2YWx1ZTogdG9rZW4udmFsdWV9OworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FzZSAib3BlcmF0b3IiOgorICAgICAgICAgICAgICAgIHN3aXRjaCAodG9rZW4uc3RyaW5n
KSB7CisgICAgICAgICAgICAgICAgY2FzZSAiKCI6IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IHJlc3VsdCA9IHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3VtZVRva2VuKCIpIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgfSB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0b2tlbi5zb3VyY2VMaW5lTnVt
YmVyICsgIjogZXhwZWN0ZWQgaWRlbnRpZmllciwgbnVtYmVyLCBvciAoLCBidXQgZ290OiAiICsg
dG9rZW4uc3RyaW5nKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gcGFy
c2VGYWN0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQgcHJpbWFyeSA9IHBhcnNlUHJp
bWFyeSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBsZXQgb2sgPSB0cnVlOworICAgICAg
ICAgICAgd2hpbGUgKG9rKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChwZWVrVG9rZW4oKS5z
dHJpbmcpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJeIjoKKyAgICAgICAgICAgICAgICAgICAg
bmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgIHByaW1hcnkgPSB7ZXZhbHVhdGU6IEJh
c2ljLk51bWJlclBvdywgbGVmdDogcHJpbWFyeSwgcmlnaHQ6IHBhcnNlUHJpbWFyeSgpfTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICByZXR1cm4gcHJpbWFyeTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24g
cGFyc2VUZXJtKCkKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IGZhY3RvciA9IHBhcnNlRmFj
dG9yKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxldCBvayA9IHRydWU7CisgICAgICAg
ICAgICB3aGlsZSAob2spIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBlZWtUb2tlbigpLnN0
cmluZykgeworICAgICAgICAgICAgICAgIGNhc2UgIioiOgorICAgICAgICAgICAgICAgICAgICBu
ZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgZmFjdG9yID0ge2V2YWx1YXRlOiBCYXNp
Yy5OdW1iZXJNdWwsIGxlZnQ6IGZhY3RvciwgcmlnaHQ6IHBhcnNlRmFjdG9yKCl9OworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICIvIjoKKyAgICAgICAg
ICAgICAgICAgICAgbmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgIGZhY3RvciA9IHtl
dmFsdWF0ZTogQmFzaWMuTnVtYmVyRGl2LCBsZWZ0OiBmYWN0b3IsIHJpZ2h0OiBwYXJzZUZhY3Rv
cigpfTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICByZXR1cm4gZmFjdG9yOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAv
LyBPbmx5IHRoZSBsZWFkaW5nIHRlcm0gaW4gQmFzaWMgY2FuIGhhdmUgYSBzaWduLgorICAgICAg
ICBsZXQgbmVnYXRlID0gZmFsc2U7CisgICAgICAgIHN3aXRjaCAocGVla1Rva2VuKCkuc3RyaW5n
KSB7CisgICAgICAgIGNhc2UgIisiOgorICAgICAgICAgICAgbmV4dFRva2VuKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiLSI6CisgICAgICAgICAgICBuZWdhdGUgPSB0cnVl
OworICAgICAgICAgICAgbmV4dFRva2VuKCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBsZXQgdGVybSA9IHBhcnNlVGVybSgpOworICAgICAgICBpZiAo
bmVnYXRlKQorICAgICAgICAgICAgdGVybSA9IHtldmFsdWF0ZTogQmFzaWMuTnVtYmVyTmVnLCB0
ZXJtOiB0ZXJtfTsKKyAgICAgICAgCisgICAgICAgIGxldCBvayA9IHRydWU7CisgICAgICAgIHdo
aWxlIChvaykgeworICAgICAgICAgICAgc3dpdGNoIChwZWVrVG9rZW4oKS5zdHJpbmcpIHsKKyAg
ICAgICAgICAgIGNhc2UgIisiOgorICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOworICAgICAg
ICAgICAgICAgIHRlcm0gPSB7ZXZhbHVhdGU6IEJhc2ljLk51bWJlckFkZCwgbGVmdDogdGVybSwg
cmlnaHQ6IHBhcnNlVGVybSgpfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgIi0iOgorICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOworICAgICAgICAgICAgICAg
IHRlcm0gPSB7ZXZhbHVhdGU6IEJhc2ljLk51bWJlclN1YiwgbGVmdDogdGVybSwgcmlnaHQ6IHBh
cnNlVGVybSgpfTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRlcm07Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlQ29uc3RhbnQoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChwZWVrVG9rZW4oKS5zdHJpbmcpIHsKKyAgICAgICAgY2FzZSAiKyI6CisgICAgICAg
ICAgICBuZXh0VG9rZW4oKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lS2luZCgibnVtYmVy
IikudmFsdWU7CisgICAgICAgIGNhc2UgIi0iOgorICAgICAgICAgICAgbmV4dFRva2VuKCk7Cisg
ICAgICAgICAgICByZXR1cm4gLWNvbnN1bWVLaW5kKCJudW1iZXIiKS52YWx1ZTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChpc1N0cmluZ0V4cHJlc3Npb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY29uc3VtZUtpbmQoInN0cmluZyIpLnZhbHVlOworICAgICAgICAgICAg
cmV0dXJuIGNvbnN1bWVLaW5kKCJudW1iZXIiKS52YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBmdW5jdGlvbiBwYXJzZVN0cmluZ0V4cHJlc3Npb24oKQorICAgIHsKKyAgICAgICAg
bGV0IHRva2VuID0gbmV4dFRva2VuKCk7CisgICAgICAgIHN3aXRjaCAodG9rZW4ua2luZCkgewor
ICAgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICAgICAgcmV0dXJuIHtldmFsdWF0ZTogQmFz
aWMuQ29uc3QsIHZhbHVlOiB0b2tlbi52YWx1ZX07CisgICAgICAgIGNhc2UgImlkZW50aWZpZXIi
OgorICAgICAgICAgICAgY29uc3VtZVRva2VuKCIkIik7CisgICAgICAgICAgICByZXR1cm4ge2V2
YWx1YXRlOiBCYXNpYy5TdHJpbmdWYXIsIG5hbWU6IHRva2VuLnN0cmluZ307CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0b2tlbi5zb3VyY2VM
aW5lTnVtYmVyICsgIjogZXhwZWN0ZWQgc3RyaW5nIGV4cHJlc3Npb24gYnV0IGdvdCAiICsgdG9r
ZW4uc3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBpc1N0cmlu
Z0V4cHJlc3Npb24oKQorICAgIHsKKyAgICAgICAgLy8gQSBzdHJpbmcgZXhwcmVzc2lvbiBtdXN0
IHN0YXJ0IHdpdGggYSBzdHJpbmcgdmFyaWFibGUgb3IgYSBzdHJpbmcgY29uc3RhbnQuCisgICAg
ICAgIGxldCB0b2tlbiA9IG5leHRUb2tlbigpOworICAgICAgICBpZiAodG9rZW4ua2luZCA9PSAi
c3RyaW5nIikgeworICAgICAgICAgICAgcHVzaFRva2VuKHRva2VuKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0b2tlbi5raW5kID09ICJpZGVudGlm
aWVyIikgeworICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHBlZWtUb2tlbigpLnN0cmluZyA9PSAi
JCI7CisgICAgICAgICAgICBwdXNoVG9rZW4odG9rZW4pOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorICAgICAgICBwdXNoVG9rZW4odG9rZW4pOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlUmVsYXRpb25hbEV4cHJl
c3Npb24oKQorICAgIHsKKyAgICAgICAgaWYgKGlzU3RyaW5nRXhwcmVzc2lvbigpKSB7CisgICAg
ICAgICAgICBsZXQgbGVmdCA9IHBhcnNlU3RyaW5nRXhwcmVzc2lvbigpOworICAgICAgICAgICAg
bGV0IG9wZXJhdG9yID0gbmV4dFRva2VuKCk7CisgICAgICAgICAgICBsZXQgZXZhbHVhdGU7Cisg
ICAgICAgICAgICBzd2l0Y2ggKG9wZXJhdG9yLnN0cmluZykgeworICAgICAgICAgICAgY2FzZSAi
PSI6CisgICAgICAgICAgICAgICAgZXZhbHVhdGUgPSBCYXNpYy5FcXVhbHM7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICI8PiI6CisgICAgICAgICAgICAgICAgZXZh
bHVhdGUgPSBCYXNpYy5Ob3RFcXVhbHM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiArIG9w
ZXJhdG9yLnNvdXJjZUxpbmVOdW1iZXIgKyAiOiBleHBlY3RlZCBhIHN0cmluZyBjb21wYXJpc29u
IG9wZXJhdG9yIGJ1dCBnb3Q6ICIgKyBvcGVyYXRvci5zdHJpbmcpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIHtldmFsdWF0ZSwgbGVmdCwgcmlnaHQ6IHBhcnNlU3RyaW5nRXhw
cmVzc2lvbigpfTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbGV0IGxlZnQgPSBwYXJz
ZU51bWVyaWNFeHByZXNzaW9uKCk7CisgICAgICAgIGxldCBvcGVyYXRvciA9IG5leHRUb2tlbigp
OworICAgICAgICBsZXQgZXZhbHVhdGU7CisgICAgICAgIHN3aXRjaCAob3BlcmF0b3Iuc3RyaW5n
KSB7CisgICAgICAgIGNhc2UgIj0iOgorICAgICAgICAgICAgZXZhbHVhdGUgPSBCYXNpYy5FcXVh
bHM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiPD4iOgorICAgICAgICAgICAg
ZXZhbHVhdGUgPSBCYXNpYy5Ob3RFcXVhbHM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAiPCI6CisgICAgICAgICAgICBldmFsdWF0ZSA9IEJhc2ljLkxlc3NUaGFuOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIj4iOgorICAgICAgICAgICAgZXZhbHVhdGUgPSBC
YXNpYy5HcmVhdGVyVGhhbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICI8PSI6
CisgICAgICAgICAgICBldmFsdWF0ZSA9IEJhc2ljLkxlc3NFcXVhbDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlICI+PSI6CisgICAgICAgICAgICBldmFsdWF0ZSA9IEJhc2ljLkdy
ZWF0ZXJFcXVhbDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsgb3BlcmF0b3Iuc291cmNlTGluZU51bWJlciAr
ICI6IGV4cGVjdGVkIGEgbnVtZXJpYyBjb21wYXJpc29uIG9wZXJhdG9yIGJ1dCBnb3Q6ICIgKyBv
cGVyYXRvci5zdHJpbmcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7ZXZhbHVhdGUsIGxl
ZnQsIHJpZ2h0OiBwYXJzZU51bWVyaWNFeHByZXNzaW9uKCl9OworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiBwYXJzZU5vbk5lZ2F0aXZlSW50ZWdlcigpCisgICAgeworICAgICAgICBsZXQgdG9r
ZW4gPSBuZXh0VG9rZW4oKTsKKyAgICAgICAgaWYgKCEvXlswLTldKyQvLnRlc3QodG9rZW4uc3Ry
aW5nKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiwgdG9rZW4uc291cmNlTGlu
ZU51bWJlciArICI6IGV4cGVjdGVkIGEgbGluZSBudW1iZXIgYnV0IGdvdDogIiArIHRva2VuLnN0
cmluZyk7CisgICAgICAgIHJldHVybiB0b2tlbi52YWx1ZTsKKyAgICB9CisgICAgCisgICAgZnVu
Y3Rpb24gcGFyc2VHb1RvU3RhdGVtZW50KCkKKyAgICB7CisgICAgICAgIHN0YXRlbWVudC5raW5k
ID0gQmFzaWMuR29UbzsKKyAgICAgICAgc3RhdGVtZW50LnRhcmdldCA9IHBhcnNlTm9uTmVnYXRp
dmVJbnRlZ2VyKCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlR29TdWJTdGF0ZW1l
bnQoKQorICAgIHsKKyAgICAgICAgc3RhdGVtZW50LmtpbmQgPSBCYXNpYy5Hb1N1YjsKKyAgICAg
ICAgc3RhdGVtZW50LnRhcmdldCA9IHBhcnNlTm9uTmVnYXRpdmVJbnRlZ2VyKCk7CisgICAgfQor
ICAgIAorICAgIGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KCkKKyAgICB7CisgICAgICAgIGxldCBz
dGF0ZW1lbnQgPSB7fTsKKyAgICAgICAgc3RhdGVtZW50LmxpbmVOdW1iZXIgPSBjb25zdW1lS2lu
ZCgidXNlckxpbmVOdW1iZXIiKS51c2VyTGluZU51bWJlcjsKKyAgICAgICAgcHJvZ3JhbS5zdGF0
ZW1lbnRzLnNldChzdGF0ZW1lbnQubGluZU51bWJlciwgc3RhdGVtZW50KTsKKyAgICAgICAgCisg
ICAgICAgIGxldCBjb21tYW5kID0gbmV4dFRva2VuKCk7CisgICAgICAgIHN0YXRlbWVudC5zb3Vy
Y2VMaW5lTnVtYmVyID0gY29tbWFuZC5zb3VyY2VMaW5lTnVtYmVyOworICAgICAgICBzd2l0Y2gg
KGNvbW1hbmQua2luZCkgeworICAgICAgICBjYXNlICJrZXl3b3JkIjoKKyAgICAgICAgICAgIHN3
aXRjaCAoY29tbWFuZC5zdHJpbmcudG9Mb3dlckNhc2UoKSkgeworICAgICAgICAgICAgY2FzZSAi
ZGVmIjoKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLkRlZjsKKyAg
ICAgICAgICAgICAgICBzdGF0ZW1lbnQubmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7
CisgICAgICAgICAgICAgICAgc3RhdGVtZW50LnBhcmFtZXRlcnMgPSBbXTsKKyAgICAgICAgICAg
ICAgICBpZiAocGVla1Rva2VuKCkuc3RyaW5nID09ICIoIikgeworICAgICAgICAgICAgICAgICAg
ICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0VG9rZW4oKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlbWVudC5wYXJhbWV0ZXJzLnB1c2goY29uc3VtZUtpbmQoImlkZW50
aWZpZXIiKSk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHBlZWtUb2tlbigpLnN0cmlu
ZyA9PSAiLCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQu
ZXhwcmVzc2lvbiA9IHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgImxldCI6CisgICAgICAgICAgICAgICAgc3RhdGVtZW50
LnByb2Nlc3MgPSBCYXNpYy5MZXQ7CisgICAgICAgICAgICAgICAgc3RhdGVtZW50LnZhcmlhYmxl
ID0gcGFyc2VWYXJpYWJsZSgpOworICAgICAgICAgICAgICAgIGNvbnN1bWVUb2tlbigiPSIpOwor
ICAgICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQucHJvY2VzcyA9PSBCYXNpYy5MZXQpCisgICAg
ICAgICAgICAgICAgICAgIHN0YXRlbWVudC5leHByZXNzaW9uID0gcGFyc2VOdW1lcmljRXhwcmVz
c2lvbigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVt
ZW50LmV4cHJlc3Npb24gPSBwYXJzZVN0cmluZ0V4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgImdvIjogeworICAgICAgICAgICAgICAgIGxldCBu
ZXh0ID0gbmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHQuc3RyaW5nID09ICJ0
byIpCisgICAgICAgICAgICAgICAgICAgIHBhcnNlR29Ub1N0YXRlbWVudCgpOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG5leHQuc3RyaW5nID09ICJzdWIiKQorICAgICAgICAgICAgICAgICAg
ICBwYXJzZUdvU3ViU3RhdGVtZW50KCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyBuZXh0LnNvdXJjZUxpbmVOdW1iZXIg
KyAiOiBleHBlY3RlZCB0byBvciBzdWIgYnV0IGdvdDogIiArIG5leHQuc3RyaW5nKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgImdvdG8i
OgorICAgICAgICAgICAgICAgIHBhcnNlR29Ub1N0YXRlbWVudCgpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAiZ29zdWIiOgorICAgICAgICAgICAgICAgIHBhcnNl
R29TdWJTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgImlmIjoKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLklmOwor
ICAgICAgICAgICAgICAgIHN0YXRlbWVudC5jb25kaXRpb24gPSBwYXJzZVJlbGF0aW9uYWxFeHBy
ZXNzaW9uKCk7CisgICAgICAgICAgICAgICAgY29uc3VtZVRva2VuKCJ0aGVuIik7CisgICAgICAg
ICAgICAgICAgc3RhdGVtZW50LnRhcmdldCA9IHBhcnNlTm9uTmVnYXRpdmVJbnRlZ2VyKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJyZXR1cm4iOgorICAgICAg
ICAgICAgICAgIHN0YXRlbWVudC5wcm9jZXNzID0gQmFzaWMuUmV0dXJuOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAic3RvcCI6CisgICAgICAgICAgICAgICAgc3Rh
dGVtZW50LnByb2Nlc3MgPSBCYXNpYy5TdG9wOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAib24iOgorICAgICAgICAgICAgICAgIHN0YXRlbWVudC5wcm9jZXNzID0g
QmFzaWMuT247CisgICAgICAgICAgICAgICAgc3RhdGVtZW50LmV4cHJlc3Npb24gPSBwYXJzZU51
bWVyaWNFeHByZXNzaW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKHBlZWtUb2tlbigpLnN0cmlu
ZyA9PSAiZ28iKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVUb2tlbigiZ28iKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3VtZVRva2VuKCJ0byIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICBjb25zdW1lVG9rZW4oImdvdG8iKTsKKyAgICAgICAg
ICAgICAgICBzdGF0ZW1lbnQudGFyZ2V0cyA9IFtdOworICAgICAgICAgICAgICAgIGZvciAoOzsp
IHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRhcmdldHMucHVzaChwYXJzZU5vbk5l
Z2F0aXZlSW50ZWdlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBlZWtUb2tlbigpLnN0
cmluZyAhPSAiLCIpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgbmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAiZm9yIjoKKyAgICAgICAgICAgICAgICBzdGF0ZW1l
bnQucHJvY2VzcyA9IEJhc2ljLkZvcjsKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQudmFyaWFi
bGUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnN0cmluZzsKKyAgICAgICAgICAgICAgICBj
b25zdW1lVG9rZW4oIj0iKTsKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuaW5pdGlhbCA9IHBh
cnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBjb25zdW1lVG9rZW4oInRv
Iik7CisgICAgICAgICAgICAgICAgc3RhdGVtZW50LmxpbWl0ID0gcGFyc2VOdW1lcmljRXhwcmVz
c2lvbigpOworICAgICAgICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5zdHJpbmcgPT0gInN0ZXAi
KSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAg
ICBzdGF0ZW1lbnQuc3RlcCA9IHBhcnNlTnVtZXJpY0V4cHJlc3Npb24oKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnN0ZXAgPSB7ZXZhbHVh
dGU6IEJhc2ljLkNvbnN0LCB2YWx1ZTogMX07CisgICAgICAgICAgICAgICAgY29uc3VtZUtpbmQo
Im5ld0xpbmUiKTsKKyAgICAgICAgICAgICAgICBsZXQgbGFzdFN0YXRlbWVudCA9IHBhcnNlU3Rh
dGVtZW50cygpOworICAgICAgICAgICAgICAgIGlmIChsYXN0U3RhdGVtZW50LnByb2Nlc3MgIT0g
QmFzaWMuTmV4dCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsg
bGFzdFN0YXRlbWVudC5zb3VyY2VMaW5lTnVtYmVyICsgIjogZXhwZWN0ZWQgbmV4dCBzdGF0ZW1l
bnQiKTsKKyAgICAgICAgICAgICAgICBpZiAobGFzdFN0YXRlbWVudC52YXJpYWJsZSAhPSBzdGF0
ZW1lbnQudmFyaWFibGUpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQg
IiArIGxhc3RTdGF0ZW1lbnQuc291cmNlTGluZU51bWJlciArICI6IGV4cGVjdGVkIG5leHQgZm9y
ICIgKyBzdGF0ZW1lbnQudmFyaWFibGUgKyAiIGJ1dCBnb3QgIiArIGxhc3RTdGF0ZW1lbnQudmFy
aWFibGUpOworICAgICAgICAgICAgICAgIGxhc3RTdGF0ZW1lbnQudGFyZ2V0ID0gc3RhdGVtZW50
OworICAgICAgICAgICAgICAgIHN0YXRlbWVudC50YXJnZXQgPSBsYXN0U3RhdGVtZW50OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7CisgICAgICAgICAgICBjYXNlICJuZXh0IjoK
KyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLk5leHQ7CisgICAgICAg
ICAgICAgICAgc3RhdGVtZW50LnZhcmlhYmxlID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS5z
dHJpbmc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJwcmludCI6
IHsKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLlByaW50OworICAg
ICAgICAgICAgICAgIHN0YXRlbWVudC5pdGVtcyA9IFtdOworICAgICAgICAgICAgICAgIGxldCBv
ayA9IHRydWU7CisgICAgICAgICAgICAgICAgd2hpbGUgKG9rKSB7CisgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAocGVla1Rva2VuKCkuc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgIiwiOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFRva2VuKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZW1lbnQuaXRlbXMucHVzaCh7a2luZDogImNvbW1hIn0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgIjsi
OgorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAidGFiIjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3VtZVRva2VuKCIoIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuaXRlbXMu
cHVzaCh7a2luZDogInRhYiIsIHZhbHVlOiBwYXJzZU51bWVyaWNFeHByZXNzaW9uKCl9KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICJc
biI6CisgICAgICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNTdHJpbmdFeHByZXNzaW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0ZW1lbnQuaXRlbXMucHVzaCh7a2luZDogInN0cmluZyIsIHZhbHVl
OiBwYXJzZVN0cmluZ0V4cHJlc3Npb24oKX0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGVtZW50Lml0ZW1zLnB1c2goe2tpbmQ6ICJudW1iZXIiLCB2YWx1ZTogcGFyc2VOdW1l
cmljRXhwcmVzc2lvbigpfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgImlucHV0IjoKKyAgICAgICAgICAg
ICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9IEJhc2ljLklucHV0OworICAgICAgICAgICAgICAgIHN0
YXRlbWVudC5pdGVtcyA9IFtdOworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhbWVudC5pdGVtcy5wdXNoKHBhcnNlVmFyaWFibGUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5zdHJpbmcgIT0gIiwiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
InJlYWQiOgorICAgICAgICAgICAgICAgIHN0YXRlbWVudC5wcm9jZXNzID0gQmFzaWMuUmVhZDsK
KyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuaXRlbXMgPSBbXTsKKyAgICAgICAgICAgICAgICBm
b3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIHN0YW1lbnQuaXRlbXMucHVzaChwYXJzZVZh
cmlhYmxlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAocGVla1Rva2VuKCkuc3RyaW5nICE9
ICIsIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBuZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICJyZXN0b3JlIjoKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQu
cHJvY2VzcyA9IEJhc2ljLlJlc3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICJkYXRhIjoKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW0uZGF0YS5wdXNoKHBhcnNlQ29uc3RhbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5zdHJpbmcgIT0gIiwiKQorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIG5leHRUb2tlbigpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgImRp
bSI6CisgICAgICAgICAgICAgICAgc3RhdGVtZW50LnByb2Nlc3MgPSBCYXNpYy5EaW07CisgICAg
ICAgICAgICAgICAgc3RhdGVtZW50Lml0ZW1zID0gW107CisgICAgICAgICAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlm
aWVyIikuc3RyaW5nOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lVG9rZW4oIigiKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IGJvdW5kcyA9IFtdOworICAgICAgICAgICAgICAgICAgICBi
b3VuZHMucHVzaChwYXJzZU5vbk5lZ2F0aXZlSW50ZWdlcigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHBlZWtUb2tlbigpLnN0cmluZyA9PSAiLCIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLnB1c2gocGFy
c2VOb25OZWdhdGl2ZUludGVnZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgY29uc3VtZVRva2VuKCIpIik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRl
bWVudC5pdGVtcy5wdXNoKHtuYW1lLCBib3VuZHN9KTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIGlmIChwZWVrVG9rZW4oKS5zdHJpbmcgIT0gIiwiKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVUb2tl
bigiLCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgIm9wdGlvbiI6IHsKKyAgICAgICAgICAgICAgICBjb25zdW1lVG9rZW4oImJh
c2UiKTsKKyAgICAgICAgICAgICAgICBsZXQgYmFzZSA9IHBhcnNlTm9uTmVnYXRpdmVJbnRlZ2Vy
KCk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UgIT0gMCAmJiBiYXNlICE9IDEpCisgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQXQgIiArIGNvbW1hbmQuc291cmNlTGluZU51
bWJlciArICI6IHVuZXhwZWN0ZWQgYmFzZTogIiArIGJhc2UpOworICAgICAgICAgICAgICAgIHBy
b2dyYW0uYmFzZSA9IGJhc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjYXNlICJyYW5kb21pemUiOgorICAgICAgICAgICAgICAgIHN0YXRlbWVu
dC5wcm9jZXNzID0gQmFzaWMuUmFuZG9taXplOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSAiZW5kIjoKKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQucHJvY2VzcyA9
IEJhc2ljLkVuZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdCAiICsgY29tbWFuZC5zb3VyY2VM
aW5lTnVtYmVyICsgIjogdW5leHBlY3RlZCBjb21tYW5kIGJ1dCBnb3Q6ICIgKyBjb21tYW5kLnN0
cmluZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
cmVtYXJrIjoKKyAgICAgICAgICAgIC8vIEp1c3QgaWdub3JlIGl0LgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIg
KyBjb21tYW5kLnNvdXJjZUxpbmVOdW1iZXIgKyAiOiBleHBlY3RlZCBjb21tYW5kIGJ1dCBnb3Q6
ICIgKyBjb21tYW5kLnN0cmluZyArICIgKG9mIGtpbmQgIiArIGNvbW1hbmQua2luZCArICIpIik7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN1bWVLaW5kKCJuZXdMaW5lIik7Cisg
ICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBhcnNl
U3RhdGVtZW50cygpCisgICAgeworICAgICAgICBsZXQgc3RhdGVtZW50OworICAgICAgICBkbyB7
CisgICAgICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICB9IHdo
aWxlICghc3RhdGVtZW50LnByb2Nlc3MgfHwgIXN0YXRlbWVudC5wcm9jZXNzLmlzQmxvY2tFbmQp
OworICAgICAgICByZXR1cm4gc3RhdGVtZW50OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gewor
ICAgICAgICBwcm9ncmFtKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3JhbSA9IHsKKyAg
ICAgICAgICAgICAgICBwcm9jZXNzOiBCYXNpYy5Qcm9ncmFtLAorICAgICAgICAgICAgICAgIHN0
YXRlbWVudHM6IG5ldyBNYXAoKSwKKyAgICAgICAgICAgICAgICBkYXRhOiBbXSwKKyAgICAgICAg
ICAgICAgICBiYXNlOiAwCisgICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0IGxhc3RTdGF0
ZW1lbnQgPSBwYXJzZVN0YXRlbWVudHMocHJvZ3JhbS5zdGF0ZW1lbnRzKTsKKyAgICAgICAgICAg
IGlmIChsYXN0U3RhdGVtZW50LnByb2Nlc3MgIT0gQmFzaWMuRW5kKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQXQgIiArIGxhc3RTdGF0ZW1lbnQuc291cmNlTGluZU51bWJlciAr
ICI6IGV4cGVjdGVkIGVuZCIpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gcHJv
Z3JhbTsKKyAgICAgICAgfSwKKyAgICAgICAgCisgICAgICAgIHN0YXRlbWVudChwcm9ncmFtXykK
KyAgICAgICAgeworICAgICAgICAgICAgcHJvZ3JhbSA9IHByb2dyYW1fOworICAgICAgICAgICAg
cmV0dXJuIHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIH0KKyAgICB9OworfQorCkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL3JhbmRvbS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0Jhc2ljL3JhbmRvbS5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
QmFzaWMvcmFuZG9tLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8vIENvcHly
aWdodCAyMDEzIHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZAorLy8gICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisvLyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyJ1c2Ugc3RyaWN0IjsKKworLy8gVGhpcyBpcyBiYXNlZCBv
biBPY3RhbmUncyBSTkcuCitmdW5jdGlvbiBjcmVhdGVSTkcoc2VlZCkKK3sKKyAgICByZXR1cm4g
ZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFJvYmVydCBKZW5raW5zJyAzMiBiaXQgaW50ZWdlciBo
YXNoIGZ1bmN0aW9uLgorICAgICAgICBzZWVkID0gKChzZWVkICsgMHg3ZWQ1NWQxNikgKyAoc2Vl
ZCA8PCAxMikpICAmIDB4ZmZmZmZmZmY7CisgICAgICAgIHNlZWQgPSAoKHNlZWQgXiAweGM3NjFj
MjNjKSBeIChzZWVkID4+PiAxOSkpICYgMHhmZmZmZmZmZjsKKyAgICAgICAgc2VlZCA9ICgoc2Vl
ZCArIDB4MTY1NjY3YjEpICsgKHNlZWQgPDwgNSkpICAgJiAweGZmZmZmZmZmOworICAgICAgICBz
ZWVkID0gKChzZWVkICsgMHhkM2EyNjQ2YykgXiAoc2VlZCA8PCA5KSkgICAmIDB4ZmZmZmZmZmY7
CisgICAgICAgIHNlZWQgPSAoKHNlZWQgKyAweGZkNzA0NmM1KSArIChzZWVkIDw8IDMpKSAgICYg
MHhmZmZmZmZmZjsKKyAgICAgICAgc2VlZCA9ICgoc2VlZCBeIDB4YjU1YTRmMDkpIF4gKHNlZWQg
Pj4+IDE2KSkgJiAweGZmZmZmZmZmOworICAgICAgICByZXR1cm4gKHNlZWQgJiAweGZmZmZmZmYp
IC8gMHgxMDAwMDAwMDsKKyAgICB9OworfQorCitmdW5jdGlvbiBjcmVhdGVSTkdXaXRoRml4ZWRT
ZWVkKCkKK3sKKyAgICAvLyBUaGlzIHVzZXMgT2N0YW5lJ3MgaW5pdGlhbCBzZWVkLgorICAgIHJl
dHVybiBjcmVhdGVSTkcoNDk3MzQzMjEpOworfQorCitmdW5jdGlvbiBjcmVhdGVSTkdXaXRoUmFu
ZG9tU2VlZCgpCit7CisgICAgcmV0dXJuIGNyZWF0ZVJORygoTWF0aC5yYW5kb20oKSAqIDQyOTQ5
NjcyOTYpIHwgMCk7Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL3N0YXRlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQmFzaWMvc3RhdGUuanMJKHJldmlzaW9uIDAp
CisrKyBQZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL3N0YXRlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgU3RhdGUgeworICAgIGNvbnN0cnVjdG9yKHByb2dyYW0p
CisgICAgeworICAgICAgICB0aGlzLnZhbHVlcyA9IG5ldyBDYXNlbGVzc01hcCgpOworICAgICAg
ICB0aGlzLnN0cmluZ1ZhbHVlcyA9IG5ldyBDYXNlbGVzc01hcCgpOworICAgICAgICB0aGlzLnNp
ZGVTdGF0ZSA9IG5ldyBXZWFrTWFwKCk7CisgICAgICAgIHRoaXMuc3RhdGVtZW50ID0gbnVsbDsK
KyAgICAgICAgdGhpcy5uZXh0TGluZU51bWJlciA9IDA7CisgICAgICAgIHRoaXMuc3ViU3RhY2sg
PSBbXTsKKyAgICAgICAgdGhpcy5kYXRhSW5kZXggPSAwOworICAgICAgICB0aGlzLnByb2dyYW0g
PSBwcm9ncmFtOworICAgICAgICB0aGlzLnJuZyA9IGNyZWF0ZVJOR1dpdGhGaXhlZFNlZWQoKTsK
KyAgICAgICAgCisgICAgICAgIGxldCBhZGROYXRpdmUgPSAobmFtZSwgY2FsbGJhY2spID0+IHsK
KyAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChuYW1lLCBuZXcgTmF0aXZlRnVuY3Rpb24oY2Fs
bGJhY2spKTsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGFkZE5hdGl2ZSgiYWJzIiwg
eCA9PiBNYXRoLmFicyh4KSk7CisgICAgICAgIGFkZE5hdGl2ZSgiYXRuIiwgeCA9PiBNYXRoLmF0
YW4oeCkpOworICAgICAgICBhZGROYXRpdmUoImNvcyIsIHggPT4gTWF0aC5jb3MoeCkpOworICAg
ICAgICBhZGROYXRpdmUoImV4cCIsIHggPT4gTWF0aC5leHAoeCkpOworICAgICAgICBhZGROYXRp
dmUoImludCIsIHggPT4gTWF0aC5mbG9vcih4KSk7CisgICAgICAgIGFkZE5hdGl2ZSgibG9nIiwg
eCA9PiBNYXRoLmxvZyh4KSk7CisgICAgICAgIGFkZE5hdGl2ZSgicm5kIiwgKCkgPT4gdGhpcy5y
bmcoKSk7CisgICAgICAgIGFkZE5hdGl2ZSgic2duIiwgeCA9PiBNYXRoLnNpZ24oeCkpOworICAg
ICAgICBhZGROYXRpdmUoInNpbiIsIHggPT4gTWF0aC5zaW4oeCkpOworICAgICAgICBhZGROYXRp
dmUoInNxciIsIHggPT4gTWF0aC5zcXJ0KHgpKTsKKyAgICAgICAgYWRkTmF0aXZlKCJ0YW4iLCB4
ID0+IE1hdGgudGFuKHgpKTsKKyAgICB9CisgICAgCisgICAgZ2V0VmFsdWUobmFtZSwgbnVtUGFy
YW1ldGVycykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnZhbHVlcy5oYXMobmFtZSkpCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0KG5hbWUpOworCisgICAgICAgIGxldCByZXN1
bHQ7CisgICAgICAgIGlmIChudW1QYXJhbWV0ZXJzID09IDApCisgICAgICAgICAgICByZXN1bHQg
PSBuZXcgTnVtYmVyVmFsdWUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsZXQgZGlt
ID0gW107CisgICAgICAgICAgICB3aGlsZSAobnVtUGFyYW1ldGVycy0tKQorICAgICAgICAgICAg
ICAgIGRpbS5wdXNoKDExKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBOdW1iZXJBcnJheShk
aW0pOworICAgICAgICB9CisgICAgICAgIHRoaXMudmFsdWVzLnNldChuYW1lLCByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBnZXRTaWRlU3RhdGUoa2V5
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnNpZGVTdGF0ZS5oYXMoa2V5KSkgeworICAgICAg
ICAgICAgbGV0IHJlc3VsdCA9IHt9OworICAgICAgICAgICAgdGhpcy5zaWRlU3RhdGUuc2V0KGtl
eSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRoaXMuc2lkZVN0YXRlLmdldChrZXkpOworICAgIH0KKyAgICAKKyAgICBhYm9y
dCh0ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnN0YXRlbWVudCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQXQgYmVnaW5uaW5nIG9mIGV4ZWN1dGlvbjogIiArIHRleHQpOwor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0ICIgKyB0aGlzLnN0YXRlbWVudC5zb3VyY2VMaW5l
TnVtYmVyICsgIjogIiArIHRleHQpOworICAgIH0KKyAgICAKKyAgICB2YWxpZGF0ZShwcmVkaWNh
dGUsIHRleHQpCisgICAgeworICAgICAgICBpZiAoIXByZWRpY2F0ZSkKKyAgICAgICAgICAgIHRo
aXMuYWJvcnQodGV4dCk7CisgICAgfQorfQorCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Jhc2lj
L3Rlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL3Rlc3QuaHRt
bAkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQmFzaWMvdGVzdC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+QmFzaWM8
L3RpdGxlPgorPHNjcmlwdCBzcmM9ImFzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFz
aWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNhc2VsZXNzX21hcC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ibGV4ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im51bWJlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icGFyc2VyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyYW5kb20uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InN0YXRlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJiZW5jaG1h
cmsuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJ1bkJlbmNobWFyaygpOworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdC1zdW1tYXJ5IikuaW5uZXJI
VE1MID0gIlRoYXQgdG9vayAiICsgcmVzdWx0ICsgIiBtcy4iOworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0LXN1bW1hcnki
KS5pbm5lckhUTUwgPSAiRmFpbGVkOiAiICsgZTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+QmFzaWM8L2gxPgorPHA+CisgIDxkaXYgaWQ9InJlc3Vs
dC1zdW1tYXJ5Ij48L2Rpdj4KKyAgPGRpdj48YSBocmVmPSJqYXZhc2NyaXB0OnJ1blRlc3QoKSI+
U3RhcnQgVGVzdDwvYT48L2Rpdj4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKworCkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL3Rlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9CYXNpYy90ZXN0LmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9CYXNp
Yy90ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKyJ1c2Ugc3RyaWN0IjsK
KworbG9hZCgiYXN0LmpzIik7Citsb2FkKCJiYXNpYy5qcyIpOworbG9hZCgiY2FzZWxlc3NfbWFw
LmpzIik7Citsb2FkKCJsZXhlci5qcyIpOworbG9hZCgibnVtYmVyLmpzIik7Citsb2FkKCJwYXJz
ZXIuanMiKTsKK2xvYWQoInJhbmRvbS5qcyIpOworbG9hZCgic3RhdGUuanMiKTsKK2xvYWQoInV0
aWwuanMiKTsKKworbG9hZCgiYmVuY2htYXJrLmpzIik7CisKK2xldCByZXN1bHQgPSBydW5CZW5j
aG1hcmsoKTsKK3ByaW50KCJUaGF0IHRvb2sgIiArIHJlc3VsdCArICIgbXMuIik7CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0Jhc2ljL3V0aWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9CYXNpYy91dGlsLmpzCShyZXZpc2lvbiAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9CYXNp
Yy91dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworbGV0IGN1cnJl
bnRUaW1lOworaWYgKHRoaXMucGVyZm9ybWFuY2UgJiYgcGVyZm9ybWFuY2Uubm93KQorICAgIGN1
cnJlbnRUaW1lID0gZnVuY3Rpb24oKSB7IHJldHVybiBwZXJmb3JtYW5jZS5ub3coKSB9OworZWxz
ZSBpZiAodGhpcy5wcmVjaXNlVGltZSkKKyAgICBjdXJyZW50VGltZSA9IGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gcHJlY2lzZVRpbWUoKSAqIDEwMDA7IH07CitlbHNlCisgICAgY3VycmVudFRpbWUgPSBm
dW5jdGlvbigpIHsgcmV0dXJuICtuZXcgRGF0ZSgpOyB9OworCg==
</data>
<flag name="review"
          id="305844"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>