<?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>176294</bug_id>
          
          <creation_ts>2017-09-03 00:10:34 -0700</creation_ts>
          <short_desc>Add &quot;if&quot; statements to WSL</short_desc>
          <delta_ts>2018-10-13 17:04:33 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=176631</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344932</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 00:10:34 -0700</bug_when>
    <thetext>Add &quot;if&quot; statements to WSL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344933</commentid>
    <comment_count>1</comment_count>
      <attachid>319763</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 00:11:25 -0700</bug_when>
    <thetext>Created attachment 319763
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344989</commentid>
    <comment_count>2</comment_count>
      <attachid>319763</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-03 10:26:52 -0700</bug_when>
    <thetext>Comment on attachment 319763
WIP

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

&gt; Tools/WebGPUShadingLanguageRI/NameResolver.js:178
&gt; +            let argumentIsType = node.typeArguments[i] instanceof Type || node.typeArguments[i] instanceof TypeOrVariableRef;

I&apos;m not sure about this. We may need to have an intermediary pass where we replace all the TypeOrVariableRefs with the right thing. WDYT, Fil?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344991</commentid>
    <comment_count>3</comment_count>
      <attachid>319763</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-03 10:37:15 -0700</bug_when>
    <thetext>Comment on attachment 319763
WIP

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

&gt;&gt; Tools/WebGPUShadingLanguageRI/NameResolver.js:178
&gt;&gt; +            let argumentIsType = node.typeArguments[i] instanceof Type || node.typeArguments[i] instanceof TypeOrVariableRef;
&gt; 
&gt; I&apos;m not sure about this. We may need to have an intermediary pass where we replace all the TypeOrVariableRefs with the right thing. WDYT, Fil?

It’s NameResolver’s job. Look for a typo in _resolveTypeArguments: typeArgument[i] should be typeArguments[i]. I fixed it in one of my patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346650</commentid>
    <comment_count>4</comment_count>
      <attachid>320210</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-07 17:13:03 -0700</bug_when>
    <thetext>Created attachment 320210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346695</commentid>
    <comment_count>5</comment_count>
      <attachid>320210</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-07 19:38:57 -0700</bug_when>
    <thetext>Comment on attachment 320210
Patch

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

R=me but I wouldn’t remove the type checks.

&gt; Tools/WebGPUShadingLanguageRI/Checker.js:222
&gt; +        // make sure that the operand is a bool.

I would still check though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346696</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-07 19:57:42 -0700</bug_when>
    <thetext>Committed r221776: &lt;http://trac.webkit.org/changeset/221776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346740</commentid>
    <comment_count>7</comment_count>
      <attachid>320210</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-08 00:09:32 -0700</bug_when>
    <thetext>Comment on attachment 320210
Patch

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

&gt; Tools/WebGPUShadingLanguageRI/Checker.js:221
&gt; +        // The parser forcably emits a bool cast on the operand, so we don&apos;t need to

Typo: should be forcibly

&gt; Tools/WebGPUShadingLanguageRI/Parse.js:583
&gt; +        if (token.text == &quot;if&quot;)

Nit: it feels like it’s time to make this a switch instead of cascading “if”s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346741</commentid>
    <comment_count>8</comment_count>
      <attachid>320210</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-08 00:11:09 -0700</bug_when>
    <thetext>Comment on attachment 320210
Patch

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

&gt;&gt; Tools/WebGPUShadingLanguageRI/Checker.js:221
&gt;&gt; +        // The parser forcably emits a bool cast on the operand, so we don&apos;t need to
&gt; 
&gt; Typo: should be forcibly

Ignore me your landed patch doesn’t have this comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347018</commentid>
    <comment_count>9</comment_count>
      <attachid>320210</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-08 17:46:24 -0700</bug_when>
    <thetext>Comment on attachment 320210
Patch

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

&gt; Tools/WebGPUShadingLanguageRI/Evaluator.js:160
&gt; +    visitIfStatement(node)
&gt; +    {
&gt; +        if (node.conditional.visit(this).loadValue())
&gt; +            return node.body.visit(this);
&gt; +        else if (node.elseBody)
&gt; +            return node.elseBody.visit(this);
&gt; +    }

Is the implicit return value expected? If so, maybe make it explicit, I don&apos;t see any other code expecting/depending on implicit return values.

    if (...)
        return node.body.visit(this);
    if (node.elseBody)
        return node.elseBody.visit(this);
    return undefined;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347117</commentid>
    <comment_count>10</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-09 09:53:54 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; Committed r221776: &lt;http://trac.webkit.org/changeset/221776&gt;

This change caused wsl-tests.yaml/Test.js.ftl-eager-no-cjit to time out on debug JSC bots. Details in https://bugs.webkit.org/show_bug.cgi?id=176631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347119</commentid>
    <comment_count>11</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-09 09:56:59 -0700</bug_when>
    <thetext>Reverted r221776 for reason:

This change caused wsl-tests.yaml/Test.js to time out on Debug JSC bots.

Committed r221824: &lt;http://trac.webkit.org/changeset/221824&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347130</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-09 10:33:36 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #11)
&gt; Reverted r221776 for reason:
&gt; 
&gt; This change caused wsl-tests.yaml/Test.js to time out on Debug JSC bots.
&gt; 
&gt; Committed r221824: &lt;http://trac.webkit.org/changeset/221824&gt;

In the future, can we skip this test instead, if it times out?

Timeouts on this test are rarely real bugs, so rolling things out due to timeouts on this test doesn’t help us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347139</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-09 12:05:09 -0700</bug_when>
    <thetext>*** Bug 176631 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347167</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-09 15:08:14 -0700</bug_when>
    <thetext>Relanded in https://trac.webkit.org/changeset/221829/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353576</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:39:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468955</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 17:04:33 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/156</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319763</attachid>
            <date>2017-09-03 00:11:25 -0700</date>
            <delta_ts>2017-09-07 17:13:02 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-176294-20170903001124.patch</filename>
            <type>text/plain</type>
            <size>10899</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjk5NDQ1N2VmYWU4NjQ5MDRlMzE5NDEwOGE5YWE3MmE0
