<?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>184424</bug_id>
          
          <creation_ts>2018-04-09 12:24:33 -0700</creation_ts>
          <short_desc>Expand WebCore policy concept of &quot;shouldContinue&quot; to allow for more than true/false</short_desc>
          <delta_ts>2018-04-09 17:32:19 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1412961</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-09 12:24:33 -0700</bug_when>
    <thetext>Expand WebCore policy concept of &quot;shouldContinue&quot; to allow for more than true/false

Specifically:
-Yes
-No
-ForSuspension</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412967</commentid>
    <comment_count>1</comment_count>
      <attachid>337525</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-09 12:28:16 -0700</bug_when>
    <thetext>Created attachment 337525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413003</commentid>
    <comment_count>2</comment_count>
      <attachid>337536</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-09 13:42:31 -0700</bug_when>
    <thetext>Created attachment 337536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413011</commentid>
    <comment_count>3</comment_count>
      <attachid>337536</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-09 13:56:28 -0700</bug_when>
    <thetext>Comment on attachment 337536
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:3186
&gt; +        FALLTHROUGH;

I don&apos;t think this FALLTHROUGH is necessary here or above.
I also think this whole thing could be just shouldContinue != ShouldContinue::No

&gt; Source/WebCore/loader/PolicyChecker.h:60
&gt; +using NavigationPolicyDecisionFunction = WTF::CompletionHandler&lt;void(ResourceRequest&amp;&amp;, FormState*, ShouldContinue)&gt;;

WTF:: could be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413020</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-09 14:30:28 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 337536 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=337536&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:3186
&gt; &gt; +        FALLTHROUGH;
&gt; 
&gt; I don&apos;t think this FALLTHROUGH is necessary here or above.
&gt; I also think this whole thing could be just shouldContinue !=
&gt; ShouldContinue::No

But I want to make sure all cases are always accounted for even if new ones are addddeddddddd!!!!


&gt; 
&gt; &gt; Source/WebCore/loader/PolicyChecker.h:60
&gt; &gt; +using NavigationPolicyDecisionFunction = WTF::CompletionHandler&lt;void(ResourceRequest&amp;&amp;, FormState*, ShouldContinue)&gt;;
&gt; 
&gt; WTF:: could be removed.

Sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413038</commentid>
    <comment_count>5</comment_count>
      <attachid>337536</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-09 15:15:21 -0700</bug_when>
    <thetext>Comment on attachment 337536
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:3190
&gt; +    case ShouldContinue::ForSuspension:
&gt; +        shouldContinueBool = true;
&gt; +    case ShouldContinue::No:
&gt; +        shouldContinueBool = false;

Give me a break!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413044</commentid>
    <comment_count>6</comment_count>
      <attachid>337554</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-09 15:29:23 -0700</bug_when>
    <thetext>Created attachment 337554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413045</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-09 15:30:19 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 337536 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=337536&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:3190
&gt; &gt; +    case ShouldContinue::ForSuspension:
&gt; &gt; +        shouldContinueBool = true;
&gt; &gt; +    case ShouldContinue::No:
&gt; &gt; +        shouldContinueBool = false;
&gt; 
&gt; Give me a break!

No!

(Okay maybe)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413055</commentid>
    <comment_count>8</comment_count>
      <attachid>337557</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-09 15:54:49 -0700</bug_when>
    <thetext>Created attachment 337557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413093</commentid>
    <comment_count>9</comment_count>
      <attachid>337557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-09 17:31:08 -0700</bug_when>
    <thetext>Comment on attachment 337557
Patch

Clearing flags on attachment: 337557

Committed r230458: &lt;https://trac.webkit.org/changeset/230458&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413094</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-09 17:31:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413095</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-09 17:32:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/39299789&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337525</attachid>
            <date>2018-04-09 12:28:16 -0700</date>
            <delta_ts>2018-04-09 13:42:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184424-20180409122827.patch</filename>
            <type>text/plain</type>
            <size>21749</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY4ZDhhZWIwMjJkZTY2