ZGMyYjY0Ni4uYmY0ODdlZDdmYTRhOWRiNDEwY2Y5ZGI4ODQ2MTJlNTBhOGFiMTdhOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDE3LTA5LTAzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkICJpZiIgc3RhdGVtZW50cyB0byBXU0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI5NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
QWxsLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lmU3RhdGVtZW50Lmpz
OiBDb3BpZWQgZnJvbSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmLmpzLgor
ICAgICAgICAoSWZTdGF0ZW1lbnQpOgorICAgICAgICAoSWZTdGF0ZW1lbnQucHJvdG90eXBlLmdl
dCBvcmlnaW4pOgorICAgICAgICAoSWZTdGF0ZW1lbnQucHJvdG90eXBlLmdldCBjb25kaXRpb25h
bCk6CisgICAgICAgIChJZlN0YXRlbWVudC5wcm90b3R5cGUuZ2V0IGJvZHkpOgorICAgICAgICAo
SWZTdGF0ZW1lbnQucHJvdG90eXBlLmdldCBlbHNlQm9keSk6CisgICAgICAgIChJZlN0YXRlbWVu
dC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L05hbWVSZXNvbHZlci5qczoKKyAgICAgICAgKE5hbWVSZXNvbHZlci5wcm90b3R5cGUudmlzaXRJ
ZlN0YXRlbWVudCk6CisgICAgICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0VHlwZVJl
Zik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanM6CisgICAgICAg
IChwYXJzZVR5cGVQYXJhbWV0ZXJzKToKKyAgICAgICAgKHBhcnNlSWZTdGF0ZW1lbnQpOgorICAg
ICAgICAocGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1JldHVybkNoZWNrZXIuanM6CisgICAgICAgIChSZXR1cm5DaGVja2VyLnByb3RvdHlwZS52aXNp
dElmU3RhdGVtZW50KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVm
LmpzOgorICAgICAgICAoVHlwZURlZi5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAoVHlw
ZURlZik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVZhcmlhYmxlLmpz
OgorICAgICAgICAoVHlwZVZhcmlhYmxlLnByb3RvdHlwZS50eXBlVmFyaWFibGVVbmlmeSk6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZp
c2l0b3IucHJvdG90eXBlLnZpc2l0VHlwZU9yVmFyaWFibGVSZWYpOgorICAgICAgICAoVmlzaXRv
ci5wcm90b3R5cGUudmlzaXRJZlN0YXRlbWVudCk6CisKIDIwMTctMDktMDEgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBXU0wgc2hvdWxkIGNoZWNrIHVucmVhY2hh
YmxlIGNvZGUgYW5kIG5vIHJldHVybnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpp
bmRleCA0N2FkNzU1MGZlZTBlYmJlZWJkODE1OTc1ZmQ4ZGY5MGU0ZTE0ZGIxLi42M2ZlZjI0NzBj
NzZlZTM3YjJiOGE1MGRjMzUzMTMxNTk0NzJkOGFjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzCkBAIC01OSw2ICs1OSw3IEBAIGxvYWQoIkZ1bmNEZWYuanMiKTsKIGxvYWQoIkZ1
bmNJbnN0YW50aWF0b3IuanMiKTsKIGxvYWQoIkZ1bmNQYXJhbWV0ZXIuanMiKTsKIGxvYWQoIkZ1
bmN0aW9uTGlrZUJsb2NrLmpzIik7Citsb2FkKCJJZlN0YXRlbWVudC5qcyIpOwogbG9hZCgiSW5s
aW5lLmpzIik7CiBsb2FkKCJJbmxpbmVyLmpzIik7CiBsb2FkKCJJbnN0YW50aWF0ZUltbWVkaWF0
ZXMuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lmU3Rh
dGVtZW50LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSWZTdGF0ZW1lbnQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzZkZTVmOTIxZDUyMjRhZmE3ZmEwMWZmNzFkNjFlY2Q4MzQ1MTgxZQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lmU3RhdGVtZW50
LmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgSWZTdGF0ZW1lbnQgZXh0ZW5kcyBOb2Rl
IHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIGNvbmRpdGlvbmFsLCBib2R5LCBlbHNlQm9keSkK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsK
KyAgICAgICAgdGhpcy5fY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbDsKKyAgICAgICAgdGhpcy5f
Ym9keSA9IGJvZHk7CisgICAgICAgIHRoaXMuX2Vsc2VCb2R5ID0gZWxzZUJvZHk7CisgICAgfQor
CisgICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQorICAgIGdldCBjb25k
aXRpb25hbCgpIHsgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbmFsOyB9CisgICAgZ2V0IGJvZHkoKSB7
IHJldHVybiB0aGlzLl9ib2R5OyB9CisgICAgZ2V0IGVsc2VCb2R5KCkgeyByZXR1cm4gdGhpcy5f
ZWxzZUJvZHk7IH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQg
PSAiaWYgKCIgKyB0aGlzLmNvbmRpdGlvbmFsICsgIikgIiArIHRoaXMuYm9keTsKKyAgICAgICAg
aWYgKHRoaXMuZWxzZUJvZHkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgIiBlbHNlICIg
KyB0aGlzLmVsc2VCb2R5OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK307CisKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcyBi
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwppbmRleCA3NTli
MDEyZjkzODU4YzVjZjQzODJhZTE4MzI2ZTUyYjJkMGMyYzNjLi4xOThiZjBkMTU0ODY3NDI5NGJh
N2I1YjdiNTNhYjdiZTcyMTYyZmU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvTmFtZVJlc29sdmVyLmpzCkBAIC05MCw2ICs5MCwxNSBAQCBjbGFzcyBOYW1lUmVzb2x2ZXIg
ZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgZm9yIChsZXQgc3RhdGVtZW50IG9mIG5vZGUuc3Rh
dGVtZW50cykKICAgICAgICAgICAgIHN0YXRlbWVudC52aXNpdChjaGVja2VyKTsKICAgICB9CisK
KyAgICB2aXNpdElmU3RhdGVtZW50KG5vZGUpCisgICAgeworICAgICAgICBub2RlLmNvbmRpdGlv
bmFsLnZpc2l0KHRoaXMpOworICAgICAgICAvLyBJZiBzdGF0ZW1lbnQncyBib2RpZXMgbWlnaHQg
bm90IGJlIEJsb2Nrcywgc28gd2UgbmVlZCB0byBleHBsaWNpdGx5IGdpdmUgdGhlbSBhIG5ldyBj
b250ZXh0LgorICAgICAgICBub2RlLmJvZHkudmlzaXQobmV3IE5hbWVSZXNvbHZlcihuZXcgTmFt
ZUNvbnRleHQodGhpcy5fbmFtZUNvbnRleHQpKSk7CisgICAgICAgIGlmIChub2RlLmVsc2VCb2R5
KQorICAgICAgICAgICAgbm9kZS5lbHNlQm9keS52aXNpdChuZXcgTmFtZVJlc29sdmVyKG5ldyBO
YW1lQ29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCkpKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRQ
cm90b2NvbERlY2wobm9kZSkKICAgICB7CkBAIC0xNjYsNyArMTc1LDcgQEAgY2xhc3MgTmFtZVJl
c29sdmVyIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJv
cihub2RlLm9yaWdpbi5vcmlnaW5TdHJpbmcsICJXcm9uZyBudW1iZXIgb2YgdHlwZSBhcmd1bWVu
dHMiKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlLnR5cGVQYXJhbWV0ZXJzLmxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgcGFyYW1ldGVySXNUeXBlID0gdHlwZS50eXBl
UGFyYW1ldGVyc1tpXSBpbnN0YW5jZW9mIFR5cGVWYXJpYWJsZTsKLSAgICAgICAgICAgIGxldCBh
cmd1bWVudElzVHlwZSA9IG5vZGUudHlwZUFyZ3VtZW50c1tpXSBpbnN0YW5jZW9mIFR5cGU7Cisg
ICAgICAgICAgICBsZXQgYXJndW1lbnRJc1R5cGUgPSBub2RlLnR5cGVBcmd1bWVudHNbaV0gaW5z
dGFuY2VvZiBUeXBlIHx8IG5vZGUudHlwZUFyZ3VtZW50c1tpXSBpbnN0YW5jZW9mIFR5cGVPclZh
cmlhYmxlUmVmOwogICAgICAgICAgICAgbm9kZS50eXBlQXJndW1lbnRzW2ldLnZpc2l0KHRoaXMp
OwogICAgICAgICAgICAgaWYgKHBhcmFtZXRlcklzVHlwZSAmJiAhYXJndW1lbnRJc1R5cGUpCiAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Iobm9kZS5vcmlnaW4ub3JpZ2luU3Ry
aW5nLCAiRXhwZWN0ZWQgdHlwZSwgYnV0IGdvdCB2YWx1ZSBhdCBhcmd1bWVudCAjIiArIGkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBmNDM5ZmJmOGNlZjdmZTMw
MWI2MzRiYzM3OTg1OGVjNTZmODljZWRhLi5lOTRjMzc2NDkyM2E3MzlkZjlmYTIwOWNmZWVmZTU3
YmVmMjEzNWYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMTQ4
LDcgKzE0OCw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9m
ZnNldCwgdGV4dCkKICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgpOwogICAg
ICAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnROZXh0KCIsIiwgIj4iLCAiPj4iKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IENvbnN0ZXhwclR5cGVQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG5hbWUsIHR5cGUp
OworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29uc3RleHByVHlwZVBhcmFtZXRlcih0eXBl
Lm9yaWdpbiwgbmFtZS50ZXh0LCB0eXBlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
aWYgKGNvbnN0ZXhwcikKICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChjb25zdGV4cHIpOwpA
QCAtNTU0LDYgKzU1NCwxOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIGxpbmVO
dW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGNvbnN1bWUoIjsiKTsKICAgICAgICAgcmV0dXJu
IG5ldyBSZXR1cm4ob3JpZ2luLCBleHByZXNzaW9uKTsKICAgICB9CisKKyAgICBmdW5jdGlvbiBw
YXJzZUlmU3RhdGVtZW50KCkKKyAgICB7CisgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJp
ZiIpOworICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBh
cnNlRXhwcmVzc2lvbigpOworICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIGxldCBib2R5
ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgbGV0IGVsc2VCb2R5OworICAgICAgICBpZiAo
dHJ5Q29uc3VtZSgiZWxzZSIpKQorICAgICAgICAgICAgZWxzZUJvZHkgPSBwYXJzZVN0YXRlbWVu
dCgpOworICAgICAgICByZXR1cm4gbmV3IElmU3RhdGVtZW50KG9yaWdpbiwgY29uZGl0aW9uYWws
IGJvZHksIGVsc2VCb2R5KTsKKyAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJs
ZURlY2xzKCkKICAgICB7CkBAIC01ODYsNiArNTk5LDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dy
YW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiBw
YXJzZURvKCk7CiAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJmb3IiKQogICAgICAgICAgICAg
cmV0dXJuIHBhcnNlRm9yKCk7CisgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJpZiIpCisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVudCgpOworICAgICAgICBpZiAodG9rZW4udGV4
dCA9PSAieyIpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpOwogICAgICAgICBsZXQg
dmFyaWFibGVEZWNsID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJpYWJsZURlY2xz
KTsKICAgICAgICAgaWYgKHZhcmlhYmxlRGVjbCkKICAgICAgICAgICAgIHJldHVybiB2YXJpYWJs
ZURlY2w7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5D
aGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tlci5q
cwppbmRleCA5MDM1ZmIyYzRhMTM2N2NhMDAyZTZkNzUyM2RkZWM5MTVkNzRkMDBlLi5jMDgyZjg5
YzBlNjUxNzlmZGJmYmEwYzM3MDA0ZTY3NmY5MDIzNmExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5DaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1JldHVybkNoZWNrZXIuanMKQEAgLTQwLDggKzQwLDE1IEBAIGNsYXNz
IFJldHVybkNoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI2MwogICAgICAgICByZXR1cm4gbm9kZS5z
dGF0ZW1lbnRzLnJlZHVjZSgocmVzdWx0LCBzdGF0ZW1lbnQpID0+IHJlc3VsdCB8fCBzdGF0ZW1l
bnQudmlzaXQodGhpcyksIGZhbHNlKTsKICAgICB9Ci0gICAgCi0gICAgLy8gV2hlbiB3ZSBhZGQg
Y29udHJvbCBmbG93IHN0YXRlbWVudHMsIHdlJ2xsIG5lZWQgdG8gcmV0dXJuIHRydWUgb25seSBp
ZiBib3RoIGJsb2NrcyByZXR1cm4gdHJ1ZS4KKworICAgIHZpc2l0SWZTdGF0ZW1lbnQobm9kZSkK
KyAgICB7CisgICAgICAgIGxldCBib2R5UmVzdWx0ID0gbm9kZS5ib2R5LnZpc2l0KHRoaXMpOwor
ICAgICAgICBpZiAobm9kZS5lbHNlQm9keSkKKyAgICAgICAgICAgIHJldHVybiBib2R5UmVzdWx0
ICYmIG5vZGUuZWxzZUJvZHkudmlzaXQodGhpcyk7CisgICAgICAgIHJldHVybiBib2R5UmVzdWx0
OworICAgIH0KKwogICAgIC8vIElmIGEgbG9vcCByZXR1cm5zLCB0aGVuIGl0IGNvdW50cyBvbmx5
IGlmIHRoZSBsb29wIGlzIGd1YXJhbnRlZWQgdG8gcnVuIGF0IGxlYXN0IG9uY2UuCiAgICAgCiAg
ICAgdmlzaXRSZXR1cm4obm9kZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1R5cGVEZWYuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVm
LmpzCmluZGV4IDY5YjY1NzQyYzIzMzA0YTA0NzMzZjQ3NzY2ZmI5OWYxZjQ1YmZlYzQuLjZjMGY5
YzE3NGY1MzIzNTY0MWY0Y2QzMDJjYWI0YzNhYWIyN2MxNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWYuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVHlwZURlZi5qcwpAQCAtMzgsNSArMzgsMTAgQEAgY2xhc3MgVHlwZURlZiBl
eHRlbmRzIFR5cGUgewogICAgIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfQogICAg
IGdldCB0eXBlUGFyYW1ldGVycygpIHsgcmV0dXJuIHRoaXMuX3R5cGVQYXJhbWV0ZXJzOyB9CiAg
ICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgCisgICAgdG9TdHJpbmco
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICJ0eXBlZGVmICIgKyB0aGlzLm5hbWUgKyAiPCIgKyB0
aGlzLnR5cGVQYXJhbWV0ZXJzICsgIj4gPSAiICsgdGhpcy50eXBlOworICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVZhcmlhYmxlLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZVZhcmlhYmxlLmpzCmluZGV4IDRkY2Ux
NmM0ODYyNTM3NWYyNGJjYTk5NmUyZWY1NGI4ZTI0ZTViZjMuLmI4NTFlYzc5NzE0M2VkYjVhNmRi
OWVmM2ZiMWFlNjEwZTE3NTY0ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1R5cGVWYXJpYWJsZS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9UeXBlVmFyaWFibGUuanMKQEAgLTU0LDEyICs1NCwxMiBAQCBjbGFzcyBUeXBlVmFyaWFibGUg
ZXh0ZW5kcyBUeXBlIHsKICAgICAKICAgICB0eXBlVmFyaWFibGVVbmlmeSh1bmlmaWNhdGlvbkNv
bnRleHQsIG90aGVyKQogICAgIHsKLSAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBUeXBl
KSkKKyAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBUeXBlIHx8IG90aGVyIGluc3RhbmNl
b2YgVHlwZU9yVmFyaWFibGVSZWYpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBsZXQgcmVhbFRoaXMgPSB1bmlmaWNhdGlvbkNvbnRleHQuZmluZCh0aGlzKTsKICAgICAgICAg
aWYgKHJlYWxUaGlzICE9IHRoaXMpCiAgICAgICAgICAgICByZXR1cm4gcmVhbFRoaXMudW5pZnko
dW5pZmljYXRpb25Db250ZXh0LCBvdGhlcik7Ci0gICAgICAgIAorCiAgICAgICAgIHVuaWZpY2F0
aW9uQ29udGV4dC51bmlvbih0aGlzLCBvdGhlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCmluZGV4IDNlZDc5MjEy
Y2EyMTYxZDE2MTA3NmM4NDUwMzFhNDY1YmJkNzQ3MmIuLmIyMDE1ZDMxM2E4MTEyOTE0YzlhN2I2
NDMyN2Q4YTFhNjI1MzUyYmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Zpc2l0b3IuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRv
ci5qcwpAQCAtMTkyLDYgKzE5MiwxOCBAQCBjbGFzcyBWaXNpdG9yIHsKICAgICB7CiAgICAgfQog
ICAgIAorICAgIHZpc2l0VHlwZU9yVmFyaWFibGVSZWYobm9kZSkKKyAgICB7CisgICAgfQorICAg
IAorICAgIHZpc2l0SWZTdGF0ZW1lbnQobm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUuY29uZGl0
aW9uYWwudmlzaXQodGhpcyk7CisgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAg
ICAgaWYgKG5vZGUuZWxzZUJvZHkpCisgICAgICAgICAgICBub2RlLmVsc2VCb2R5LnZpc2l0KHRo
aXMpOworICAgIH0KKwogICAgIHZpc2l0UmV0dXJuKG5vZGUpCiAgICAgewogICAgICAgICBpZiAo
bm9kZS52YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320210</attachid>
            <date>2017-09-07 17:13:03 -0700</date>
            <delta_ts>2017-09-07 19:38:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176294-20170907171302.patch</filename>
            <type>text/plain</type>
            <size>21612</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzY1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmVmZmIzZmE0MDQxNGMzNDlkNDk5MzFhMzE3Njg5N2Vh