NDAwNDQ5ZmY4YzMxMjUwZWU5MmYzMWYwMy4uNjQwZWVhZjU1MTVmYmZiMTc5YWIzMjI3MDhlMmQw
YzI0ZDViNmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA0LTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBhbmQgV2ViQ29yZSBw
b2xpY3kgY29uY2VwdCBvZiAic2hvdWxkQ29udGludWUiIHRvIGFsbG93IGZvciBtb3JlIHRoYW4g
dHJ1ZS9mYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0NDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UsIHJlZmFjdG9yIG9ubHkpCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgZXhwYW5kcyB0aGUgInNob3VsZENvbnRpbnVlIiBib29s
IHRvIGJlIGFuIGVudW0gY2xhc3Mgd2l0aDoKKyAgICAgICAgLVllcworICAgICAgICAtTm8KKyAg
ICAgICAgLUZvclN1c3BlbnNpb24KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5l
d1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNo
ZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5oOgorCiAyMDE4LTA0LTA2ICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IHRyYW5zZmVycmluZyBJbWFnZUJpdG1hcCBvYmplY3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzNzZkNTZhODg2ZTBkY2NhZTE0OTJj
YTJlYjVkZGRjNTViZGU1ZjIxLi44MGRiZjEzZjAyMWNmNTMzNTY0YjZkYjE1ZTc1ZTRlMDAxODk1
NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTYzOSwx
MCArNjM5LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAKICAgICBBU1NFUlQoIW1fd2Fp
dGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kpOwogICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xp
Y3kgPSB0cnVlOwotICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmln
YXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIGJvb2wgc2hvdWxkQ29udGludWUpIG11dGFibGUgewor
ICAgIGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0KG5ld1JlcXVlc3QpLCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSBtdXRhYmxlIHsKICAg
ICAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IGZhbHNlOwotICAgICAgICBpZiAo
IXNob3VsZENvbnRpbnVlKQorICAgICAgICBzd2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgIGNhc2UgU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb246CisgICAgICAgICAgICBGQUxM
VEhST1VHSDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTZXR1cCB0aGlzIHBhZ2UgZm9yIHN1c3Bl
bnNpb24gKGUuZy4gUGFnZSBDYWNoZSkgaGVyZS4KKyAgICAgICAgY2FzZSBTaG91bGRDb250aW51
ZTo6Tm86CiAgICAgICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2hvdWxkQ29udGludWU6OlllczoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCBkNTVkMGEyYmY5NGQyYmIwYjU2MWNiMjRlMGI2NmJiYTAzNDczMGI2Li40YzFmMWE0
YTRjZTNhOTFlN2Q1ZjMzZGYxZTFmZGQ4MTIwYzM2YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYg
cmVmCiAKICAgICBpZiAoIXRhcmdldEZyYW1lICYmICFmcmFtZU5hbWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGFjdGlvbiA9IGFjdGlvbi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2Fk
UmVxdWVzdCkpOwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdXaW5kb3dQb2xpY3ko
V1RGTW92ZShhY3Rpb24pLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgW3RoaXMsIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxl
ciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGJvb2wgc2hvdWxkQ29udGludWUp
IHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUo
YWN0aW9uKSwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBjb21w
bGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51
ZSkgewogICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVz
dCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIGFsbG93TmF2
aWdhdGlvblRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5KTsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgICAgIH0pOwpAQCAtMTMzNywxMCArMTMzNywxMCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIHJlZgogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc3RvcENoZWNrKCk7CiAg
ICAgICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZShuZXdMb2FkVHlwZSk7CiAgICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJvb2wp
OwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNl
UmVxdWVzdChyZXF1ZXN0KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8s
IG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFt
ZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gY29tcGxldGlv
bkhhbmRsZXJDYWxsZWQuY29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNr
ZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmYWxz
ZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0
KCksIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwg
Y29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlZC5jb3B5UmVm
KCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSosIFNob3VsZENv
bnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBpZiAoIWNvbXBsZXRpb25IYW5k
bGVyQ2FsbGVkLT52YWx1ZSkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ2Fs
bGVkLT52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9s
bEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSk7CisgICAgICAg
ICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1
ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSk7CiAgICAgICAgICAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyQ2FsbGVk
LT52YWx1ZSkgewpAQCAtMTM5OSw3ICsxMzk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCkKIAogICAgIGlmIChyZXF1ZXN0LnNob3VsZENoZWNr
TmV3V2luZG93UG9saWN5KCkpIHsKICAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyBy
ZXF1ZXN0LnJlcXVlc3RlcigpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBJbml0aWF0ZWRC
eU1haW5GcmFtZTo6VW5rbm93biwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCByZXF1ZXN0LnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSB9OwotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hl
Y2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCByZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCBudWxscHRyLCByZXF1ZXN0LmZyYW1lTmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGJvb2wgc2hvdWxkQ29udGlu
dWUpIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1v
dmUoYWN0aW9uKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgbnVsbHB0ciwgcmVxdWVzdC5m
cmFtZU5hbWUoKSwgW3RoaXNdIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1T
dGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAg
ICAgICAgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRl
LCBmcmFtZU5hbWUsIGFjdGlvbiwgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MpOwogICAgICAgICB9
KTsKIApAQCAtMTUxMywxMCArMTUxMywxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERv
Y3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAg
ICAgICBvbGREb2N1bWVudExvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCgpKTsKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVjaygpOwogICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRCb29sKTsK
LSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJl
cXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSAqLywgb2xkRG9jdW1lbnRMb2FkZXIuZ2V0KCksIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3Rl
Y3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSBj
b21wbGV0aW9uSGFuZGxlckNhbGxlZC5jb3B5UmVmKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIEZvcm1TdGF0ZSosIGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9s
aWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QobG9hZGVy
LT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLywgb2xk
RG9jdW1lbnRMb2FkZXIuZ2V0KCksIGZvcm1TdGF0ZSwgW3RoaXMsIHByb3RlY3RlZEZyYW1lID0g
bWFrZVJlZihtX2ZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXJDYWxsZWQgPSBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlZC5jb3B5UmVmKCldIChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZv
cm1TdGF0ZSosIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICBp
ZiAoIWNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkLT52YWx1ZSkgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVkLT52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY29u
dGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRD
b250aW51ZSk7CisgICAgICAgICAgICAgICAgY29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2
aWdhdGlvblBvbGljeShyZXF1ZXN0LCBzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6
WWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIGlmICghY29tcGxldGlv
bkhhbmRsZXJDYWxsZWQtPnZhbHVlKSB7CkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZy
YW1lTG9hZFR5cGUgdAogICAgICAgICAvLyBhIG5ldyBVUkwsIHRoZSBwYXJlbnQgZnJhbWUgc2hv
dWxkbid0IGxlYXJuIHRoZSBVUkwuCiAgICAgICAgIGlmICghbV9zdGF0ZU1hY2hpbmUuY29tbWl0
dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCkKICAgICAgICAgICAgICYmICFvd25lckVsZW1lbnQt
PmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGxvYWRlci0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygp
KSkgewotICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGxvYWRl
ci0+cmVxdWVzdCgpLCBmb3JtU3RhdGUsIGZhbHNlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwpOworICAgICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGxvYWRl
ci0+cmVxdWVzdCgpLCBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlOjpObywgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
QEAgLTE1NTAsMTEgKzE1NTAsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVu
dExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICBtX2Zy
YW1lLm5hdmlnYXRpb25TY2hlZHVsZXIoKS5jYW5jZWwodHJ1ZSk7CiAKICAgICBpZiAoIW1fY3Vy
cmVudExvYWRTaG91bGRDaGVja05hdmlnYXRpb25Qb2xpY3kpIHsKLSAgICAgICAgY29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGxvYWRlci0+cmVxdWVzdCgpLCBmb3JtU3RhdGUsIHRy
dWUsIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgICAgIGNvbnRpbnVlTG9hZEFm
dGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCBTaG91bGRD
b250aW51ZTo6WWVzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZSAqLywgbG9hZGVyLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFt
ZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBib29sIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5yZXF1ZXN0KCkpLCBmYWxzZSAvKiBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZSAqLywgbG9hZGVyLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFt
ZSA9IG1ha2VSZWYobV9mcmFtZSksIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBTaG91bGRDb250
aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICBjb250aW51ZUxvYWRBZnRlck5hdmlnYXRp
b25Qb2xpY3kocmVxdWVzdCwgZm9ybVN0YXRlLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsK
QEAgLTI4MTQsNyArMjgxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwb2xpY3lDaGVja2VyKCkuY2hlY2tOZXdX
aW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0LCBXVEZN
b3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZv
cm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IGFjdGlvbiwgYm9vbCBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xpY3lDaGVja2VyKCku
Y2hlY2tOZXdXaW5kb3dQb2xpY3koV1RGTW92ZShhY3Rpb24pLCB3b3JraW5nUmVzb3VyY2VSZXF1
ZXN0LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgW3RoaXMsIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgb3BlbmVyUG9saWN5LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3Jt
U3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAg
ICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0
ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBhbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgICAgICB9KTsKQEAgLTMxNjksNyArMzE2OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmRp
c3BhdGNoQmVmb3JlVW5sb2FkRXZlbnQoQ2hyb21lJiBjaHJvbWUsIEZyYW1lTG9hZGVyKiBmcmFt
ZUxvCiAgICAgcmV0dXJuIGNocm9tZS5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGV4dCwg
bV9mcmFtZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9y
bVN0YXRlLCBib29sIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwg
YWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKQordm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlLCBBbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKQogewog
ICAgIC8vIElmIHdlIGxvYWRlZCBhbiBhbHRlcm5hdGUgcGFnZSB0byByZXBsYWNlIGFuIHVucmVh
Y2hhYmxlVVJMLCB3ZSdsbCBnZXQgaW4gaGVyZSB3aXRoIGEKICAgICAvLyBuaWwgcG9saWN5RGF0
YVNvdXJjZSBiZWNhdXNlIGxvYWRpbmcgdGhlIGFsdGVybmF0ZSBwYWdlIHdpbGwgaGF2ZSBwYXNz
ZWQKQEAgLTMxODAsMTIgKzMxODAsMTcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2Fk
QWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKIAogICAg
IGJvb2wgdXJsSXNEaXNhbGxvd2VkID0gYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMID09IEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8gJiYgIXJlcXVlc3QudXJsKCkuaXNWYWxpZCgp
OwogCi0gICAgLy8gVGhyZWUgcmVhc29ucyB3ZSBjYW4ndCBjb250aW51ZToKLSAgICAvLyAgICAx
KSBOYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZSBzYWlkIHdlIGNhbid0IHNvIHJlcXVlc3QgaXMg
bmlsLiBBIHByaW1hcnkgY2FzZSBvZiB0aGlzIAotICAgIC8vICAgICAgIGlzIHRoZSB1c2VyIHJl
c3BvbmRpbmcgQ2FuY2VsIHRvIHRoZSBmb3JtIHJlcG9zdCBuYWcgc2hlZXQuCi0gICAgLy8gICAg
MikgVXNlciByZXNwb25kZWQgQ2FuY2VsIHRvIGFuIGFsZXJ0IHBvcHBlZCB1cCBieSB0aGUgYmVm
b3JlIHVubG9hZCBldmVudCBoYW5kbGVyLgotICAgIC8vICAgIDMpIFRoZSByZXF1ZXN0J3MgVVJM
IGlzIGludmFsaWQgYW5kIG5hdmlnYXRpb24gdG8gaW52YWxpZCBVUkxzIGlzIGRpc2FsbG93ZWQu
Ci0gICAgYm9vbCBjYW5Db250aW51ZSA9IHNob3VsZENvbnRpbnVlICYmIHNob3VsZENsb3NlKCkg
JiYgIXVybElzRGlzYWxsb3dlZDsKKyAgICBib29sIHNob3VsZENvbnRpbnVlQm9vbDsKKyAgICBz
d2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7CisgICAgY2FzZSBTaG91bGRDb250aW51ZTo6WWVzOgor
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5z
aW9uOgorICAgICAgICBzaG91bGRDb250aW51ZUJvb2wgPSB0cnVlOworICAgIGNhc2UgU2hvdWxk
Q29udGludWU6Ok5vOgorICAgICAgICBzaG91bGRDb250aW51ZUJvb2wgPSBmYWxzZTsKKyAgICB9
OworCisgICAgYm9vbCBjYW5Db250aW51ZSA9IHNob3VsZENvbnRpbnVlQm9vbCAmJiBzaG91bGRD
bG9zZSgpICYmICF1cmxJc0Rpc2FsbG93ZWQ7CiAKICAgICBpZiAoIWNhbkNvbnRpbnVlKSB7CiAg
ICAgICAgIC8vIElmIHdlIHdlcmUgd2FpdGluZyBmb3IgYSBxdWljayByZWRpcmVjdCwgYnV0IHRo
ZSBwb2xpY3kgZGVsZWdhdGUgZGVjaWRlZCB0byBpZ25vcmUgaXQsIHRoZW4gd2UgCkBAIC0zMjY5
LDkgKzMyNzQsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0
aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKIH0KIAogdm9pZCBGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LAotICAgIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENvbnRp
bnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMLCBOZXdGcmFtZU9wZW5lclBvbGljeSBvcGVuZXJQb2xpY3kpCisgICAgRm9ybVN0YXRlKiBm
b3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBOZXdGcmFtZU9wZW5lclBv
bGljeSBvcGVuZXJQb2xpY3kpCiB7Ci0gICAgaWYgKCFzaG91bGRDb250aW51ZSkKKyAgICBBU1NF
UlQoc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pOworICAg
IGlmIChzaG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6WWVzKQogICAgICAgICByZXR1
cm47CiAKICAgICBSZWY8RnJhbWU+IGZyYW1lKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAppbmRleCA3ZTVlZDVkZDdlNjI2MjQyMTEwOWY2ZTA3NDk5OTU2YzQwYjQxMDEy
Li4xMjlhODNjZWVhMTJmM2Q5NGM3YTFjYzQyNTg3N2IwZWViMWQzNTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBTdWJmcmFtZUxvYWRl
cjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIE5hdmlnYXRpb25Qb2xpY3lD
aGVjazsKK2VudW0gY2xhc3MgU2hvdWxkQ29udGludWU7CiAKIHN0cnVjdCBXaW5kb3dGZWF0dXJl
czsKIApAQCAtMzM4LDggKzMzOSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaXNwYXRjaEJlZm9y
ZVVubG9hZEV2ZW50KENocm9tZSYsIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlckJlaW5nTmF2aWdh
dGVkKTsKICAgICB2b2lkIGRpc3BhdGNoVW5sb2FkRXZlbnRzKFVubG9hZEV2ZW50UG9saWN5KTsK
IAotICAgIHZvaWQgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGJvb2wgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTCk7Ci0gICAgdm9pZCBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1Bv
bGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUsIEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQb2xpY3kpOworICAgIHZv
aWQgY29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIEZvcm1TdGF0ZSosIFNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
UkwpOworICAgIHZvaWQgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMLCBOZXdGcmFtZU9wZW5lclBvbGljeSk7CiAgICAgdm9pZCBjb250aW51ZUZyYWdtZW50
U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wg
c2hvdWxkQ29udGludWUpOwogCiAgICAgYm9vbCBzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0
aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBGcmFt
ZUxvYWRUeXBlLCBjb25zdCBVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAppbmRleCA0MmQ1MmMxZTkxOWY4ZjJlN2Q2ZjkxYjdlNmFlYjlhZjQ3MTM1NjZiLi5jNmUx
OTViOTk3Zjk1MTAwNjUyMWJiNTBkZmNjOWUzYWQ3NTYwMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUG9saWN5Q2hlY2tl
cjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wg
ZGlkUmVjCiAgICAgLy8gRG9uJ3QgYXNrIG1vcmUgdGhhbiBvbmNlIGZvciB0aGUgc2FtZSByZXF1
ZXN0IG9yIGlmIHdlIGFyZSBsb2FkaW5nIGFuIGVtcHR5IFVSTC4KICAgICAvLyBUaGlzIGF2b2lk
cyBjb25mdXNpb24gb24gdGhlIHBhcnQgb2YgdGhlIGNsaWVudC4KICAgICBpZiAoZXF1YWxJZ25v
cmluZ0hlYWRlckZpZWxkcyhyZXF1ZXN0LCBsb2FkZXItPmxhc3RDaGVja2VkUmVxdWVzdCgpKSB8
fCAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkpKSB7Ci0gICAg
ICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbnVsbHB0ciwgdHJ1ZSk7Cisg
ICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbnVsbHB0ciwgU2hvdWxk
Q29udGludWU6Olllcyk7CiAgICAgICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFdU
Rk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3
IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAjZW5kaWYKICAgICAgICAgaWYgKGlzQmFja0Zv
cndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkKICAgICAgICAgICAgIG1fbG9hZFR5cGUgPSBGcmFt
ZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIG51
bGxwdHIsIHNob3VsZENvbnRpbnVlKTsKKyAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0
KSwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUgPyBTaG91bGRDb250aW51ZTo6WWVzIDogU2hvdWxk
Q29udGludWU6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE3LDE0ICsxMTcs
MTQgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAgICAgIC8vIHJldmVhbCB0aGF0
IHRoZSBmcmFtZSB3YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90aGVy
IGNyb3NzLW9yaWdpbiBwYWdlIGxvYWQuCiAgICAgICAgICAgICBtX2ZyYW1lLm93bmVyRWxlbWVu
dCgpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1
ZXN0KSwgbnVsbHB0ciwgZmFsc2UpOworICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3Qp
LCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVl
c3QpKTsKIAogICAgIGlmIChyZXF1ZXN0LnVybCgpID09IGJsYW5rVVJMKCkpCi0gICAgICAgIHJl
dHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIHRydWUpOworICAgICAg
ICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBTaG91bGRDb250
aW51ZTo6WWVzKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBR
dWlja0xvb2stZ2VuZXJhdGVkIFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4KQEAg
LTEzOSw3ICsxMzksNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGlj
eShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAgICAgICAgaWYg
KHVuYmxvY2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7CiAg
ICAgICAgIH0pOwotICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7
CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpO
byk7CiAgICAgfQogICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0geyB9OwogI2Vu
ZGlmCkBAIC0xNjAsMTYgKzE2MCwxNSBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdh
dGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogICAgICAg
ICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2FkKHJlcXVlc3QsIHN1
Z2dlc3RlZEZpbGVuYW1lKTsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNl
IFBvbGljeUFjdGlvbjo6SWdub3JlOgotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwg
bnVsbHB0ciwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0
ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1c3Bl
bmQ6Ci0gICAgICAgICAgICBMT0coTG9hZGluZywgIlBvbGljeUFjdGlvbjo6U3VzcGVuZCBlbmNv
dW50ZXJlZCAtIFRyZWF0aW5nIGFzIFBvbGljeUFjdGlvbjo6SWdub3JlIGZvciBub3ciKTsKLSAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpGb3JTdXNw
ZW5zaW9uKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlVzZToKICAgICAgICAgICAgIGlm
ICghbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7
CiAgICAgICAgICAgICAgICAgaGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJhbWUubG9h
ZGVyKCkuY2xpZW50KCkuY2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3Qp
LCBmb3JtU3RhdGUuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdU
Rk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZS5nZXQoKSwgU2hvdWxkQ29udGludWU6Olllcyk7CiAg
ICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSk7CkBAIC0xNzgs
MTAgKzE3NywxMCBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24m
JiBmdW5jdGlvbikKIHsKICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpICYmIG1fZnJhbWUuZG9j
dW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveFBvcHVwcykpCi0gICAgICAgIHJldHVybiBmdW5j
dGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBmdW5j
dGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogCiAgICAg
aWYgKCFET01XaW5kb3c6OmFsbG93UG9wVXAobV9mcmFtZSkpCi0gICAgICAgIHJldHVybiBmdW5j
dGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBmdW5j
dGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogCiAgICAg
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwg
W2ZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0YXRlID0gbWFrZVJlZlB0
cihmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZ1bmN0aW9uID0gV1RG
TW92ZShmdW5jdGlvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAg
ICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewpAQCAtMTg5LDEzICsxODgsMTMgQEAgdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2
aWdhdGlvbkFjdGlvbiwgY28KICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5z
dGFydERvd25sb2FkKHJlcXVlc3QpOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAg
IGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6Ci0gICAgICAgICAgICBmdW5jdGlvbih7IH0sIG51
bGxwdHIsIHsgfSwgeyB9LCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jdGlvbih7IH0sIG51bGxw
dHIsIHsgfSwgeyB9LCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6U3VzcGVuZDoKICAgICAgICAgICAgIC8vIEl0IGlz
IGludmFsaWQgdG8gZ2V0IGEgIlN1c3BlbmQiIHBvbGljeSBmb3IgbmV3IHdpbmRvd3MsIGFzIHRo
ZSBvbGQgZG9jdW1lbnQgaXMgbm90IGdvaW5nIGF3YXkuCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6VXNlOgotICAg
ICAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIG5h
dmlnYXRpb25BY3Rpb24sIHRydWUpOworICAgICAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgZm9y
bVN0YXRlLmdldCgpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIFNob3VsZENvbnRpbnVl
OjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggZDBm
MGJjMjRjNjE2OTI4YjY0YWE5NjVlNzUzYTBhZWFiZmVhOWNjZi4uM2RiMzJmMGY0NmViZmJlYTJj
MDcwMjRkZWZjNWU3NWQ4YzQwYzI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5oCkBAIC01MCw4ICs1MCwxNCBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKLXVzaW5nIE5ld1dpbmRvd1Bv
bGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRpbnVlKT47Ci11c2luZyBOYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJiwgRm9ybVN0YXRlKiwgYm9vbCBzaG91bGRDb250aW51ZSk+Owor
ZW51bSBjbGFzcyBTaG91bGRDb250aW51ZSB7CisgICAgWWVzLAorICAgIE5vLAorICAgIEZvclN1
c3BlbnNpb24KK307CisKK3VzaW5nIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0
YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBT
aG91bGRDb250aW51ZSk+OwordXNpbmcgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24g
PSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYsIEZvcm1TdGF0
ZSosIFNob3VsZENvbnRpbnVlKT47CiAKIGNsYXNzIFBvbGljeUNoZWNrZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFBvbGljeUNoZWNrZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337536</attachid>
            <date>2018-04-09 13:42:31 -0700</date>
            <delta_ts>2018-04-09 15:29:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184424-20180409134230.patch</filename>
            <type>text/plain</type>
            <size>21756</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhhYWQzNGU3YjlmYTkx
ZjAwODBhMDg0NmJjODdhOWVmNDU2NDNjZi4uYjQ5OWNiNjEyYjVlOWUwNzhhNmQxYjJkZTRjOGNm
YTc2NjY3YjQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA0LTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBhbmQgV2ViQ29yZSBw
b2xpY3kgY29uY2VwdCBvZiAic2hvdWxkQ29udGludWUiIHRvIGFsbG93IGZvciBtb3JlIHRoYW4g
dHJ1ZS9mYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0NDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UsIHJlZmFjdG9yIG9ubHkpCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgZXhwYW5kcyB0aGUgInNob3VsZENvbnRpbnVlIiBib29s
IHRvIGJlIGFuIGVudW0gY2xhc3Mgd2l0aDoKKyAgICAgICAgLVllcworICAgICAgICAtTm8KKyAg
ICAgICAgLUZvclN1c3BlbnNpb24KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5l
d1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNo
ZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5oOgorCiAyMDE4LTA0LTA5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwMzkwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMzc2ZDU2YTg4NmUwZGNj
YWUxNDkyY2EyZWI1ZGRkYzU1YmRlNWYyMS4uODBkYmYxM2YwMjFjZjUzMzU2NGI2ZGIxNWU3NWU0
ZTAwMTg5NTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC02MzksMTAgKzYzOSwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogCiAgICAgQVNTRVJU
KCFtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5KTsKICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0
aW9uUG9saWN5ID0gdHJ1ZTsKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKSBtdXRh
YmxlIHsKKyAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJs
ZSB7CiAgICAgICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKLSAgICAg
ICAgaWYgKCFzaG91bGRDb250aW51ZSkKKyAgICAgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkg
eworICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uOgorICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICAvLyBGSVhNRTogU2V0dXAgdGhpcyBwYWdlIGZv
ciBzdXNwZW5zaW9uIChlLmcuIFBhZ2UgQ2FjaGUpIGhlcmUuCisgICAgICAgIGNhc2UgU2hvdWxk
Q29udGludWU6Ok5vOgogICAgICAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpZZXM6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggZDU1ZDBhMmJmOTRkMmJiMGI1NjFjYjI0ZTBiNjZiYmEwMzQ3MzBiNi4u
NGMxZjFhNGE0Y2UzYTkxZTdkNWYzM2RmMWUxZmRkODEyMGMzNmM3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHJlZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHko
KSkgewogICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZy
YW1lTG9hZFJlcXVlc3QpKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93
UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0
aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlv
bkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENv
bnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShX
VEZNb3ZlKGFjdGlvbiksIHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbdGhpcywgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxk
Q29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5
KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBh
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsKQEAgLTEzMzcsMTAgKzEzMzcsMTAgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVx
dWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVj
aygpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc2V0TG9hZFR5cGUobmV3TG9hZFR5cGUpOwog
ICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCb29sKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVkLmNvcHlSZWYoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgRm9ybVN0YXRlKiwgYm9vbCBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xp
Y3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0
KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9h
ZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZWQu
Y29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgaWYgKCFjb21wbGV0
aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlZC0+dmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21l
bnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUpOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xp
Y3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxl
ckNhbGxlZC0+dmFsdWUpIHsKQEAgLTEzOTksNyArMTM5OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKICAgICBpZiAocmVxdWVzdC5zaG91
bGRDaGVja05ld1dpbmRvd1BvbGljeSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0
aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVz
dC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKLSAgICAgICAgcG9saWN5Q2hlY2tl
cigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSwgbnVsbHB0ciwgcmVxdWVzdC5mcmFtZU5hbWUoKSwgW3RoaXNdIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGlj
eShXVEZNb3ZlKGFjdGlvbiksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG51bGxwdHIsIHJl
cXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsK
ICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZv
cm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAg
ICAgICAgfSk7CiAKQEAgLTE1MTMsMTAgKzE1MTMsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBl
IHQKICAgICAgICAgb2xkRG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAg
ICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IGFkb3B0UmVmKCpuZXcgU2hhcmVk
Qm9vbCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlz
LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2Fs
bGVkID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZWQuY29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0
KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Ug
Ki8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZWQuY29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAg
ICAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUpIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwg
c2hvdWxkQ29udGludWUpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxB
ZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWU6Olllcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBpZiAoIWNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVkLT52YWx1ZSkgewpAQCAtMTU0Miw3ICsxNTQyLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICAgICAgLy8gYSBuZXcgVVJMLCB0aGUgcGFyZW50IGZy
YW1lIHNob3VsZG4ndCBsZWFybiB0aGUgVVJMLgogICAgICAgICBpZiAoIW1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpCiAgICAgICAgICAgICAmJiAhb3duZXJF
bGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChsb2FkZXItPnJlcXVlc3QoKS51cmwoKS5z
dHJpbmcoKSkpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCBmYWxzZSwgYWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMKTsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZTo6Tm8sIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNTUwLDExICsxNTUwLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRo
RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAg
ICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuY2FuY2VsKHRydWUpOwogCiAgICAgaWYg
KCFtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KSB7Ci0gICAgICAgIGNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0
YXRlLCB0cnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgICAgICBjb250aW51
ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5yZXF1ZXN0KCksIGZvcm1TdGF0ZSwg
U2hvdWxkQ29udGludWU6OlllcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgYm9v
bCBzaG91bGRDb250aW51ZSkgeworICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgc2hvdWxkQ29udGludWUsIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfSk7CkBAIC0yODE0LDcgKzI4MTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNo
ZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgd29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0
YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hl
Y2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgd29ya2luZ1Jlc291
cmNlUmVxdWVzdCwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7
CiAgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBm
b3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgfSk7CkBAIC0zMTY5LDcgKzMxNjksNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRl
ciogZnJhbWVMbwogICAgIHJldHVybiBjaHJvbWUucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHRleHQsIG1fZnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
ck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3Rh
dGUqIGZvcm1TdGF0ZSwgYm9vbCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51
ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCkKIHsKICAgICAvLyBJZiB3ZSBsb2FkZWQgYW4gYWx0ZXJuYXRlIHBhZ2UgdG8gcmVwbGFjZSBh
biB1bnJlYWNoYWJsZVVSTCwgd2UnbGwgZ2V0IGluIGhlcmUgd2l0aCBhCiAgICAgLy8gbmlsIHBv
bGljeURhdGFTb3VyY2UgYmVjYXVzZSBsb2FkaW5nIHRoZSBhbHRlcm5hdGUgcGFnZSB3aWxsIGhh
dmUgcGFzc2VkCkBAIC0zMTgwLDEyICszMTgwLDE3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
CiAKICAgICBib29sIHVybElzRGlzYWxsb3dlZCA9IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCA9PSBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Ok5vICYmICFyZXF1ZXN0LnVybCgpLmlz
VmFsaWQoKTsKIAotICAgIC8vIFRocmVlIHJlYXNvbnMgd2UgY2FuJ3QgY29udGludWU6Ci0gICAg
Ly8gICAgMSkgTmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUgc2FpZCB3ZSBjYW4ndCBzbyByZXF1
ZXN0IGlzIG5pbC4gQSBwcmltYXJ5IGNhc2Ugb2YgdGhpcyAKLSAgICAvLyAgICAgICBpcyB0aGUg
dXNlciByZXNwb25kaW5nIENhbmNlbCB0byB0aGUgZm9ybSByZXBvc3QgbmFnIHNoZWV0LgotICAg
IC8vICAgIDIpIFVzZXIgcmVzcG9uZGVkIENhbmNlbCB0byBhbiBhbGVydCBwb3BwZWQgdXAgYnkg
dGhlIGJlZm9yZSB1bmxvYWQgZXZlbnQgaGFuZGxlci4KLSAgICAvLyAgICAzKSBUaGUgcmVxdWVz
dCdzIFVSTCBpcyBpbnZhbGlkIGFuZCBuYXZpZ2F0aW9uIHRvIGludmFsaWQgVVJMcyBpcyBkaXNh
bGxvd2VkLgotICAgIGJvb2wgY2FuQ29udGludWUgPSBzaG91bGRDb250aW51ZSAmJiBzaG91bGRD
bG9zZSgpICYmICF1cmxJc0Rpc2FsbG93ZWQ7CisgICAgYm9vbCBzaG91bGRDb250aW51ZUJvb2w7
CisgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkgeworICAgIGNhc2UgU2hvdWxkQ29udGludWU6
OlllczoKKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Rm9y
U3VzcGVuc2lvbjoKKyAgICAgICAgc2hvdWxkQ29udGludWVCb29sID0gdHJ1ZTsKKyAgICBjYXNl
IFNob3VsZENvbnRpbnVlOjpObzoKKyAgICAgICAgc2hvdWxkQ29udGludWVCb29sID0gZmFsc2U7
CisgICAgfTsKKworICAgIGJvb2wgY2FuQ29udGludWUgPSBzaG91bGRDb250aW51ZUJvb2wgJiYg
c2hvdWxkQ2xvc2UoKSAmJiAhdXJsSXNEaXNhbGxvd2VkOwogCiAgICAgaWYgKCFjYW5Db250aW51
ZSkgewogICAgICAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGEgcXVpY2sgcmVkaXJlY3Qs
IGJ1dCB0aGUgcG9saWN5IGRlbGVnYXRlIGRlY2lkZWQgdG8gaWdub3JlIGl0LCB0aGVuIHdlIApA
QCAtMzI2OSw5ICszMjc0LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVy
TmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwKLSAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBzaG91
bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQb2xpY3kgb3BlbmVyUG9saWN5KQorICAgIEZvcm1T
dGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZp
Z2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCwgTmV3RnJhbWVP
cGVuZXJQb2xpY3kgb3BlbmVyUG9saWN5KQogewotICAgIGlmICghc2hvdWxkQ29udGludWUpCisg
ICAgQVNTRVJUKHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9u
KTsKKyAgICBpZiAoc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6OlllcykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmPEZyYW1lPiBmcmFtZShtX2ZyYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggN2U1ZWQ1ZGQ3ZTYyNjI0MjExMDlmNmUwNzQ5OTk1NmM0
MGI0MTAxMi4uMTI5YTgzY2VlYTEyZjNkOTRjN2ExY2M0MjU4NzdiMGVlYjFkMzU4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgU3ViZnJh
bWVMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogZW51bSBjbGFzcyBOYXZpZ2F0aW9u
UG9saWN5Q2hlY2s7CitlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlOwogCiBzdHJ1Y3QgV2luZG93
RmVhdHVyZXM7CiAKQEAgLTMzOCw4ICszMzksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzcGF0
Y2hCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmLCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJCZWlu
Z05hdmlnYXRlZCk7CiAgICAgdm9pZCBkaXNwYXRjaFVubG9hZEV2ZW50cyhVbmxvYWRFdmVudFBv
bGljeSk7CiAKLSAgICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlLCBBbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOwotICAgIHZvaWQgY29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRp
bnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5KTsK
KyAgICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMKTsKKyAgICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgU2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCwgTmV3RnJhbWVPcGVuZXJQb2xpY3kpOwogICAgIHZvaWQgY29udGludWVG
cmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIHNob3VsZENvbnRpbnVlKTsKIAogICAgIGJvb2wgc2hvdWxkUGVyZm9ybUZyYWdtZW50
TmF2aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhv
ZCwgRnJhbWVMb2FkVHlwZSwgY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAKaW5kZXggNDJkNTJjMWU5MTlmOGYyZTdkNmY5MWI3ZTZhZWI5YWY0NzEzNTY2
Yi4uYzZlMTk1Yjk5N2Y5NTEwMDY1MjFiYjUwZGZjYzllM2FkNzU2MDEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBib29sIGRpZFJlYwogICAgIC8vIERvbid0IGFzayBtb3JlIHRoYW4gb25jZSBmb3IgdGhlIHNh
bWUgcmVxdWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBhbiBlbXB0eSBVUkwuCiAgICAgLy8gVGhp
cyBhdm9pZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9mIHRoZSBjbGllbnQuCiAgICAgaWYgKGVx
dWFsSWdub3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwgbG9hZGVyLT5sYXN0Q2hlY2tlZFJlcXVl
c3QoKSkgfHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKSkg
ewotICAgICAgICBmdW5jdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG51bGxwdHIsIHRy
dWUpOworICAgICAgICBmdW5jdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG51bGxwdHIs
IFNob3VsZENvbnRpbnVlOjpZZXMpOwogICAgICAgICBsb2FkZXItPnNldExhc3RDaGVja2VkUmVx
dWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwNyw3
ICsxMDcsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29sIGRpZFJlYwogI2VuZGlmCiAgICAgICAgIGlmIChp
c0JhY2tGb3J3YXJkTG9hZFR5cGUobV9sb2FkVHlwZSkpCiAgICAgICAgICAgICBtX2xvYWRUeXBl
ID0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkOwotICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVl
c3QpLCBudWxscHRyLCBzaG91bGRDb250aW51ZSk7CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUo
cmVxdWVzdCksIG51bGxwdHIsIHNob3VsZENvbnRpbnVlID8gU2hvdWxkQ29udGludWU6OlllcyA6
IFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExNywx
NCArMTE3LDE0IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAgICAvLyByZXZl
YWwgdGhhdCB0aGUgZnJhbWUgd2FzIGJsb2NrZWQuIFRoaXMgd2F5LCBpdCBsb29rcyBsaWtlIGFu
eSBvdGhlciBjcm9zcy1vcmlnaW4gcGFnZSBsb2FkLgogICAgICAgICAgICAgbV9mcmFtZS5vd25l
ckVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2Fk
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uKFdURk1v
dmUocmVxdWVzdCksIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShy
ZXF1ZXN0KSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dChyZXF1ZXN0KSk7CiAKICAgICBpZiAocmVxdWVzdC51cmwoKSA9PSBibGFua1VSTCgpKQotICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCB0cnVlKTsK
KyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZSwgU2hv
dWxkQ29udGludWU6Olllcyk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBBbHdheXMg
YWxsb3cgUXVpY2tMb29rLWdlbmVyYXRlZCBVUkxzIGJhc2VkIG9uIHRoZSBwcm90b2NvbCBzY2hl
bWUuCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAgICAg
ICAgIGlmICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9h
ZCgpOwogICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwg
ZmFsc2UpOworICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBTaG91bGRDb250
aW51ZTo6Tm8pOwogICAgIH0KICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciA9IHsg
fTsKICNlbmRpZgpAQCAtMTYwLDE2ICsxNjAsMTUgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMK
ICAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1
ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAg
ICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlv
bih7IH0sIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0s
IG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9u
OjpTdXNwZW5kOgotICAgICAgICAgICAgTE9HKExvYWRpbmcsICJQb2xpY3lBY3Rpb246OlN1c3Bl
bmQgZW5jb3VudGVyZWQgLSBUcmVhdGluZyBhcyBQb2xpY3lBY3Rpb246Oklnbm9yZSBmb3Igbm93
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6
Rm9yU3VzcGVuc2lvbik7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAg
ICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1
ZXN0KSkgewogICAgICAgICAgICAgICAgIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgZmFsc2UpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpO
byk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShy
ZXF1ZXN0KSwgZm9ybVN0YXRlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBmdW5j
dGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUuZ2V0KCksIFNob3VsZENvbnRpbnVlOjpZ
ZXMpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0pOwpA
QCAtMTc4LDEwICsxNzcsMTAgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKIHZvaWQgUG9saWN5
Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXRp
b25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3Jt
U3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2Zy
YW1lLmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hQb3B1cHMpKQotICAgICAgICByZXR1
cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCB7IH0sIHsgfSwgZmFsc2UpOworICAgICAgICByZXR1
cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCB7IH0sIHsgfSwgU2hvdWxkQ29udGludWU6Ok5vKTsK
IAogICAgIGlmICghRE9NV2luZG93OjphbGxvd1BvcFVwKG1fZnJhbWUpKQotICAgICAgICByZXR1
cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCB7IH0sIHsgfSwgZmFsc2UpOworICAgICAgICByZXR1
cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCB7IH0sIHsgfSwgU2hvdWxkQ29udGludWU6Ok5vKTsK
IAogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFt
ZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1h
a2VSZWZQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxl
IHsKICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKQEAgLTE4OSwxMyArMTg4LDEzIEBA
IHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlv
biYmIG5hdmlnYXRpb25BY3Rpb24sIGNvCiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0KTsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwog
ICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6SWdub3JlOgotICAgICAgICAgICAgZnVuY3Rpb24o
eyB9LCBudWxscHRyLCB7IH0sIHsgfSwgZmFsc2UpOworICAgICAgICAgICAgZnVuY3Rpb24oeyB9
LCBudWxscHRyLCB7IH0sIHsgfSwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1c3BlbmQ6CiAgICAgICAgICAgICAv
LyBJdCBpcyBpbnZhbGlkIHRvIGdldCBhICJTdXNwZW5kIiBwb2xpY3kgZm9yIG5ldyB3aW5kb3dz
LCBhcyB0aGUgb2xkIGRvY3VtZW50IGlzIG5vdCBnb2luZyBhd2F5LgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlVz
ZToKLSAgICAgICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVO
YW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCB0cnVlKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHJlcXVl
c3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBTaG91bGRD
b250aW51ZTo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCmlu
ZGV4IGQwZjBiYzI0YzYxNjkyOGI2NGFhOTY1ZTc1M2EwYWVhYmZlYTljY2YuLjNkYjMyZjBmNDZl
YmZiZWEyYzA3MDI0ZGVmYzVlNzVkOGM0MGMyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuaApAQCAtNTAsOCArNTAsMTQgQEAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCi11c2luZyBOZXdX
aW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk+OwotdXNp
bmcgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYsIEZvcm1TdGF0ZSosIGJvb2wgc2hvdWxkQ29udGlu
dWUpPjsKK2VudW0gY2xhc3MgU2hvdWxkQ29udGludWUgeworICAgIFllcywKKyAgICBObywKKyAg
ICBGb3JTdXNwZW5zaW9uCit9OworCit1c2luZyBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgU2hvdWxkQ29udGludWUpPjsKK3VzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmLCBG
b3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSk+OwogCiBjbGFzcyBQb2xpY3lDaGVja2VyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2xpY3lDaGVja2VyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337554</attachid>
            <date>2018-04-09 15:29:23 -0700</date>
            <delta_ts>2018-04-09 15:54:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184424-20180409152922.patch</filename>
            <type>text/plain</type>
            <size>21603</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhhYWQzNGU3YjlmYTkx