OGFhZWE3Zi4uZWJkYmYyZmRhNTM0MzI0YWExNWQ4M2E1NDdhYTViNWY2MWFkMmIwNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgw
IEBACisyMDE3LTA5LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkICJpZiIgc3RhdGVtZW50cyB0byBXU0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI5NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhaXJseSBzdHJhaWdodGZvcndhcmQgaW1w
bGVtZW50YXRpb24uIFJldHVybkNoZWNrZXIgb25seSByZXR1cm5zIHRydWUgaWZmIHRoZXJlIGlz
IGFuIGVsc2UgYmxvY2ssCisgICAgICAgIGFuZCBib3RoIHRoZSBpZiBib2R5IGFuZCB0aGUgZWxz
ZSBib2R5IHJlY3Vyc2l2ZWx5IHJldHVybiB0cnVlLgorCisgICAgICAgIEluIG9yZGVyIHRvIGFj
Y2VwdCBib3RoIHN5bnRheGVzOgorICAgICAgICBpZiAoZm9vKQorICAgICAgICAgICAgYmFyOwor
ICAgICAgICAuLi4gYW5kIC4uLgorICAgICAgICBpZiAoZm9vKSB7CisgICAgICAgICAgICBiYXI7
CisgICAgICAgIH0KKyAgICAgICAgVGhpcyBwYXRjaCBsZXRzIHBhcnNlU3RhdGVtZW50KCkgY2Fs
bCBwYXJzZUJsb2NrKCkuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGlzIHZhbGlkOgor
ICAgICAgICBpbnQgeCA9IDc7CisgICAgICAgIGlmIChmb28pIHsKKyAgICAgICAgICAgIGludCB4
ID0gODsKKyAgICAgICAgICAgIC8vIHggaXMgOCBoZXJlIQorICAgICAgICB9CisgICAgICAgIC8v
IHggaXMgNyBoZXJlIQorCisgICAgICAgIFRoaXMgcHJvZHVjdGlvbiBtZWFucyB0aGF0IHRoZXNl
IGJsb2NrcyBkb24ndCByZXF1aXJlICJpZiIgc3RhdGVtZW50cywgc28geW91IGNhbiBqdXN0IGhh
dmU6CisgICAgICAgIGludCBmb28oKSB7CisgICAgICAgICAgIGludCB4ID0gNzsKKyAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgaW50IHggPSA4OworICAgICAgICAgICAgICAgLy8geCBpcyA4
IGhlcmUhCisgICAgICAgICAgIH0KKyAgICAgICAgICAgLy8geCBpcyA3IGhlcmUhCisgICAgICAg
IH0KKworICAgICAgICBIb3dldmVyLCB0aGlzIHBhdGNoIGRvZXNuJ3QgdG91Y2ggdGhlIGZvbGxv
d2luZyB1c2UtY2FzZToKKyAgICAgICAgaWYgKGludCB4ID0gYmFyKCkpIHsKKyAgICAgICAgICAg
IC8vIHVzZSB4IGhlcmUKKyAgICAgICAgfQorCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIu
anM6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzOgorICAg
ICAgICAoRXZhbHVhdG9yLnByb3RvdHlwZS52aXNpdElmU3RhdGVtZW50KToKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JZlN0YXRlbWVudC5qczogQ29waWVkIGZyb20gVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZi5qcy4KKyAgICAgICAgKElmU3RhdGVtZW50
KToKKyAgICAgICAgKElmU3RhdGVtZW50LnByb3RvdHlwZS5nZXQgb3JpZ2luKToKKyAgICAgICAg
KElmU3RhdGVtZW50LnByb3RvdHlwZS5nZXQgY29uZGl0aW9uYWwpOgorICAgICAgICAoSWZTdGF0
ZW1lbnQucHJvdG90eXBlLmdldCBib2R5KToKKyAgICAgICAgKElmU3RhdGVtZW50LnByb3RvdHlw
ZS5nZXQgZWxzZUJvZHkpOgorICAgICAgICAoSWZTdGF0ZW1lbnQucHJvdG90eXBlLnRvU3RyaW5n
KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6Cisg
ICAgICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0SWZTdGF0ZW1lbnQpOgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAgICAgICAocGFyc2VUeXBl
UGFyYW1ldGVycyk6CisgICAgICAgIChwYXJzZUlmU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNl
U3RhdGVtZW50KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5DaGVj
a2VyLmpzOgorICAgICAgICAoUmV0dXJuQ2hlY2tlci5wcm90b3R5cGUudmlzaXRJZlN0YXRlbWVu
dCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanM6CisgICAg
ICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRJZlN0YXRlbWVudCk6CisgICAgICAgIChSZXdy
aXRlcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sOgorICAg
ICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6CisgICAgICAgIChURVNUX3Zh
cmlhYmxlU2hhZG93aW5nKToKKyAgICAgICAgKFRFU1RfaWZTdGF0ZW1lbnQpOgorICAgICAgICAo
VEVTVF9pZkVsc2VTdGF0ZW1lbnQpOgorICAgICAgICAoVEVTVF9pZkVsc2VJZlN0YXRlbWVudCk6
CisgICAgICAgIChURVNUX2lmRWxzZUlmRWxzZVN0YXRlbWVudCk6CisgICAgICAgIChURVNUX3Jl
dHVybklmKToKKyAgICAgICAgKFRFU1RfcHJvdG9jb2xNb25vUG9seVNpZ0RvdWJsZVBvbHlEZWZF
eHBsaWNpdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlw
ZURlZi5qczoKKyAgICAgICAgKFR5cGVEZWYucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAg
KFR5cGVEZWYpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanM6
CisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdElmU3RhdGVtZW50KToKKwogMjAxNy0w
OS0wNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFdTTCBOb2Rl
LnByb3RvdHlwZS52aXNpdCBzaG91bGQgcHJvYmFibHkgZG8gbWVtb2l6YXRpb24KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0FsbC5qcwppbmRleCA0ZTU2NjZkMTdjMWM1OTUyMTA1ZTNhYmM3Mzgy
NWI1YjQ0NjdjOTJkLi42MGI3NWZkMzM3YzI3ZjZiY2JiNWM3ZjlmYWRkZjE4YjJlY2NlNWZhIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKKysrIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCkBAIC02NSw2ICs2NSw3IEBAIGxvYWQo
IkZ1bmNEZWYuanMiKTsKIGxvYWQoIkZ1bmNJbnN0YW50aWF0b3IuanMiKTsKIGxvYWQoIkZ1bmNQ
YXJhbWV0ZXIuanMiKTsKIGxvYWQoIkZ1bmN0aW9uTGlrZUJsb2NrLmpzIik7Citsb2FkKCJJZlN0
YXRlbWVudC5qcyIpOwogbG9hZCgiSW5saW5lLmpzIik7CiBsb2FkKCJJbmxpbmVyLmpzIik7CiBs
b2FkKCJJbnN0YW50aWF0ZUltbWVkaWF0ZXMuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9DaGVja2VyLmpzCmluZGV4IDEyNjQzN2I0MzY4NjlhY2UwZDk4MTUzYTE5ZDRiMDk2MTg3
N2VlNmIuLmI3YjI1MGNiMzM0MDI4NjhhNzgxNDUyODU1YTZiZDE0YTE2MjA1MzAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ2hlY2tlci5qcwpAQCAtMjE4LDExICsyMTgsOSBAQCBj
bGFzcyBDaGVja2VyIGV4dGVuZHMgVmlzaXRvciB7CiAKICAgICB2aXNpdExvZ2ljYWxOb3Qobm9k
ZSkKICAgICB7Ci0gICAgICAgIGxldCByZXN1bHRUeXBlID0gbm9kZS5vcGVyYW5kLnZpc2l0KHRo
aXMpOwotICAgICAgICBpZiAoIXJlc3VsdFR5cGUpCi0gICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIlRyeWluZyB0byBuZWdhdGUgc29tZXRoaW5nIHdpdGggbm8gdHlwZTogIiArIG5vZGUudmFs
dWUpOwotICAgICAgICBpZiAoIXJlc3VsdFR5cGUuZXF1YWxzKHRoaXMuX3Byb2dyYW0uaW50cmlu
c2ljcy5ib29sKSkKLSAgICAgICAgICAgIHRocm93IG5ldyBXRXJyb3IoIlRyeWluZyB0byBuZWdh
dGUgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYSBib29sOiAiICsgbm9kZS52YWx1ZSk7CisgICAgICAg
IC8vIFRoZSBwYXJzZXIgZm9yY2FibHkgZW1pdHMgYSBib29sIGNhc3Qgb24gdGhlIG9wZXJhbmQs
IHNvIHdlIGRvbid0IG5lZWQgdG8KKyAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIG9wZXJh
bmQgaXMgYSBib29sLgorICAgICAgICBub2RlLm9wZXJhbmQudmlzaXQodGhpcyk7CiAgICAgICAg
IHJldHVybiB0aGlzLl9wcm9ncmFtLmludHJpbnNpY3MuYm9vbDsKICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMgYi9Ub29s
cy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKaW5kZXggYTFiYTQxZmM0MGJm
NmFmNGMxZTJjMjFhYmU2ZDdiYmJmMGRmNTFhNi4uNzcyMTllNjMzOTc0YTEwZDYxMDM0YjIzYzNj
OGRlNTU5YzkzYWYzOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
RXZhbHVhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRv
ci5qcwpAQCAtMTUwLDYgKzE1MCwxNCBAQCBjbGFzcyBFdmFsdWF0b3IgZXh0ZW5kcyBWaXNpdG9y
IHsKICAgICB7CiAgICAgICAgIHJldHVybiBFUHRyLmJveCghbm9kZS5vcGVyYW5kLnZpc2l0KHRo
aXMpLmxvYWRWYWx1ZSgpKTsKICAgICB9CisKKyAgICB2aXNpdElmU3RhdGVtZW50KG5vZGUpCisg
ICAgeworICAgICAgICBpZiAobm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKS5sb2FkVmFsdWUo
KSkKKyAgICAgICAgICAgIHJldHVybiBub2RlLmJvZHkudmlzaXQodGhpcyk7CisgICAgICAgIGVs
c2UgaWYgKG5vZGUuZWxzZUJvZHkpCisgICAgICAgICAgICByZXR1cm4gbm9kZS5lbHNlQm9keS52
aXNpdCh0aGlzKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lmU3RhdGVt
ZW50LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvSWZTdGF0ZW1lbnQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzZkZTVmOTIxZDUyMjRhZmE3ZmEwMWZmNzFkNjFlY2Q4MzQ1MTgxZQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0lmU3RhdGVtZW50Lmpz
CkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgSWZTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHsK
KyAgICBjb25zdHJ1Y3RvcihvcmlnaW4sIGNvbmRpdGlvbmFsLCBib2R5LCBlbHNlQm9keSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMuX29yaWdpbiA9IG9yaWdpbjsKKyAg
ICAgICAgdGhpcy5fY29uZGl0aW9uYWwgPSBjb25kaXRpb25hbDsKKyAgICAgICAgdGhpcy5fYm9k
eSA9IGJvZHk7CisgICAgICAgIHRoaXMuX2Vsc2VCb2R5ID0gZWxzZUJvZHk7CisgICAgfQorCisg
ICAgZ2V0IG9yaWdpbigpIHsgcmV0dXJuIHRoaXMuX29yaWdpbjsgfQorICAgIGdldCBjb25kaXRp
b25hbCgpIHsgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbmFsOyB9CisgICAgZ2V0IGJvZHkoKSB7IHJl
dHVybiB0aGlzLl9ib2R5OyB9CisgICAgZ2V0IGVsc2VCb2R5KCkgeyByZXR1cm4gdGhpcy5fZWxz
ZUJvZHk7IH0KKworICAgIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSAi
aWYgKCIgKyB0aGlzLmNvbmRpdGlvbmFsICsgIikgIiArIHRoaXMuYm9keTsKKyAgICAgICAgaWYg
KHRoaXMuZWxzZUJvZHkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgIiBlbHNlICIgKyB0
aGlzLmVsc2VCb2R5OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK307CisKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwppbmRleCA0NTVhNTkz
MGQ0MmExZDk1MTFjMmM5NDU1MDA0MDE5NDhmMTQyYmUwLi4xMTZlMzE4Mjg1MmQ4NGM2ZTdkZDZj
YTczMmU3YWM5Zjk5YTJlZDlkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9OYW1lUmVzb2x2ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
TmFtZVJlc29sdmVyLmpzCkBAIC05MCw2ICs5MCwxNSBAQCBjbGFzcyBOYW1lUmVzb2x2ZXIgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgZm9yIChsZXQgc3RhdGVtZW50IG9mIG5vZGUuc3RhdGVt
ZW50cykKICAgICAgICAgICAgIHN0YXRlbWVudC52aXNpdChjaGVja2VyKTsKICAgICB9CisKKyAg
ICB2aXNpdElmU3RhdGVtZW50KG5vZGUpCisgICAgeworICAgICAgICBub2RlLmNvbmRpdGlvbmFs
LnZpc2l0KHRoaXMpOworICAgICAgICAvLyBJZiBzdGF0ZW1lbnQncyBib2RpZXMgbWlnaHQgbm90
IGJlIEJsb2Nrcywgc28gd2UgbmVlZCB0byBleHBsaWNpdGx5IGdpdmUgdGhlbSBhIG5ldyBjb250
ZXh0LgorICAgICAgICBub2RlLmJvZHkudmlzaXQobmV3IE5hbWVSZXNvbHZlcihuZXcgTmFtZUNv
bnRleHQodGhpcy5fbmFtZUNvbnRleHQpKSk7CisgICAgICAgIGlmIChub2RlLmVsc2VCb2R5KQor
ICAgICAgICAgICAgbm9kZS5lbHNlQm9keS52aXNpdChuZXcgTmFtZVJlc29sdmVyKG5ldyBOYW1l
Q29udGV4dCh0aGlzLl9uYW1lQ29udGV4dCkpKTsKKyAgICB9CiAgICAgCiAgICAgdmlzaXRQcm90
b2NvbERlY2wobm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9QYXJzZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpz
CmluZGV4IGVmZGEwNDk3M2ViNjgxNGQ2YjAxNTg1YzYxOGY0ZWI2ZGJjZmNmZjUuLmE2MWE0OGNj
OWMxNmMzNWRmMTViNzUyOTM2ZmE2ODU4OTg2MGUyMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzCkBAIC0xNDgsNyArMTQ4LDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgICAgIGxldCB0
eXBlID0gcGFyc2VUeXBlKCk7CiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2lu
ZCgiaWRlbnRpZmllciIpOwogICAgICAgICAgICAgICAgIGFzc2VydE5leHQoIiwiLCAiPiIsICI+
PiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29uc3RleHByVHlwZVBhcmFtZXRlcih0
eXBlLm9yaWdpbiwgbmFtZSwgdHlwZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb25z
dGV4cHJUeXBlUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lLnRleHQsIHR5cGUpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBpZiAoY29uc3RleHByKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5wdXNoKGNvbnN0ZXhwcik7CkBAIC01MzUsNiArNTM1LDE5IEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgY29uc3Vt
ZSgiOyIpOwogICAgICAgICByZXR1cm4gbmV3IFJldHVybihvcmlnaW4sIGV4cHJlc3Npb24pOwog
ICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKQorICAgIHsKKyAgICAgICAg
bGV0IG9yaWdpbiA9IGNvbnN1bWUoImlmIik7CisgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAg
ICAgbGV0IGNvbmRpdGlvbmFsID0gcGFyc2VFeHByZXNzaW9uKCk7CisgICAgICAgIGNvbnN1bWUo
IikiKTsKKyAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBsZXQg
ZWxzZUJvZHk7CisgICAgICAgIGlmICh0cnlDb25zdW1lKCJlbHNlIikpCisgICAgICAgICAgICBl
bHNlQm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIHJldHVybiBuZXcgSWZTdGF0ZW1l
bnQob3JpZ2luLCBuZXcgQ2FzdEV4cHJlc3Npb24oY29uZGl0aW9uYWwub3JpZ2luLCBuZXcgVHlw
ZVJlZihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwgW10pLCBbXSwgW2NvbmRpdGlvbmFsXSks
IGJvZHksIGVsc2VCb2R5KTsKKyAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJs
ZURlY2xzKCkKICAgICB7CkBAIC01NjcsNiArNTgwLDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dy
YW0sIG9yaWdpbiwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiBw
YXJzZURvKCk7CiAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJmb3IiKQogICAgICAgICAgICAg
cmV0dXJuIHBhcnNlRm9yKCk7CisgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJpZiIpCisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVudCgpOworICAgICAgICBpZiAodG9rZW4udGV4
dCA9PSAieyIpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpOwogICAgICAgICBsZXQg
dmFyaWFibGVEZWNsID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJpYWJsZURlY2xz
KTsKICAgICAgICAgaWYgKHZhcmlhYmxlRGVjbCkKICAgICAgICAgICAgIHJldHVybiB2YXJpYWJs
ZURlY2w7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5D
aGVja2VyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV0dXJuQ2hlY2tlci5q
cwppbmRleCA5MDM1ZmIyYzRhMTM2N2NhMDAyZTZkNzUyM2RkZWM5MTVkNzRkMDBlLi40NzJjMGQw
YzBmYTgzNWQ5NzViNGQyYTk0N2M5YzNkZDUwMDIwNjg0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXR1cm5DaGVja2VyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1JldHVybkNoZWNrZXIuanMKQEAgLTQwLDggKzQwLDEyIEBAIGNsYXNz
IFJldHVybkNoZWNrZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI2MwogICAgICAgICByZXR1cm4gbm9kZS5z
dGF0ZW1lbnRzLnJlZHVjZSgocmVzdWx0LCBzdGF0ZW1lbnQpID0+IHJlc3VsdCB8fCBzdGF0ZW1l
bnQudmlzaXQodGhpcyksIGZhbHNlKTsKICAgICB9Ci0gICAgCi0gICAgLy8gV2hlbiB3ZSBhZGQg
Y29udHJvbCBmbG93IHN0YXRlbWVudHMsIHdlJ2xsIG5lZWQgdG8gcmV0dXJuIHRydWUgb25seSBp
ZiBib3RoIGJsb2NrcyByZXR1cm4gdHJ1ZS4KKworICAgIHZpc2l0SWZTdGF0ZW1lbnQobm9kZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBub2RlLmVsc2VCb2R5ICYmIG5vZGUuYm9keS52aXNpdCh0
aGlzKSAmJiBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMpOworICAgIH0KKwogICAgIC8vIElmIGEg
bG9vcCByZXR1cm5zLCB0aGVuIGl0IGNvdW50cyBvbmx5IGlmIHRoZSBsb29wIGlzIGd1YXJhbnRl
ZWQgdG8gcnVuIGF0IGxlYXN0IG9uY2UuCiAgICAgCiAgICAgdmlzaXRSZXR1cm4obm9kZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Jld3JpdGVyLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIuanMKaW5kZXggNWNlYzgwNGM4Zjcx
MGUwODZhMjBhMmU3YmIzMWU1NDdhOTRmNjM2MS4uOTU4ODFhYmVhY2E3OTFmYTgyNzVmZWJmOTA0
NGZkZWZlNDUyZDM5MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmV3cml0ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0ZXIu
anMKQEAgLTI4Myw1ICsyODMsMTAgQEAgY2xhc3MgUmV3cml0ZXIgZXh0ZW5kcyBWaXNpdG9yQmFz
ZSB7CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IExvZ2ljYWxOb3Qobm9kZS5vcmlnaW4sIG5v
ZGUub3BlcmFuZC52aXNpdCh0aGlzKSk7CiAgICAgfQorCisgICAgdmlzaXRJZlN0YXRlbWVudChu
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBJZlN0YXRlbWVudChub2RlLm9yaWdpbiwg
bm9kZS5jb25kaXRpb25hbC52aXNpdCh0aGlzKSwgbm9kZS5ib2R5LnZpc2l0KHRoaXMpLCBub2Rl
LmVsc2VCb2R5ID8gbm9kZS5lbHNlQm9keS52aXNpdCh0aGlzKSA6IHVuZGVmaW5lZCk7CisgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0
bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggNDZjODIy
NzljOGJlNjcwZjZmMjExYzBhZjNmNDRiNTUzMzMwODhjNS4uYWJmZjk2YWY3MjlkNTZhMDYzYTI1
YThkNmU2MjFmZTRiYmYzOWU5NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
aHRtbApAQCAtNDEsNiArNDEsNyBAQAogPHNjcmlwdCBzcmM9IkZ1bmNJbnN0YW50aWF0b3IuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkZ1bmNQYXJhbWV0ZXIuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IkZ1bmN0aW9uTGlrZUJsb2NrLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJJ
ZlN0YXRlbWVudC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iSW5saW5lLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJJbmxpbmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJJbnN0
YW50aWF0ZUltbWVkaWF0ZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Rlc3QuanMKaW5kZXggMzUzN2U4NDU5MDZlZGUyYTQzMDcxYjE5MmY0MjIyMDk1MmQ5NDM2Ny4u
N2FmNzQ0ZjQ2ZTQ5N2QwYmFmYTY1YTU1MzZjZTk2N2E0MjA2OTY5YiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC0xMTA5LDYgKzExMDksMjMzIEBAIGZ1bmN0aW9uIFRF
U1RfcHJvdG9jb2xEb3VibGVQb2x5U2lnRG91YmxlUG9seURlZkV4cGxpY2l0KCkKICAgICBjaGVj
a0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChw
cm9ncmFtLCA1NCksIG1ha2VJbnQocHJvZ3JhbSwgMTIpLCBtYWtlSW50KHByb2dyYW0sIDM5KV0p
LCA1NCArIDEyICsgMzkpOwogfQogCitmdW5jdGlvbiBURVNUX3ZhcmlhYmxlU2hhZG93aW5nKCkK
K3sKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oKQorICAgICAg
ICB7CisgICAgICAgICAgICBpbnQgeTsKKyAgICAgICAgICAgIGludCB4ID0gNzsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgeCA9IDg7CisgICAgICAgICAgICAgICAgeSA9IHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geTsKKyAgICAgICAgfQorICAgIGAp
OworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10s
IFtdKSwgOCk7CisgICAgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oKQorICAg
ICAgICB7CisgICAgICAgICAgICBpbnQgeTsKKyAgICAgICAgICAgIGludCB4ID0gNzsKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgeCA9IDg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICB5ID0geDsKKyAgICAgICAgICAgIHJldHVybiB5OworICAgICAgICB9CisgICAgYCk7
CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwg
W10pLCA3KTsKK30KKworZnVuY3Rpb24gVEVTVF9pZlN0YXRlbWVudCgpCit7CisgICAgbGV0IHBy
b2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAg
ICAgICAgICBpbnQgeSA9IDY7CisgICAgICAgICAgICBpZiAoeCA9PSA3KSB7CisgICAgICAgICAg
ICAgICAgeSA9IDg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geTsKKyAgICAg
ICAgfQorICAgIGApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFt
LCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDMpXSksIDYpOworICAgIGNoZWNrSW50KHBy
b2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0s
IDQpXSksIDYpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
Zm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDUpXSksIDYpOworICAgIGNoZWNrSW50KHByb2dy
YW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDYp
XSksIDYpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9v
IiwgW10sIFttYWtlSW50KHByb2dyYW0sIDcpXSksIDgpOworICAgIGNoZWNrSW50KHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDgpXSks
IDYpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W10sIFttYWtlSW50KHByb2dyYW0sIDkpXSksIDYpOworfQorCitmdW5jdGlvbiBURVNUX2lmRWxz
ZVN0YXRlbWVudCgpCit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBpbnQg
Zm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeSA9IDY7CisgICAgICAgICAg
ICBpZiAoeCA9PSA3KSB7CisgICAgICAgICAgICAgICAgeSA9IDg7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHkgPSA5OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHk7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAzKV0pLCA5KTsK
KyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBb
bWFrZUludChwcm9ncmFtLCA0KV0pLCA5KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA1KV0pLCA5KTsKKyAg
ICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFr
ZUludChwcm9ncmFtLCA2KV0pLCA5KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA3KV0pLCA4KTsKKyAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUlu
dChwcm9ncmFtLCA4KV0pLCA5KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA5KV0pLCA5KTsKK30KKworZnVu
Y3Rpb24gVEVTVF9pZkVsc2VJZlN0YXRlbWVudCgpCit7CisgICAgbGV0IHByb2dyYW0gPSBkb1By
ZXAoYAorICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICB7CisgICAgICAgICAgICBpbnQg
eSA9IDY7CisgICAgICAgICAgICBpZiAoeCA9PSA3KSB7CisgICAgICAgICAgICAgICAgeSA9IDg7
CisgICAgICAgICAgICB9IGVsc2UgaWYgKHggPT0gOCkgeworICAgICAgICAgICAgICAgIHkgPSA5
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHk7CisgICAgICAgIH0KKyAgICBg
KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbbWFrZUludChwcm9ncmFtLCAzKV0pLCA2KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxs
RnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA0KV0pLCA2KTsK
KyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBb
bWFrZUludChwcm9ncmFtLCA1KV0pLCA2KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA2KV0pLCA2KTsKKyAg
ICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFr
ZUludChwcm9ncmFtLCA3KV0pLCA4KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rp
b24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA4KV0pLCA5KTsKKyAgICBj
aGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUlu
dChwcm9ncmFtLCA5KV0pLCA2KTsKK30KKworZnVuY3Rpb24gVEVTVF9pZkVsc2VJZkVsc2VTdGF0
ZW1lbnQoKQoreworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbyhp
bnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHkgPSA2OworICAgICAgICAgICAgaWYg
KHggPT0gNykgeworICAgICAgICAgICAgICAgIHkgPSA4OworICAgICAgICAgICAgfSBlbHNlIGlm
ICh4ID09IDgpIHsKKyAgICAgICAgICAgICAgICB5ID0gOTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgeSA9IDEwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIHk7CisgICAgICAgIH0KKyAgICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFrZUludChwcm9ncmFtLCAzKV0pLCAxMCk7Cisg
ICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VJbnQocHJvZ3JhbSwgNCldKSwgMTApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDUpXSksIDEwKTsKKyAg
ICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdLCBbbWFr
ZUludChwcm9ncmFtLCA2KV0pLCAxMCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgNyldKSwgOCk7CisgICAg
Y2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJ
bnQocHJvZ3JhbSwgOCldKSwgOSk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9u
KHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgOSldKSwgMTApOworfQorCitm
dW5jdGlvbiBURVNUX3JldHVybklmKCkKK3sKKyAgICBjaGVja0ZhaWwoCisgICAgICAgICgpID0+
IGRvUHJlcChgCisgICAgICAgICAgICBpbnQgZm9vKGludCB4KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGludCB5ID0gNjsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSA3KSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJv
cik7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAg
aW50IGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgeSA9IDY7
CisgICAgICAgICAgICAgICAgaWYgKHggPT0gNykgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4geTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB5ID0g
ODsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIGApLAorICAgICAg
ICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdUeXBlRXJyb3IpOworICAgIGNoZWNrRmFpbCgKKyAgICAg
ICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgICAgIGludCBmb28oaW50IHgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaW50IHkgPSA2OworICAgICAgICAgICAgICAgIGlmICh4ID09
IDcpIHsKKyAgICAgICAgICAgICAgICAgICAgeSA9IDg7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXVHlw
ZUVycm9yKTsKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIGludCBmb28oaW50
IHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCB5ID0gNjsKKyAgICAgICAgICAgIGlmICh4
ID09IDcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gODsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIDEwOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28i
LCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMyldKSwgMTApOworICAgIGNoZWNrSW50KHByb2dyYW0s
IGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDQpXSks
IDEwKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIs
IFtdLCBbbWFrZUludChwcm9ncmFtLCA1KV0pLCAxMCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwg
Y2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgNildKSwg
MTApOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W10sIFttYWtlSW50KHByb2dyYW0sIDcpXSksIDgpOworICAgIGNoZWNrSW50KHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10sIFttYWtlSW50KHByb2dyYW0sIDgpXSksIDEw
KTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtd
LCBbbWFrZUludChwcm9ncmFtLCA5KV0pLCAxMCk7CisgICAgY2hlY2tGYWlsKAorICAgICAgICAo
KSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgaW50IGZvbyhpbnQgeCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpbnQgeSA9IDY7CisgICAgICAgICAgICAgICAgaWYgKHggPT0gNykg
eworICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHggPT0gOSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5z
dGFuY2VvZiBXVHlwZUVycm9yKTsKKyAgICBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50
IGZvbyhpbnQgeCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHkgPSA2OworICAgICAgICAg
ICAgaWYgKHggPT0gNykgeworICAgICAgICAgICAgICAgIHJldHVybiA4OworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB5ID0gOTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiB5OworICAgICAgICB9CisgICAgYCk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwg
Y2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgMyldKSwg
OSk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBb
XSwgW21ha2VJbnQocHJvZ3JhbSwgNCldKSwgOSk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgNSldKSwgOSk7
CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwg
W21ha2VJbnQocHJvZ3JhbSwgNildKSwgOSk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1
bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgNyldKSwgOCk7Cisg
ICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21h
a2VJbnQocHJvZ3JhbSwgOCldKSwgOSk7CisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0
aW9uKHByb2dyYW0sICJmb28iLCBbXSwgW21ha2VJbnQocHJvZ3JhbSwgOSldKSwgOSk7CisgICAg
Y2hlY2tGYWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAgICAgaW50IGZvbyhp
bnQgeCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgeSA9IDY7CisgICAgICAg
ICAgICAgICAgaWYgKHggPT0gNykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTA7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiAxMTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1R5cGVFcnJvcik7
Cit9CisKIGZ1bmN0aW9uIFRFU1RfcHJvdG9jb2xNb25vUG9seVNpZ0RvdWJsZVBvbHlEZWZFeHBs
aWNpdCgpCiB7CiAgICAgY2hlY2tGYWlsKApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVHlwZURlZi5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5
cGVEZWYuanMKaW5kZXggNjliNjU3NDJjMjMzMDRhMDQ3MzNmNDc3NjZmYjk5ZjFmNDViZmVjNC4u
NmMwZjljMTc0ZjUzMjM1NjQxZjRjZDMwMmNhYjRjM2FhYjI3YzE0MyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZi5qcworKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmLmpzCkBAIC0zOCw1ICszOCwxMCBAQCBjbGFzcyBUeXBl
RGVmIGV4dGVuZHMgVHlwZSB7CiAgICAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9
CiAgICAgZ2V0IHR5cGVQYXJhbWV0ZXJzKCkgeyByZXR1cm4gdGhpcy5fdHlwZVBhcmFtZXRlcnM7
IH0KICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICAKKyAgICB0b1N0
cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gInR5cGVkZWYgIiArIHRoaXMubmFtZSArICI8
IiArIHRoaXMudHlwZVBhcmFtZXRlcnMgKyAiPiA9ICIgKyB0aGlzLnR5cGU7CisgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9WaXNpdG9yLmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qcwppbmRleCBmNzFiMjhiYTJj
OTQ1Nzc4OGVhZTAzMmQxOWEyNjU3YjhmNDRkZmI1Li5kNmU4NjY5ZjU1YjhjNjY1NTU4MWRiMGEz
MjEzNzNmNTE4ZmJhNDIxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9WaXNpdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3Iu
anMKQEAgLTIwOCw2ICsyMDgsMTQgQEAgY2xhc3MgVmlzaXRvciBleHRlbmRzIFZpc2l0b3JCYXNl
IHsKICAgICAgICAgICAgIG5vZGUudmFyaWFibGUudmlzaXQodGhpcyk7CiAgICAgfQogICAgIAor
ICAgIHZpc2l0SWZTdGF0ZW1lbnQobm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUuY29uZGl0aW9u
YWwudmlzaXQodGhpcyk7CisgICAgICAgIG5vZGUuYm9keS52aXNpdCh0aGlzKTsKKyAgICAgICAg
aWYgKG5vZGUuZWxzZUJvZHkpCisgICAgICAgICAgICBub2RlLmVsc2VCb2R5LnZpc2l0KHRoaXMp
OworICAgIH0KKwogICAgIHZpc2l0UmV0dXJuKG5vZGUpCiAgICAgewogICAgICAgICBpZiAobm9k
ZS52YWx1ZSkK
</data>
<flag name="review"
          id="340355"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>