ZjAwODBhMDg0NmJjODdhOWVmNDU2NDNjZi4uYjQ5OWNiNjEyYjVlOWUwNzhhNmQxYjJkZTRjOGNm
YTc2NjY3YjQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA0LTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBhbmQgV2ViQ29yZSBw
b2xpY3kgY29uY2VwdCBvZiAic2hvdWxkQ29udGludWUiIHRvIGFsbG93IGZvciBtb3JlIHRoYW4g
dHJ1ZS9mYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0NDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UsIHJlZmFjdG9yIG9ubHkpCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgZXhwYW5kcyB0aGUgInNob3VsZENvbnRpbnVlIiBib29s
IHRvIGJlIGFuIGVudW0gY2xhc3Mgd2l0aDoKKyAgICAgICAgLVllcworICAgICAgICAtTm8KKyAg
ICAgICAgLUZvclN1c3BlbnNpb24KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5l
d1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNo
ZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5oOgorCiAyMDE4LTA0LTA5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwMzkwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMzc2ZDU2YTg4NmUwZGNj
YWUxNDkyY2EyZWI1ZGRkYzU1YmRlNWYyMS4uODBkYmYxM2YwMjFjZjUzMzU2NGI2ZGIxNWU3NWU0
ZTAwMTg5NTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC02MzksMTAgKzYzOSwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogCiAgICAgQVNTRVJU
KCFtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5KTsKICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0
aW9uUG9saWN5ID0gdHJ1ZTsKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKSBtdXRh
YmxlIHsKKyAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJs
ZSB7CiAgICAgICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKLSAgICAg
ICAgaWYgKCFzaG91bGRDb250aW51ZSkKKyAgICAgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkg
eworICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uOgorICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICAvLyBGSVhNRTogU2V0dXAgdGhpcyBwYWdlIGZv
ciBzdXNwZW5zaW9uIChlLmcuIFBhZ2UgQ2FjaGUpIGhlcmUuCisgICAgICAgIGNhc2UgU2hvdWxk
Q29udGludWU6Ok5vOgogICAgICAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpZZXM6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggZDU1ZDBhMmJmOTRkMmJiMGI1NjFjYjI0ZTBiNjZiYmEwMzQ3MzBiNi4u
ZmUwNTU4ZGE0ZThjNzFjMTVjYTg4MTk4NmYwMjA1MzRjMTE0M2IxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHJlZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHko
KSkgewogICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZy
YW1lTG9hZFJlcXVlc3QpKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93
UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0
aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlv
bkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENv
bnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShX
VEZNb3ZlKGFjdGlvbiksIHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbdGhpcywgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxk
Q29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5
KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBh
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsKQEAgLTEzMzcsMTAgKzEzMzcsMTAgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVx
dWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVj
aygpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc2V0TG9hZFR5cGUobmV3TG9hZFR5cGUpOwog
ICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCb29sKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVkLmNvcHlSZWYoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgRm9ybVN0YXRlKiwgYm9vbCBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xp
Y3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0
KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9h
ZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZWQu
Y29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgaWYgKCFjb21wbGV0
aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlZC0+dmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21l
bnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUpOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xp
Y3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxl
ckNhbGxlZC0+dmFsdWUpIHsKQEAgLTEzOTksNyArMTM5OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKICAgICBpZiAocmVxdWVzdC5zaG91
bGRDaGVja05ld1dpbmRvd1BvbGljeSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0
aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVz
dC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKLSAgICAgICAgcG9saWN5Q2hlY2tl
cigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSwgbnVsbHB0ciwgcmVxdWVzdC5mcmFtZU5hbWUoKSwgW3RoaXNdIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGlj
eShXVEZNb3ZlKGFjdGlvbiksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG51bGxwdHIsIHJl
cXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsK
ICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZv
cm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAg
ICAgICAgfSk7CiAKQEAgLTE1MTMsMTAgKzE1MTMsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBl
IHQKICAgICAgICAgb2xkRG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAg
ICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IGFkb3B0UmVmKCpuZXcgU2hhcmVk
Qm9vbCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlz
LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2Fs
bGVkID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZWQuY29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0
KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Ug
Ki8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZWQuY29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAg
ICAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUpIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwg
c2hvdWxkQ29udGludWUpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxB
ZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWU6Olllcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBpZiAoIWNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVkLT52YWx1ZSkgewpAQCAtMTU0Miw3ICsxNTQyLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICAgICAgLy8gYSBuZXcgVVJMLCB0aGUgcGFyZW50IGZy
YW1lIHNob3VsZG4ndCBsZWFybiB0aGUgVVJMLgogICAgICAgICBpZiAoIW1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpCiAgICAgICAgICAgICAmJiAhb3duZXJF
bGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChsb2FkZXItPnJlcXVlc3QoKS51cmwoKS5z
dHJpbmcoKSkpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCBmYWxzZSwgYWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMKTsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZTo6Tm8sIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNTUwLDExICsxNTUwLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRo
RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAg
ICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuY2FuY2VsKHRydWUpOwogCiAgICAgaWYg
KCFtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KSB7Ci0gICAgICAgIGNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0
YXRlLCB0cnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgICAgICBjb250aW51
ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5yZXF1ZXN0KCksIGZvcm1TdGF0ZSwg
U2hvdWxkQ29udGludWU6OlllcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgYm9v
bCBzaG91bGRDb250aW51ZSkgeworICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgc2hvdWxkQ29udGludWUsIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfSk7CkBAIC0yODE0LDcgKzI4MTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNo
ZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgd29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0
YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hl
Y2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgd29ya2luZ1Jlc291
cmNlUmVxdWVzdCwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7
CiAgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBm
b3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgfSk7CkBAIC0zMTY5LDcgKzMxNjksNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRl
ciogZnJhbWVMbwogICAgIHJldHVybiBjaHJvbWUucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHRleHQsIG1fZnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
ck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3Rh
dGUqIGZvcm1TdGF0ZSwgYm9vbCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51
ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCkKIHsKICAgICAvLyBJZiB3ZSBsb2FkZWQgYW4gYWx0ZXJuYXRlIHBhZ2UgdG8gcmVwbGFjZSBh
biB1bnJlYWNoYWJsZVVSTCwgd2UnbGwgZ2V0IGluIGhlcmUgd2l0aCBhCiAgICAgLy8gbmlsIHBv
bGljeURhdGFTb3VyY2UgYmVjYXVzZSBsb2FkaW5nIHRoZSBhbHRlcm5hdGUgcGFnZSB3aWxsIGhh
dmUgcGFzc2VkCkBAIC0zMTc5LDEzICszMTc5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUK
ICAgICBib29sIGlzVGFyZ2V0SXRlbSA9IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSA/IGhp
c3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKS0+aXNUYXJnZXRJdGVtKCkgOiBmYWxzZTsKIAogICAg
IGJvb2wgdXJsSXNEaXNhbGxvd2VkID0gYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMID09IEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8gJiYgIXJlcXVlc3QudXJsKCkuaXNWYWxpZCgp
OwotCi0gICAgLy8gVGhyZWUgcmVhc29ucyB3ZSBjYW4ndCBjb250aW51ZToKLSAgICAvLyAgICAx
KSBOYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZSBzYWlkIHdlIGNhbid0IHNvIHJlcXVlc3QgaXMg
bmlsLiBBIHByaW1hcnkgY2FzZSBvZiB0aGlzIAotICAgIC8vICAgICAgIGlzIHRoZSB1c2VyIHJl
c3BvbmRpbmcgQ2FuY2VsIHRvIHRoZSBmb3JtIHJlcG9zdCBuYWcgc2hlZXQuCi0gICAgLy8gICAg
MikgVXNlciByZXNwb25kZWQgQ2FuY2VsIHRvIGFuIGFsZXJ0IHBvcHBlZCB1cCBieSB0aGUgYmVm
b3JlIHVubG9hZCBldmVudCBoYW5kbGVyLgotICAgIC8vICAgIDMpIFRoZSByZXF1ZXN0J3MgVVJM
IGlzIGludmFsaWQgYW5kIG5hdmlnYXRpb24gdG8gaW52YWxpZCBVUkxzIGlzIGRpc2FsbG93ZWQu
Ci0gICAgYm9vbCBjYW5Db250aW51ZSA9IHNob3VsZENvbnRpbnVlICYmIHNob3VsZENsb3NlKCkg
JiYgIXVybElzRGlzYWxsb3dlZDsKKyAgICBib29sIGNhbkNvbnRpbnVlID0gc2hvdWxkQ29udGlu
dWUgIT0gU2hvdWxkQ29udGludWU6Ok5vICYmIHNob3VsZENsb3NlKCkgJiYgIXVybElzRGlzYWxs
b3dlZDsKIAogICAgIGlmICghY2FuQ29udGludWUpIHsKICAgICAgICAgLy8gSWYgd2Ugd2VyZSB3
YWl0aW5nIGZvciBhIHF1aWNrIHJlZGlyZWN0LCBidXQgdGhlIHBvbGljeSBkZWxlZ2F0ZSBkZWNp
ZGVkIHRvIGlnbm9yZSBpdCwgdGhlbiB3ZSAKQEAgLTMyNjksOSArMzI2MywxMCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
ck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCi0gICAgRm9y
bVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIGJvb2wgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9s
aWN5IG9wZW5lclBvbGljeSkKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGlu
dWUgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG9wZW5lclBvbGljeSkKIHsK
LSAgICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgIEFTU0VSVChzaG91bGRDb250aW51ZSAhPSBT
aG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbik7CisgICAgaWYgKHNob3VsZENvbnRpbnVlICE9
IFNob3VsZENvbnRpbnVlOjpZZXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxGcmFtZT4g
ZnJhbWUobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDdlNWVk
NWRkN2U2MjYyNDIxMTA5ZjZlMDc0OTk5NTZjNDBiNDEwMTIuLjEyOWE4M2NlZWExMmYzZDk0Yzdh
MWNjNDI1ODc3YjBlZWIxZDM1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBA
IC04MSw2ICs4MSw3IEBAIGNsYXNzIFN1YmZyYW1lTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiAKIGVudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeUNoZWNrOworZW51bSBjbGFzcyBTaG91
bGRDb250aW51ZTsKIAogc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogCkBAIC0zMzgsOCArMzM5LDgg
QEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNoQmVmb3JlVW5sb2FkRXZlbnQoQ2hyb21lJiwg
RnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyQmVpbmdOYXZpZ2F0ZWQpOwogICAgIHZvaWQgZGlzcGF0
Y2hVbmxvYWRFdmVudHMoVW5sb2FkRXZlbnRQb2xpY3kpOwogCi0gICAgdm9pZCBjb250aW51ZUxv
YWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRl
KiwgYm9vbCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKLSAg
ICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMLCBOZXdGcmFtZU9wZW5lclBvbGljeSk7CisgICAgdm9pZCBjb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgU2hvdWxk
Q29udGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgdm9pZCBjb250aW51
ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3Rh
dGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIFNo
b3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVy
UG9saWN5KTsKICAgICB2b2lkIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Q
b2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAKICAg
ICBib29sIHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNz
aW9uLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IFVSTCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDQyZDUyYzFlOTE5
ZjhmMmU3ZDZmOTFiN2U2YWViOWFmNDcxMzU2NmIuLmM2ZTE5NWI5OTdmOTUxMDA2NTIxYmI1MGRm
Y2M5ZTNhZDc1NjAxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAvLyBEb24ndCBh
c2sgbW9yZSB0aGFuIG9uY2UgZm9yIHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRp
bmcgYW4gZW1wdHkgVVJMLgogICAgIC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFy
dCBvZiB0aGUgY2xpZW50LgogICAgIGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVl
c3QsIGxvYWRlci0+bGFzdENoZWNrZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAm
JiByZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSkpIHsKLSAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VS
ZXF1ZXN0KHJlcXVlc3QpLCBudWxscHRyLCB0cnVlKTsKKyAgICAgICAgZnVuY3Rpb24oUmVzb3Vy
Y2VSZXF1ZXN0KHJlcXVlc3QpLCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAg
ICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBk
aWRSZWMKICNlbmRpZgogICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5
cGUpKQogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKLSAg
ICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUp
OworICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBzaG91bGRDb250
aW51ZSA/IFNob3VsZENvbnRpbnVlOjpZZXMgOiBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsMTQgKzExNywxNCBAQCB2b2lkIFBvbGljeUNoZWNr
ZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29s
IGRpZFJlYwogICAgICAgICAgICAgLy8gcmV2ZWFsIHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2Vk
LiBUaGlzIHdheSwgaXQgbG9va3MgbGlrZSBhbnkgb3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9h
ZC4KICAgICAgICAgICAgIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAg
ICAgfQotICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBmYWxzZSk7
CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIG51bGxwdHIsIFNob3VsZENvbnRp
bnVlOjpObyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBsb2FkZXItPnNldExhc3RD
aGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwogCiAgICAgaWYgKHJlcXVl
c3QudXJsKCkgPT0gYmxhbmtVUkwoKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUo
cmVxdWVzdCksIGZvcm1TdGF0ZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZN
b3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlOjpZZXMpOwogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgLy8gQWx3YXlzIGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJM
cyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wgc2NoZW1lLgpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAgICBpZiAodW5ibG9ja2VkKQogICAgICAgICAg
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIHJl
dHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsKICAgICB9CiAgICAgbV9jb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSB7IH07CiAjZW5kaWYKQEAgLTE2MCwxNiArMTYwLDE1
IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAgICBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6
Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Tm8p
OwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6U3VzcGVuZDoKLSAgICAgICAgICAgIExPRyhM
b2FkaW5nLCAiUG9saWN5QWN0aW9uOjpTdXNwZW5kIGVuY291bnRlcmVkIC0gVHJlYXRpbmcgYXMg
UG9saWN5QWN0aW9uOjpJZ25vcmUgZm9yIG5vdyIpOwotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKHsgfSwgbnVsbHB0ciwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsg
fSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pOwogICAgICAgICBjYXNl
IFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNs
aWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAgICBoYW5k
bGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RT
aG93VVJMRXJyb3IocmVxdWVzdCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7
IH0sIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9
LCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZvcm1TdGF0ZS5nZXQoKSwgdHJ1
ZSk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0
YXRlLmdldCgpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAgICAgfQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9KTsKQEAgLTE3OCwxMCArMTc3LDEwIEBAIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGJvb2wgZGlkUmVjCiB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5
KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGlm
IChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChT
YW5kYm94UG9wdXBzKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9
LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9
LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAKICAgICBpZiAoIURPTVdpbmRvdzo6YWxsb3dQ
b3BVcChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9
LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9
LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG5hdmlnYXRpb25BY3Rp
b24sIHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJh
bWUpLCByZXF1ZXN0LCBmb3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAocG9saWN5QWN0
aW9uKSB7CkBAIC0xODksMTMgKzE4OCwxMyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3
V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjbwogICAg
ICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCk7
CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246Okln
bm9yZToKLSAgICAgICAgICAgIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNl
KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIFNob3VsZENv
bnRpbnVlOjpObyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpTdXNwZW5kOgogICAgICAgICAgICAgLy8gSXQgaXMgaW52YWxpZCB0byBnZXQgYSAiU3Vz
cGVuZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9sZCBkb2N1bWVudCBpcyBub3Qg
Z29pbmcgYXdheS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6Ci0gICAgICAgICAgICBmdW5jdGlvbihyZXF1
ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgdHJ1ZSk7
CisgICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbiwgU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAppbmRleCBkMGYwYmMyNGM2MTY5MjhiNjRhYTk2NWU3
NTNhMGFlYWJmZWE5Y2NmLi4yZmRiMjUwMjE5NTZhNTUwMTljNjcyNzNkZWYyZjgxMjI5NThkNDk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKQEAgLTUwLDggKzUwLDE0IEBA
IGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIAotdXNpbmcgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3Jt
U3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGJvb2wgc2hvdWxkQ29udGludWUpPjsKLXVzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmLCBG
b3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKT47CitlbnVtIGNsYXNzIFNob3VsZENvbnRp
bnVlIHsKKyAgICBZZXMsCisgICAgTm8sCisgICAgRm9yU3VzcGVuc2lvbgorfTsKKwordXNpbmcg
TmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250aW51ZSk+OwordXNpbmcgTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmLCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSk+OwogCiBjbGFzcyBQ
b2xpY3lDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2xpY3lDaGVja2VyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337557</attachid>
            <date>2018-04-09 15:54:49 -0700</date>
            <delta_ts>2018-04-09 17:31:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184424-20180409155448.patch</filename>
            <type>text/plain</type>
            <size>21849</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhhYWQzNGU3YjlmYTkx
ZjAwODBhMDg0NmJjODdhOWVmNDU2NDNjZi4uYjQ5OWNiNjEyYjVlOWUwNzhhNmQxYjJkZTRjOGNm
YTc2NjY3YjQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTA0LTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBhbmQgV2ViQ29yZSBw
b2xpY3kgY29uY2VwdCBvZiAic2hvdWxkQ29udGludWUiIHRvIGFsbG93IGZvciBtb3JlIHRoYW4g
dHJ1ZS9mYWxzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg0NDI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlvciBjaGFuZ2UsIHJlZmFjdG9yIG9ubHkpCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IHRoaXMgZXhwYW5kcyB0aGUgInNob3VsZENvbnRpbnVlIiBib29s
IHRvIGJlIGFuIGVudW0gY2xhc3Mgd2l0aDoKKyAgICAgICAgLVllcworICAgICAgICAtTm8KKyAg
ICAgICAgLUZvclN1c3BlbnNpb24KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5l
d1dpbmRvd1BvbGljeSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNo
ZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5oOgorCiAyMDE4LTA0LTA5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjMwMzkwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMzc2ZDU2YTg4NmUwZGNj
YWUxNDkyY2EyZWI1ZGRkYzU1YmRlNWYyMS4uODBkYmYxM2YwMjFjZjUzMzU2NGI2ZGIxNWU3NWU0
ZTAwMTg5NTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC02MzksMTAgKzYzOSwxOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogCiAgICAgQVNTRVJU
KCFtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5KTsKICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0
aW9uUG9saWN5ID0gdHJ1ZTsKLSAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKSBtdXRh
YmxlIHsKKyAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFJlc291cmNlUmVxdWVzdChuZXdSZXF1ZXN0KSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJs
ZSB7CiAgICAgICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKLSAgICAg
ICAgaWYgKCFzaG91bGRDb250aW51ZSkKKyAgICAgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkg
eworICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uOgorICAgICAgICAg
ICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICAvLyBGSVhNRTogU2V0dXAgdGhpcyBwYWdlIGZv
ciBzdXNwZW5zaW9uIChlLmcuIFBhZ2UgQ2FjaGUpIGhlcmUuCisgICAgICAgIGNhc2UgU2hvdWxk
Q29udGludWU6Ok5vOgogICAgICAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpZZXM6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggZDU1ZDBhMmJmOTRkMmJiMGI1NjFjYjI0ZTBiNjZiYmEwMzQ3MzBiNi4u
ZmUwNTU4ZGE0ZThjNzFjMTVjYTg4MTk4NmYwMjA1MzRjMTE0M2IxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHJlZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSAmJiAhZnJhbWVOYW1lLmlzRW1wdHko
KSkgewogICAgICAgICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZy
YW1lTG9hZFJlcXVlc3QpKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93
UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFt0
aGlzLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlv
bkhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldIChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3VsZENv
bnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGljeShX
VEZNb3ZlKGFjdGlvbiksIHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbdGhpcywgYWxs
b3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3ksIGNvbXBsZXRpb25IYW5kbGVy
ID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxk
Q29udGludWUpIHsKICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5
KHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBh
bGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSk7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICB9KTsKQEAgLTEzMzcsMTAgKzEzMzcsMTAgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVx
dWVzdCwgY29uc3QgU3RyaW5nJiByZWYKICAgICAgICAgcG9saWN5Q2hlY2tlcigpLnN0b3BDaGVj
aygpOwogICAgICAgICBwb2xpY3lDaGVja2VyKCkuc2V0TG9hZFR5cGUobmV3TG9hZFR5cGUpOwog
ICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCb29sKTsKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmF2aWdhdGlvblBvbGljeShS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGZhbHNlIC8qIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlICovLCBvbGREb2N1bWVudExvYWRlci5nZXQoKSwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IGNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVkLmNvcHlSZWYoKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgRm9ybVN0YXRlKiwgYm9vbCBzaG91bGRDb250aW51ZSkgeworICAgICAgICBwb2xp
Y3lDaGVja2VyKCkuY2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0
KSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9h
ZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9m
cmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZWQu
Y29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBT
aG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAgICAgICAgaWYgKCFjb21wbGV0
aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlZC0+dmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21l
bnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUpOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xp
Y3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6Olllcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxl
ckNhbGxlZC0+dmFsdWUpIHsKQEAgLTEzOTksNyArMTM5OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QpCiAKICAgICBpZiAocmVxdWVzdC5zaG91
bGRDaGVja05ld1dpbmRvd1BvbGljeSgpKSB7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0
aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24sIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgcmVxdWVz
dC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKLSAgICAgICAgcG9saWN5Q2hlY2tl
cigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSwgbnVsbHB0ciwgcmVxdWVzdC5mcmFtZU5hbWUoKSwgW3RoaXNdIChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBib29sIHNob3Vs
ZENvbnRpbnVlKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05ld1dpbmRvd1BvbGlj
eShXVEZNb3ZlKGFjdGlvbiksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG51bGxwdHIsIHJl
cXVlc3QuZnJhbWVOYW1lKCksIFt0aGlzXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsK
ICAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHJlcXVlc3QsIGZv
cm1TdGF0ZSwgZnJhbWVOYW1lLCBhY3Rpb24sIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkw6OlllcywgTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAg
ICAgICAgfSk7CiAKQEAgLTE1MTMsMTAgKzE1MTMsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBl
IHQKICAgICAgICAgb2xkRG9jdW1lbnRMb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAg
ICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNhbGxlZCA9IGFkb3B0UmVmKCpuZXcgU2hhcmVk
Qm9vbCk7Ci0gICAgICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UgKi8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlz
LCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2Fs
bGVkID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZWQuY29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKSB7CisgICAg
ICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0
KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Ug
Ki8sIG9sZERvY3VtZW50TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsIFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVkID0gY29tcGxl
dGlvbkhhbmRsZXJDYWxsZWQuY29weVJlZigpXSAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBGb3JtU3RhdGUqLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkgewogICAgICAg
ICAgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUpIHsKICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlckNhbGxlZC0+dmFsdWUgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwg
c2hvdWxkQ29udGludWUpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxB
ZnRlck5hdmlnYXRpb25Qb2xpY3kocmVxdWVzdCwgc2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29u
dGludWU6Olllcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBpZiAoIWNv
bXBsZXRpb25IYW5kbGVyQ2FsbGVkLT52YWx1ZSkgewpAQCAtMTU0Miw3ICsxNTQyLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICAgICAgLy8gYSBuZXcgVVJMLCB0aGUgcGFyZW50IGZy
YW1lIHNob3VsZG4ndCBsZWFybiB0aGUgVVJMLgogICAgICAgICBpZiAoIW1fc3RhdGVNYWNoaW5l
LmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpCiAgICAgICAgICAgICAmJiAhb3duZXJF
bGVtZW50LT5kaXNwYXRjaEJlZm9yZUxvYWRFdmVudChsb2FkZXItPnJlcXVlc3QoKS51cmwoKS5z
dHJpbmcoKSkpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCBmYWxzZSwgYWxsb3dOYXZpZ2F0aW9uVG9J
bnZhbGlkVVJMKTsKKyAgICAgICAgICAgIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZTo6Tm8sIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNTUwLDExICsxNTUwLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRo
RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAg
ICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuY2FuY2VsKHRydWUpOwogCiAgICAgaWYg
KCFtX2N1cnJlbnRMb2FkU2hvdWxkQ2hlY2tOYXZpZ2F0aW9uUG9saWN5KSB7Ci0gICAgICAgIGNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShsb2FkZXItPnJlcXVlc3QoKSwgZm9ybVN0
YXRlLCB0cnVlLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwpOworICAgICAgICBjb250aW51
ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5yZXF1ZXN0KCksIGZvcm1TdGF0ZSwg
U2hvdWxkQ29udGludWU6OlllcywgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgYm9v
bCBzaG91bGRDb250aW51ZSkgeworICAgIHBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Q
b2xpY3koUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+cmVxdWVzdCgpKSwgZmFsc2UgLyogZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UgKi8sIGxvYWRlciwgZm9ybVN0YXRlLCBbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IGNvbXBsZXRpb25IYW5kbGVyID0gY29tcGxldGlvbkhhbmRsZXJDYWxsZXIucmVsZWFzZSgpXSAo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIHsKICAgICAgICAgY29udGludWVMb2FkQWZ0ZXJO
YXZpZ2F0aW9uUG9saWN5KHJlcXVlc3QsIGZvcm1TdGF0ZSwgc2hvdWxkQ29udGludWUsIGFsbG93
TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfSk7CkBAIC0yODE0LDcgKzI4MTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJl
cXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmZQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNo
ZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgd29ya2luZ1Jlc291cmNlUmVxdWVz
dCwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0
YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIGJvb2wgc2hvdWxkQ29udGludWUpIHsKKyAgICAgICAgcG9saWN5Q2hl
Y2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwgd29ya2luZ1Jlc291
cmNlUmVxdWVzdCwgV1RGTW92ZShmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIFt0aGlzLCBhbGxvd05h
dmlnYXRpb25Ub0ludmFsaWRVUkwsIG9wZW5lclBvbGljeSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlKSB7
CiAgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1ZXN0LCBm
b3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwgYWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMLCBvcGVuZXJQb2xpY3kpOwogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgfSk7CkBAIC0zMTY5LDcgKzMxNjksNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRl
ciogZnJhbWVMbwogICAgIHJldHVybiBjaHJvbWUucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KHRleHQsIG1fZnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
ck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3Rh
dGUqIGZvcm1TdGF0ZSwgYm9vbCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNv
bnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51
ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVS
TCkKIHsKICAgICAvLyBJZiB3ZSBsb2FkZWQgYW4gYWx0ZXJuYXRlIHBhZ2UgdG8gcmVwbGFjZSBh
biB1bnJlYWNoYWJsZVVSTCwgd2UnbGwgZ2V0IGluIGhlcmUgd2l0aCBhCiAgICAgLy8gbmlsIHBv
bGljeURhdGFTb3VyY2UgYmVjYXVzZSBsb2FkaW5nIHRoZSBhbHRlcm5hdGUgcGFnZSB3aWxsIGhh
dmUgcGFzc2VkCkBAIC0zMTc5LDEzICszMTc5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUK
ICAgICBib29sIGlzVGFyZ2V0SXRlbSA9IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSA/IGhp
c3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKS0+aXNUYXJnZXRJdGVtKCkgOiBmYWxzZTsKIAogICAg
IGJvb2wgdXJsSXNEaXNhbGxvd2VkID0gYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMID09IEFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6Tm8gJiYgIXJlcXVlc3QudXJsKCkuaXNWYWxpZCgp
OwotCi0gICAgLy8gVGhyZWUgcmVhc29ucyB3ZSBjYW4ndCBjb250aW51ZToKLSAgICAvLyAgICAx
KSBOYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZSBzYWlkIHdlIGNhbid0IHNvIHJlcXVlc3QgaXMg
bmlsLiBBIHByaW1hcnkgY2FzZSBvZiB0aGlzIAotICAgIC8vICAgICAgIGlzIHRoZSB1c2VyIHJl
c3BvbmRpbmcgQ2FuY2VsIHRvIHRoZSBmb3JtIHJlcG9zdCBuYWcgc2hlZXQuCi0gICAgLy8gICAg
MikgVXNlciByZXNwb25kZWQgQ2FuY2VsIHRvIGFuIGFsZXJ0IHBvcHBlZCB1cCBieSB0aGUgYmVm
b3JlIHVubG9hZCBldmVudCBoYW5kbGVyLgotICAgIC8vICAgIDMpIFRoZSByZXF1ZXN0J3MgVVJM
IGlzIGludmFsaWQgYW5kIG5hdmlnYXRpb24gdG8gaW52YWxpZCBVUkxzIGlzIGRpc2FsbG93ZWQu
Ci0gICAgYm9vbCBjYW5Db250aW51ZSA9IHNob3VsZENvbnRpbnVlICYmIHNob3VsZENsb3NlKCkg
JiYgIXVybElzRGlzYWxsb3dlZDsKKyAgICBib29sIGNhbkNvbnRpbnVlID0gc2hvdWxkQ29udGlu
dWUgIT0gU2hvdWxkQ29udGludWU6Ok5vICYmIHNob3VsZENsb3NlKCkgJiYgIXVybElzRGlzYWxs
b3dlZDsKIAogICAgIGlmICghY2FuQ29udGludWUpIHsKICAgICAgICAgLy8gSWYgd2Ugd2VyZSB3
YWl0aW5nIGZvciBhIHF1aWNrIHJlZGlyZWN0LCBidXQgdGhlIHBvbGljeSBkZWxlZ2F0ZSBkZWNp
ZGVkIHRvIGlnbm9yZSBpdCwgdGhlbiB3ZSAKQEAgLTMyNjksOSArMzI2MywxMCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZQogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRl
ck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCi0gICAgRm9y
bVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIGJvb2wgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9s
aWN5IG9wZW5lclBvbGljeSkKKyAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGlu
dWUgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmln
YXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG9wZW5lclBvbGljeSkKIHsK
LSAgICBpZiAoIXNob3VsZENvbnRpbnVlKQorICAgIEFTU0VSVChzaG91bGRDb250aW51ZSAhPSBT
aG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbik7CisgICAgaWYgKHNob3VsZENvbnRpbnVlICE9
IFNob3VsZENvbnRpbnVlOjpZZXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxGcmFtZT4g
ZnJhbWUobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDdlNWVk
NWRkN2U2MjYyNDIxMTA5ZjZlMDc0OTk5NTZjNDBiNDEwMTIuLjEyOWE4M2NlZWExMmYzZDk0Yzdh
MWNjNDI1ODc3YjBlZWIxZDM1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBA
IC04MSw2ICs4MSw3IEBAIGNsYXNzIFN1YmZyYW1lTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiAKIGVudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeUNoZWNrOworZW51bSBjbGFzcyBTaG91
bGRDb250aW51ZTsKIAogc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogCkBAIC0zMzgsOCArMzM5LDgg
QEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNoQmVmb3JlVW5sb2FkRXZlbnQoQ2hyb21lJiwg
RnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyQmVpbmdOYXZpZ2F0ZWQpOwogICAgIHZvaWQgZGlzcGF0
Y2hVbmxvYWRFdmVudHMoVW5sb2FkRXZlbnRQb2xpY3kpOwogCi0gICAgdm9pZCBjb250aW51ZUxv
YWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRl
KiwgYm9vbCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMKTsKLSAg
ICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMLCBOZXdGcmFtZU9wZW5lclBvbGljeSk7CisgICAgdm9pZCBjb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgU2hvdWxk
Q29udGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CisgICAgdm9pZCBjb250aW51
ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3Rh
dGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIFNo
b3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVy
UG9saWN5KTsKICAgICB2b2lkIGNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Q
b2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAKICAg
ICBib29sIHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNz
aW9uLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IFVSTCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDQyZDUyYzFlOTE5
ZjhmMmU3ZDZmOTFiN2U2YWViOWFmNDcxMzU2NmIuLjM3MDI1ODBjM2QyYjk3ODkxYmRhMGEwMjY0
MTFjMzcxMGEwZTc4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBkaWRSZWMKICAgICAvLyBEb24ndCBh
c2sgbW9yZSB0aGFuIG9uY2UgZm9yIHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRp
bmcgYW4gZW1wdHkgVVJMLgogICAgIC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFy
dCBvZiB0aGUgY2xpZW50LgogICAgIGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVl
c3QsIGxvYWRlci0+bGFzdENoZWNrZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAm
JiByZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSkpIHsKLSAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VS
ZXF1ZXN0KHJlcXVlc3QpLCBudWxscHRyLCB0cnVlKTsKKyAgICAgICAgZnVuY3Rpb24oUmVzb3Vy
Y2VSZXF1ZXN0KHJlcXVlc3QpLCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAg
ICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBk
aWRSZWMKICNlbmRpZgogICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5
cGUpKQogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKLSAg
ICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUp
OworICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBzaG91bGRDb250
aW51ZSA/IFNob3VsZENvbnRpbnVlOjpZZXMgOiBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsMTkgKzExNywxOSBAQCB2b2lkIFBvbGljeUNoZWNr
ZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBib29s
IGRpZFJlYwogICAgICAgICAgICAgLy8gcmV2ZWFsIHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2Vk
LiBUaGlzIHdheSwgaXQgbG9va3MgbGlrZSBhbnkgb3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9h
ZC4KICAgICAgICAgICAgIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAg
ICAgfQotICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBudWxscHRyLCBmYWxzZSk7
CisgICAgICAgIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIG51bGxwdHIsIFNob3VsZENvbnRp
bnVlOjpObyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBsb2FkZXItPnNldExhc3RD
aGVja2VkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwogCiAgICAgaWYgKHJlcXVl
c3QudXJsKCkgPT0gYmxhbmtVUkwoKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUo
cmVxdWVzdCksIGZvcm1TdGF0ZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZN
b3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIFNob3VsZENvbnRpbnVlOjpZZXMpOwogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgLy8gQWx3YXlzIGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJM
cyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wgc2NoZW1lLgogICAgIGlmICghcmVxdWVzdC5pc051bGwo
KSAmJiBpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVxdWVzdC51cmwoKSkpCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBmb3JtU3RhdGUsIHRydWUpOworICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLCBTaG91bGRDb250aW51
ZTo6WWVzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtMTM5
LDcgKzEzOSw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAgICBpZiAodW5i
bG9ja2VkKQogICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6Ok5vKTsK
ICAgICB9CiAgICAgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSB7IH07CiAjZW5kaWYK
QEAgLTE2MCwxNiArMTYwLDE1IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiAgICAgICAgICAg
ICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCwgc3VnZ2Vz
dGVkRmlsZW5hbWUpOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgUG9s
aWN5QWN0aW9uOjpJZ25vcmU6Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxs
cHRyLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBT
aG91bGRDb250aW51ZTo6Tm8pOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6U3VzcGVuZDoK
LSAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiUG9saWN5QWN0aW9uOjpTdXNwZW5kIGVuY291bnRl
cmVkIC0gVHJlYXRpbmcgYXMgUG9saWN5QWN0aW9uOjpJZ25vcmUgZm9yIG5vdyIpOwotICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgZmFsc2UpOworICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNp
b24pOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFt
X2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAg
ICAgICAgICAgICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOwotICAgICAgICAgICAgICAg
IHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBTaG91bGRDb250aW51ZTo6Tm8pOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIGZv
cm1TdGF0ZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92
ZShyZXF1ZXN0KSwgZm9ybVN0YXRlLmdldCgpLCBTaG91bGRDb250aW51ZTo6WWVzKTsKICAgICAg
ICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9KTsKQEAgLTE3OCwxMCAr
MTc3LDEwIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGJvb2wgZGlkUmVjCiB2b2lkIFBvbGljeUNoZWNrZXI6OmNo
ZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1
bmN0aW9uKQogewogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1bWVu
dCgpLT5pc1NhbmRib3hlZChTYW5kYm94UG9wdXBzKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAKICAgICBpZiAo
IURPTVdpbmRvdzo6YWxsb3dQb3BVcChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAKICAgICBtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKG5hdmlnYXRpb25BY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBbZnJh
bWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LCBmb3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZv
cm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVuY3Rpb24gPSBXVEZNb3Zl
KGZ1bmN0aW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAg
IHN3aXRjaCAocG9saWN5QWN0aW9uKSB7CkBAIC0xODksMTMgKzE4OCwxMyBAQCB2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0
aW9uQWN0aW9uLCBjbwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0
RG93bmxvYWQocmVxdWVzdCk7CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2Fz
ZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKLSAgICAgICAgICAgIGZ1bmN0aW9uKHsgfSwgbnVsbHB0
ciwgeyB9LCB7IH0sIGZhbHNlKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwg
eyB9LCB7IH0sIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdXNwZW5kOgogICAgICAgICAgICAgLy8gSXQgaXMgaW52
YWxpZCB0byBnZXQgYSAiU3VzcGVuZCIgcG9saWN5IGZvciBuZXcgd2luZG93cywgYXMgdGhlIG9s
ZCBkb2N1bWVudCBpcyBub3QgZ29pbmcgYXdheS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6Ci0gICAgICAg
ICAgICBmdW5jdGlvbihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdh
dGlvbkFjdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBmb3JtU3Rh
dGUuZ2V0KCksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgU2hvdWxkQ29udGludWU6Olll
cyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAppbmRleCBkMGYwYmMy
NGM2MTY5MjhiNjRhYTk2NWU3NTNhMGFlYWJmZWE5Y2NmLi4yZmRiMjUwMjE5NTZhNTUwMTljNjcy
NzNkZWYyZjgxMjI5NThkNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgK
QEAgLTUwLDggKzUwLDE0IEBAIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAotdXNpbmcgTmV3V2luZG93UG9saWN5
RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUpPjsKLXVzaW5nIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmLCBGb3JtU3RhdGUqLCBib29sIHNob3VsZENvbnRpbnVlKT47CitlbnVt
IGNsYXNzIFNob3VsZENvbnRpbnVlIHsKKyAgICBZZXMsCisgICAgTm8sCisgICAgRm9yU3VzcGVu
c2lvbgorfTsKKwordXNpbmcgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBTaG91bGRDb250
aW51ZSk+OwordXNpbmcgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmLCBGb3JtU3RhdGUqLCBTaG91bGRDb250
aW51ZSk+OwogCiBjbGFzcyBQb2xpY3lDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQb2xpY3lDaGVja2VyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>