<?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>93407</bug_id>
          
          <creation_ts>2012-08-07 16:10:47 -0700</creation_ts>
          <short_desc>Implement JSDOMWindow*::allowsAccessFrom* in terms of BindingSecurity</short_desc>
          <delta_ts>2012-09-02 00:56:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93382</dependson>
    
    <dependson>93578</dependson>
          <blocked>75793</blocked>
    
    <blocked>95652</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>689560</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 16:10:47 -0700</bug_when>
    <thetext>Implement JSDOMWindow*::allowsAccessFrom* in terms of BindingSecurity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689561</commentid>
    <comment_count>1</comment_count>
      <attachid>157034</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 16:11:35 -0700</bug_when>
    <thetext>Created attachment 157034
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689566</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 16:14:11 -0700</bug_when>
    <thetext>This patch depends on the patch in Bug 93382.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689573</commentid>
    <comment_count>3</comment_count>
      <attachid>157034</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 16:18:38 -0700</bug_when>
    <thetext>Comment on attachment 157034
work in progress

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

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:204
&gt; +    return checkThatThing(activeDOMWindow(exec), impl());

Note: This implementation isn&apos;t quite right.  We&apos;re supposed to indirect though the WindowShell here.  See line 68 that was removed from JSDOMWindowCustom.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689644</commentid>
    <comment_count>4</comment_count>
      <attachid>157050</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 17:15:36 -0700</bug_when>
    <thetext>Created attachment 157050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691109</commentid>
    <comment_count>5</comment_count>
      <attachid>157370</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-08 19:31:26 -0700</bug_when>
    <thetext>Created attachment 157370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691114</commentid>
    <comment_count>6</comment_count>
      <attachid>157370</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-08 19:34:13 -0700</bug_when>
    <thetext>Comment on attachment 157370
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691158</commentid>
    <comment_count>7</comment_count>
      <attachid>157370</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 20:52:57 -0700</bug_when>
    <thetext>Comment on attachment 157370
Patch

Clearing flags on attachment: 157370

Committed r125146: &lt;http://trac.webkit.org/changeset/125146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691159</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 20:53:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691192</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 22:08:51 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 93578</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700243</commentid>
    <comment_count>10</comment_count>
      <attachid>159573</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 17:33:19 -0700</bug_when>
    <thetext>Created attachment 159573
Rebase to trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700247</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 17:35:01 -0700</bug_when>
    <thetext>Now that we&apos;ve gotten more of Bug 75793 landed, we can write this match more cleanly.  The changes in test results make these tests behave more similarly to the way they behave in V8.  They&apos;re still not quite identical, but at least we only printing one error message instead of two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700264</commentid>
    <comment_count>12</comment_count>
      <attachid>159577</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 17:50:05 -0700</bug_when>
    <thetext>Created attachment 159577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700286</commentid>
    <comment_count>13</comment_count>
      <attachid>159577</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-20 18:05:27 -0700</bug_when>
    <thetext>Comment on attachment 159577
Patch

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700376</commentid>
    <comment_count>14</comment_count>
      <attachid>159577</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-20 19:54:27 -0700</bug_when>
    <thetext>Comment on attachment 159577
Patch

Attachment 159577 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13544574</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700494</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 23:05:59 -0700</bug_when>
    <thetext>Looks like a bug in EFL&apos;s dependency tracking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700849</commentid>
    <comment_count>16</comment_count>
      <attachid>159577</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-21 09:53:53 -0700</bug_when>
    <thetext>Comment on attachment 159577
Patch

Clearing flags on attachment: 159577

Committed r126165: &lt;http://trac.webkit.org/changeset/126165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700850</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-21 09:53:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710316</commentid>
    <comment_count>18</comment_count>
      <attachid>159577</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-02 00:47:01 -0700</bug_when>
    <thetext>Comment on attachment 159577
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:236
&gt; +    bool result = BindingSecurity::shouldAllowAccessToDOMWindow(exec, target, DoNotReportSecurityError);
&gt; +    // FIXME: The following line of code should move somewhere that it can be shared with immediatelyReportUnsafeAccessTo.
&gt; +    message = target-&gt;crossDomainAccessErrorMessage(activeDOMWindow(exec));

Is the unconditional creation of the message intentional?

This thing turns out to be a substantial performance regression, which can be entirely undone if I only create the message when result is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710319</commentid>
    <comment_count>19</comment_count>
      <attachid>159577</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-02 00:55:59 -0700</bug_when>
    <thetext>Comment on attachment 159577
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMWindowCustom.h:-65
&gt; -    message = crossDomainAccessErrorMessage(exec-&gt;lexicalGlobalObject());
&gt; -    return false;

You&apos;re right.  We used to only create the error message when returning false.  Sorry for missing that!  Yes.  Would you like to work the patch, or should I?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710320</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-02 00:56:22 -0700</bug_when>
    <thetext>work -&gt; write</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157034</attachid>
            <date>2012-08-07 16:11:35 -0700</date>
            <delta_ts>2012-08-07 17:15:34 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-93407-20120807161108.patch</filename>
            <type>text/plain</type>
            <size>10771</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNiYmVmODM1Nzc4NTM4
Y2Q4NjAwZjM4ZmQ1MzcyZjZmODY2NWM1Yi4uN2NlYjBlN2Y0ZjkwMTllZGU4OWEyNGZhZTNmODNk
OWQwNGFiYTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEyLTA4LTA3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgSW1wbGVtZW50IEpTRE9NV2lu
ZG93Kjo6YWxsb3dzQWNjZXNzRnJvbSogaW4gdGVybXMgb2YgQmluZGluZ1NlY3VyaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jl
c3MuICBUaGlzIHBhdGNoIGFwcGVhcnMgdG8gd29yaywgYnV0IG9idmlvdXNseQorICAgICAgICB8
Y2hlY2tUaGF0VGhpbmd8IG5lZWRzIHRvIGJlIHJlbW92ZWQuICA6KQorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrVGhh
dFRoaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaDoKKyAgICAgICAgKEpTRE9NV2luZG93QmFzZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNhbkFjY2Vz
c0luc3BlY3RlZFdpbmRvdyk6CisKKzIwMTItMDgtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSZXdpcmUgdGhlIHNhbWUtb3JpZ2luIGNoZWNrcyBmb3IgdGhl
IEphdmFTY3JpcHRDb3JlIGJpbmRpbmdzIHRocm91Z2ggQmluZGluZ1NlY3VyaXR5CiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzM4MgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCBkNGEwNmU1
NjM5OWE2ZDllYjMwMGQ0N2Q1ZGIzODE1MjY5Mjk5ZTU4Li4yYmI5N2NhNDlkZDdiY2JjNDU2NjAx
Mzg2MzViMjc1MjM3MzIyNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKQEAgLTgzLDQxICs4MywxMSBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAg
IHJldHVybiBtX2ltcGwtPmRvY3VtZW50KCk7CiB9CiAKLVN0cmluZyBKU0RPTVdpbmRvd0Jhc2U6
OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhl
cikgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGVsbC0+d2luZG93KCktPmltcGwoKS0+Y3Jvc3NE
b21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYXNKU0RPTVdpbmRvdyhvdGhlciktPmltcGwoKSk7Ci19
Ci0KIHZvaWQgSlNET01XaW5kb3dCYXNlOjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIGNvbnN0CiB7CiAgICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShpbXBsKCkt
PmZyYW1lKCksIG1lc3NhZ2UpOwogfQogCi0vLyBUaGlzIG1ldGhvZCBjaGVja3Mgd2hldGhlciBh
Y2Nlc3NzIHRvICp0aGlzKiBnbG9iYWwgb2JqZWN0IGlzIHBlcm1pdHRlZCBmcm9tCi0vLyB0aGUg
Z2l2ZW4gY29udGV4dDsgdGhpcyBkaWZmZXJzIGZyb20gYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUs
IHNpbmNlIHRoYXQKLS8vIG1ldGhvZCBjaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gY29udGV4dCBp
cyBwZXJtaXR0ZWQgdG8gYWNjZXNzIHRoZSBjdXJyZW50Ci0vLyB3aW5kb3cgdGhlIHNoZWxsIGlz
IHJlZmVyZW5jaW5nICh3aGljaCBtYXkgY29tZSBmcm9tIGEgZGlmZmVyZW50IHNlY3VyaXR5Ci0v
LyBvcmlnaW4gdG8gdGhpcyBnbG9iYWwgb2JqZWN0KS4KLWJvb2wgSlNET01XaW5kb3dCYXNlOjph
bGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxPYmplY3QqIG90aGVyT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgY29uc3QgSlNET01XaW5kb3cqIG9yaWdpbldpbmRv
dyA9IGFzSlNET01XaW5kb3cob3RoZXJPYmplY3QpOwotICAgIGNvbnN0IEpTRE9NV2luZG93KiB0
YXJnZXRXaW5kb3cgPSBhc0pTRE9NV2luZG93KHRoaXNPYmplY3QpOwotCi0gICAgaWYgKG9yaWdp
bldpbmRvdyA9PSB0YXJnZXRXaW5kb3cpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29u
c3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpblNlY3VyaXR5T3JpZ2luID0gb3JpZ2luV2luZG93LT5p
bXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRhcmdl
dFNlY3VyaXR5T3JpZ2luID0gdGFyZ2V0V2luZG93LT5pbXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7
Ci0KLSAgICBpZiAob3JpZ2luU2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzcyh0YXJnZXRTZWN1cml0
eU9yaWdpbikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdGFyZ2V0V2luZG93LT5wcmlu
dEVycm9yTWVzc2FnZSh0YXJnZXRXaW5kb3ctPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdl
KG90aGVyT2JqZWN0KSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIEpTRE9NV2luZG93
QmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsK
ICNpZiAhRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpIHx8ICFFTkFCTEUoSU5TUEVDVE9SKQpA
QCAtMjIxLDYgKzE5MSwzMSBAQCBKU0dsb2JhbERhdGEqIEpTRE9NV2luZG93QmFzZTo6Y29tbW9u
SlNHbG9iYWxEYXRhKCkKICAgICByZXR1cm4gZ2xvYmFsRGF0YTsKIH0KIAorc3RhdGljIGJvb2wg
Y2hlY2tUaGF0VGhpbmcoRE9NV2luZG93KiBhY3RpdmUsIERPTVdpbmRvdyogdGFyZ2V0KQorewor
ICAgIGlmIChhY3RpdmUtPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXQtPnNlY3Vy
aXR5T3JpZ2luKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBwcmludEVycm9yTWVzc2Fn
ZUZvckZyYW1lKHRhcmdldC0+ZnJhbWUoKSwgdGFyZ2V0LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9y
TWVzc2FnZShhY3RpdmUpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNET01XaW5k
b3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAorewor
ICAgIHJldHVybiBjaGVja1RoYXRUaGluZyhhY3RpdmVET01XaW5kb3coZXhlYyksIGltcGwoKSk7
Cit9CisKKy8vIEZJWE1FOiBEb2N1bWVudCB3aHkgdGhpcyBmdW5jdGlvbiBpcyBkaWZmZXJlbnQg
ZnJvbSB0aGUgb25lIGFib3ZlLgorYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zy
b20oY29uc3QgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICByZXR1cm4gY2hlY2tUaGF0VGhpbmcoYWN0aXZlRE9NV2luZG93KGV4ZWMpLCBhc0pTRE9N
V2luZG93KHRoaXNPYmplY3QpLT5pbXBsKCkpOworfQorCisvLyBGSVhNRTogRG9jdW1lbnQgd2h5
IHRoaXMgZnVuY3Rpb24gaXMgZGlmZmVyZW50IGZyb20gdGhlIHR3byBhYm92ZS4KK2Jvb2wgSlNE
T01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gY2hlY2tUaGF0VGhpbmcoYXNKU0RPTVdpbmRvdyhvdGhl
ciktPmltcGwoKSwgaW1wbCgpKTsKK30KKwogLy8gSlNET01HbG9iYWxPYmplY3QqIGlzIGlnbm9y
ZWQsIGFjY2Vzc2luZyBhIHdpbmRvdyBpbiBhbnkgY29udGV4dCB3aWxsCiAvLyB1c2UgdGhhdCBE
T01XaW5kb3cncyBwcm90b3R5cGUgY2hhaW4uCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCosIERPTVdpbmRvdyogZG9tV2luZG93KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCBjMWRmMTRlNjI3ZWM5YTQw
NTAwY2YyNDQyNWU2NTQ3MmZhMDZmNjI1Li5lMzE2ODYzNGRlMDIyZmZkMDQyZjhkYmJiODJlYmI1
YzVhNTk4ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaApAQCAtNjQsMTUgKzY0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGphdmFTY3JpcHRFeHBlcmlt
ZW50c0VuYWJsZWQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgICAgICBzdGF0aWMg
Ym9vbCBhbGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSopOwotICAgICAgICAKKwogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oSlND
OjpFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tTm9FcnJv
ck1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nl
c3NGcm9tKEpTQzo6RXhlY1N0YXRlKiwgU3RyaW5nJiBtZXNzYWdlKSBjb25zdDsKLSAgICAgICAg
dm9pZCBwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICAgICAgc3Rh
dGljIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVj
dCwgSlNDOjpFeGVjU3RhdGUqKTsKIAogICAgICAgICAvLyBEb24ndCBjYWxsIHRoaXMgdmVyc2lv
biBvZiBhbGxvd3NBY2Nlc3NGcm9tIC0tIGl0J3MgYSBzbGlnaHRseSBpbmNvcnJlY3QgaW1wbGVt
ZW50YXRpb24gdXNlZCBvbmx5IGJ5IFdlYlNjcmlwdE9iamVjdAogICAgICAgICBib29sIGFsbG93
c0FjY2Vzc0Zyb20oY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0OworCisgICAgICAg
IHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogdG9UaGlzT2JqZWN0KEpTQzo6SlNDZWxsKiwg
SlNDOjpFeGVjU3RhdGUqKTsKICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogc2hlbGwoKSBjb25z
dDsKQEAgLTgyLDkgKzgxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKICAgICAgICAgSlNET01XaW5kb3dTaGVs
bCogbV9zaGVsbDsKLQotICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIGNyb3NzRG9tYWlu
QWNjZXNzRXJyb3JNZXNzYWdlKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAg
ICB9OwogCiAgICAgLy8gUmV0dXJucyBhIEpTRE9NV2luZG93IG9yIGpzTnVsbCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYmIz
ZDc5MTI1YTFhNzcwY2IxOWRlOGIwZmViMjNjMGQzYjk5ZDIzOC4uYzU3MmViNmZhZTAzMDViNmIz
NGJhZjg1MjFiNjU4MTY0MTRiMzRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lCiAgICAgLy8gYmVjYXVzZSB3ZSBhbHdheXMgYWxsb3cgYWNjZXNzIHRvIHNv
bWUgZnVuY3Rpb24sIGp1c3QgZGlmZmVyZW50IG9uZXMgZGVwZW5kaW5nIHdoZXRoZXIgYWNjZXNz
CiAgICAgLy8gaXMgYWxsb3dlZC4KICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGJvb2wg
YWxsb3dzQWNjZXNzID0gdGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjLCBlcnJvck1l
c3NhZ2UpOworICAgIGJvb2wgYWxsb3dzQWNjZXNzID0gc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSwgZXJyb3JNZXNzYWdlKTsKIAogICAg
IC8vIExvb2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3VyIG93biBw
cm9wZXJ0aWVzLCBidXQgaWdub3JlIG92ZXJyaWRlcyBjb21wbGV0ZWx5CiAgICAgLy8gaWYgdGhp
cyBpcyBjcm9zcy1kb21haW4gYWNjZXNzLgpAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gV2UgbmVlZCB0aGlz
IGNvZGUgaGVyZSBiZWNhdXNlIG90aGVyd2lzZSBKU0RPTVdpbmRvd0Jhc2Ugd2lsbCBzdG9wIHRo
ZSBzZWFyY2ggYmVmb3JlIHdlIGV2ZW4gZ2V0IHRvIHRoZQotICAgIC8vIHByb3RvdHlwZSBkdWUg
dG8gdGhlIGJsYW5rZXQgc2FtZSBvcmlnaW4gKGFsbG93c0FjY2Vzc0Zyb20pIGNoZWNrIGF0IHRo
ZSBlbmQgb2YgZ2V0T3duUHJvcGVydHlTbG90LgorICAgIC8vIHByb3RvdHlwZSBkdWUgdG8gdGhl
IGJsYW5rZXQgc2FtZSBvcmlnaW4gY2hlY2sgYXQgdGhlIGVuZCBvZiBnZXRPd25Qcm9wZXJ0eVNs
b3QuCiAgICAgLy8gQWxzbywgaXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBpbXBsZW1lbnRhdGlv
biBzdHJhaWdodCBvdXQgb2YgdGhlIERPTVdpbmRvdyBwcm90b3R5cGUgcmVnYXJkbGVzcyBvZgog
ICAgIC8vIHdoYXQgcHJvdG90eXBlIGlzIGFjdHVhbGx5IHNldCBvbiB0aGlzIG9iamVjdC4KICAg
ICBlbnRyeSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZShleGVj
KS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCmluZGV4IDU3ZTgxNjY4MDMyNGU5ZjA2YmI2MGIyYjNl
ODIzYjIzNmE1YTg5MDQuLjc3NTQ2YjAxNDcyZDYyODg2MjUzZjc2N2I0NDEzZjU3YzdmNGY5NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaApA
QCAtMzYsNDkgKzM2LDYgQEAgaW5saW5lIGNvbnN0IEpTRE9NV2luZG93KiBhc0pTRE9NV2luZG93
KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwogfQogCi1pbmxpbmUg
Ym9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmpl
Y3QqIG90aGVyKSBjb25zdAotewotICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShvdGhl
cikpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHByaW50RXJyb3JNZXNzYWdlKGNyb3NzRG9t
YWluQWNjZXNzRXJyb3JNZXNzYWdlKG90aGVyKSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1p
bmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20oSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYgKGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHByaW50
RXJyb3JNZXNzYWdlKGNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSkpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLSAgICAKLWlubGluZSBib29s
IEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJldHVybiBhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0
ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotfQotICAgIAotaW5saW5lIGJvb2wgSlNE
T01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBTdHJp
bmcmIG1lc3NhZ2UpIGNvbnN0Ci17Ci0gICAgaWYgKGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIG1l
c3NhZ2UgPSBjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLSAgICAKLUFMV0FZU19JTkxJTkUgYm9v
bCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBvdGhlcikgY29uc3QKLXsKLSAgICBjb25zdCBKU0RPTVdpbmRvdyogb3JpZ2luV2lu
ZG93ID0gYXNKU0RPTVdpbmRvdyhvdGhlcik7Ci0gICAgY29uc3QgSlNET01XaW5kb3cqIHRhcmdl
dFdpbmRvdyA9IG1fc2hlbGwtPndpbmRvdygpOwotCi0gICAgaWYgKG9yaWdpbldpbmRvdyA9PSB0
YXJnZXRXaW5kb3cpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpblNlY3VyaXR5T3JpZ2luID0gb3JpZ2luV2luZG93LT5pbXBsKCktPnNlY3Vy
aXR5T3JpZ2luKCk7Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRhcmdldFNlY3VyaXR5T3Jp
Z2luID0gdGFyZ2V0V2luZG93LT5pbXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0KLSAgICByZXR1
cm4gb3JpZ2luU2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzcyh0YXJnZXRTZWN1cml0eU9yaWdpbik7
Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEpTRE9NV2luZG93Q3VzdG9tX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRl
eCBiMjM3NzQ0NzRiYzgwMzczYWZhNDgxMzZjNTk4MjAzODY1MzQ1M2VlLi5mZWRiYjRkZDJiZmQ2
NWU4MjBjMTg5OTBlZTk2MzAxYWIxNjM3NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkJp
bmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJK
U0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCkBAIC04NSw3ICs4
Niw3IEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIEpTRE9NV2luZG93KiBpbnNwZWN0ZWRX
aW5kb3cgPSB0b0pTRE9NV2luZG93KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OwogICAgIGlmICghaW5zcGVjdGVkV2luZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIGluc3BlY3RlZFdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdlKHNj
cmlwdFN0YXRlKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUoc2NyaXB0U3RhdGUsIGluc3BlY3RlZFdpbmRvdy0+aW1wbCgpLT5mcmFtZSgpLCBE
b05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157050</attachid>
            <date>2012-08-07 17:15:36 -0700</date>
            <delta_ts>2012-08-08 19:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93407-20120807171509.patch</filename>
            <type>text/plain</type>
            <size>9764</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCBkNGEwNmU1NjM5OWE2ZDllYjMwMGQ0N2Q1ZGIz
ODE1MjY5Mjk5ZTU4Li4zMGI1N2M0ZDU4OWM2MTNkYmQ2YmJjN2JiOWZhZjkwZWI1YTU0MzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAg
LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRv
d0Jhc2UuaCIKIAorI2luY2x1ZGUgIkJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkNocm9t
ZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTgz
LDQxICs4NCwxMSBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2ltcGwtPmRvY3VtZW50
KCk7CiB9CiAKLVN0cmluZyBKU0RPTVdpbmRvd0Jhc2U6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JN
ZXNzYWdlKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9zaGVsbC0+d2luZG93KCktPmltcGwoKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2Uo
YXNKU0RPTVdpbmRvdyhvdGhlciktPmltcGwoKSk7Ci19Ci0KIHZvaWQgSlNET01XaW5kb3dCYXNl
OjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CiB7CiAgICAg
cHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShpbXBsKCktPmZyYW1lKCksIG1lc3NhZ2UpOwogfQog
Ci0vLyBUaGlzIG1ldGhvZCBjaGVja3Mgd2hldGhlciBhY2Nlc3NzIHRvICp0aGlzKiBnbG9iYWwg
b2JqZWN0IGlzIHBlcm1pdHRlZCBmcm9tCi0vLyB0aGUgZ2l2ZW4gY29udGV4dDsgdGhpcyBkaWZm
ZXJzIGZyb20gYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUsIHNpbmNlIHRoYXQKLS8vIG1ldGhvZCBj
aGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gY29udGV4dCBpcyBwZXJtaXR0ZWQgdG8gYWNjZXNzIHRo
ZSBjdXJyZW50Ci0vLyB3aW5kb3cgdGhlIHNoZWxsIGlzIHJlZmVyZW5jaW5nICh3aGljaCBtYXkg
Y29tZSBmcm9tIGEgZGlmZmVyZW50IHNlY3VyaXR5Ci0vLyBvcmlnaW4gdG8gdGhpcyBnbG9iYWwg
b2JqZWN0KS4KLWJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9i
YWxPYmplY3QqIG90aGVyT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0g
ICAgY29uc3QgSlNET01XaW5kb3cqIG9yaWdpbldpbmRvdyA9IGFzSlNET01XaW5kb3cob3RoZXJP
YmplY3QpOwotICAgIGNvbnN0IEpTRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBhc0pTRE9NV2lu
ZG93KHRoaXNPYmplY3QpOwotCi0gICAgaWYgKG9yaWdpbldpbmRvdyA9PSB0YXJnZXRXaW5kb3cp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdp
blNlY3VyaXR5T3JpZ2luID0gb3JpZ2luV2luZG93LT5pbXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRhcmdldFNlY3VyaXR5T3JpZ2luID0gdGFyZ2V0
V2luZG93LT5pbXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0KLSAgICBpZiAob3JpZ2luU2VjdXJp
dHlPcmlnaW4tPmNhbkFjY2Vzcyh0YXJnZXRTZWN1cml0eU9yaWdpbikpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgdGFyZ2V0V2luZG93LT5wcmludEVycm9yTWVzc2FnZSh0YXJnZXRXaW5k
b3ctPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKG90aGVyT2JqZWN0KSk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCiBib29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxpbmco
Y29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICNpZiAhRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpIHx8ICFFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMjIxLDYgKzE5MiwzMSBAQCBKU0ds
b2JhbERhdGEqIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkKICAgICByZXR1
cm4gZ2xvYmFsRGF0YTsKIH0KIAorc3RhdGljIGJvb2wgY2hlY2tUaGF0VGhpbmcoRE9NV2luZG93
KiBhY3RpdmUsIERPTVdpbmRvdyogdGFyZ2V0KQoreworICAgIGlmIChhY3RpdmUtPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXQtPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHRhcmdldC0+ZnJhbWUo
KSwgdGFyZ2V0LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmUpKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9t
KEpTQzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIHJldHVybiBCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBpbXBsKCktPmZyYW1lKCkpOworfQor
CisvLyBGSVhNRTogRG9jdW1lbnQgd2h5IHRoaXMgZnVuY3Rpb24gaXMgZGlmZmVyZW50IGZyb20g
dGhlIG9uZSBhYm92ZS4KK2Jvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
cmV0dXJuIGNoZWNrVGhhdFRoaW5nKGFjdGl2ZURPTVdpbmRvdyhleGVjKSwgYXNKU0RPTVdpbmRv
dyh0aGlzT2JqZWN0KS0+aW1wbCgpKTsKK30KKworLy8gRklYTUU6IERvY3VtZW50IHdoeSB0aGlz
IGZ1bmN0aW9uIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB0d28gYWJvdmUuCitib29sIEpTRE9NV2lu
ZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbShKU0dsb2JhbE9iamVjdCogb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKG90
aGVyLT5nbG9iYWxFeGVjKCksIGltcGwoKS0+ZnJhbWUoKSk7Cit9CisKIC8vIEpTRE9NR2xvYmFs
T2JqZWN0KiBpcyBpZ25vcmVkLCBhY2Nlc3NpbmcgYSB3aW5kb3cgaW4gYW55IGNvbnRleHQgd2ls
bAogLy8gdXNlIHRoYXQgRE9NV2luZG93J3MgcHJvdG90eXBlIGNoYWluLgogSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqLCBET01XaW5kb3cqIGRvbVdpbmRv
dykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXgg
YzFkZjE0ZTYyN2VjOWE0MDUwMGNmMjQ0MjVlNjU0NzJmYTA2ZjYyNS4uMzQ1ODZiNDQ2NGM2ZDdl
MzhlNThkNWVkMWQwOTE0NWQyYWE5MzQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTY0LDE1ICs2NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUmljaFNvdXJjZUluZm8oY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgICAgICBzdGF0aWMgYm9vbCBq
YXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqKTsKLSAgICAgICAgCisKICAgICAgICAgYm9vbCBhbGxv
d3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYWxsb3dz
QWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAg
IGJvb2wgYWxsb3dzQWNjZXNzRnJvbShKU0M6OkV4ZWNTdGF0ZSosIFN0cmluZyYgbWVzc2FnZSkg
Y29uc3Q7Ci0gICAgICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29u
c3Q7CisgICAgICAgIHN0YXRpYyBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxP
YmplY3QqIHRoaXNPYmplY3QsIEpTQzo6RXhlY1N0YXRlKik7CiAKICAgICAgICAgLy8gRG9uJ3Qg
Y2FsbCB0aGlzIHZlcnNpb24gb2YgYWxsb3dzQWNjZXNzRnJvbSAtLSBpdCdzIGEgc2xpZ2h0bHkg
aW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIHVzZWQgb25seSBieSBXZWJTY3JpcHRPYmplY3QKLSAg
ICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBj
b25zdDsKKyAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKEpTQzo6SlNHbG9iYWxPYmplY3Qq
KSBjb25zdDsKKworICAgICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHRvVGhpc09i
amVjdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKik7CiAgICAgICAgIEpTRE9NV2luZG93
U2hlbGwqIHNoZWxsKCkgY29uc3Q7CkBAIC04Miw5ICs4MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2ltcGw7CiAgICAg
ICAgIEpTRE9NV2luZG93U2hlbGwqIG1fc2hlbGw7Ci0KLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nl
c3NGcm9tUHJpdmF0ZShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgICAg
IFN0cmluZyBjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CiAgICAgfTsKIAogICAgIC8vIFJldHVybnMgYSBKU0RPTVdpbmRvdyBv
ciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCmluZGV4IGJiM2Q3OTEyNWExYTc3MGNiMTlkZThiMGZlYjIzYzBkM2I5OWQyMzgu
LmM1NzJlYjZmYWUwMzA1YjZiMzRiYWY4NTIxYjY1ODE2NDE0YjM0ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTE1OCw3ICsx
NTgsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIC8vIGJlY2F1c2Ugd2UgYWx3YXlz
IGFsbG93IGFjY2VzcyB0byBzb21lIGZ1bmN0aW9uLCBqdXN0IGRpZmZlcmVudCBvbmVzIGRlcGVu
ZGluZyB3aGV0aGVyIGFjY2VzcwogICAgIC8vIGlzIGFsbG93ZWQuCiAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZTsKLSAgICBib29sIGFsbG93c0FjY2VzcyA9IHRoaXNPYmplY3QtPmFsbG93c0FjY2Vz
c0Zyb20oZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCksIGVy
cm9yTWVzc2FnZSk7CiAKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgYmVmb3JlIGxvb2tpbmcg
YXQgYW55IG9mIG91ciBvd24gcHJvcGVydGllcywgYnV0IGlnbm9yZSBvdmVycmlkZXMgY29tcGxl
dGVseQogICAgIC8vIGlmIHRoaXMgaXMgY3Jvc3MtZG9tYWluIGFjY2Vzcy4KQEAgLTE2Niw3ICsx
NjYsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIC8vIFdlIG5lZWQgdGhpcyBjb2RlIGhlcmUgYmVjYXVzZSBvdGhlcndpc2UgSlNET01XaW5k
b3dCYXNlIHdpbGwgc3RvcCB0aGUgc2VhcmNoIGJlZm9yZSB3ZSBldmVuIGdldCB0byB0aGUKLSAg
ICAvLyBwcm90b3R5cGUgZHVlIHRvIHRoZSBibGFua2V0IHNhbWUgb3JpZ2luIChhbGxvd3NBY2Nl
c3NGcm9tKSBjaGVjayBhdCB0aGUgZW5kIG9mIGdldE93blByb3BlcnR5U2xvdC4KKyAgICAvLyBw
cm90b3R5cGUgZHVlIHRvIHRoZSBibGFua2V0IHNhbWUgb3JpZ2luIGNoZWNrIGF0IHRoZSBlbmQg
b2YgZ2V0T3duUHJvcGVydHlTbG90LgogICAgIC8vIEFsc28sIGl0J3MgaW1wb3J0YW50IHRvIGdl
dCB0aGUgaW1wbGVtZW50YXRpb24gc3RyYWlnaHQgb3V0IG9mIHRoZSBET01XaW5kb3cgcHJvdG90
eXBlIHJlZ2FyZGxlc3Mgb2YKICAgICAvLyB3aGF0IHByb3RvdHlwZSBpcyBhY3R1YWxseSBzZXQg
b24gdGhpcyBvYmplY3QuCiAgICAgZW50cnkgPSBKU0RPTVdpbmRvd1Byb3RvdHlwZTo6c19pbmZv
LnByb3BIYXNoVGFibGUoZXhlYyktPmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaAppbmRleCA1N2U4MTY2
ODAzMjRlOWYwNmJiNjBiMmIzZTgyM2IyMzZhNWE4OTA0Li43NzU0NmIwMTQ3MmQ2Mjg4NjI1M2Y3
NjdiNDQxM2Y1N2M3ZjRmOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmgKQEAgLTM2LDQ5ICszNiw2IEBAIGlubGluZSBjb25zdCBKU0RPTVdp
bmRvdyogYXNKU0RPTVdpbmRvdyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93Kj4oZ2xvYmFsT2Jq
ZWN0KTsKIH0KIAotaW5saW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9t
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAoYWxsb3dzQWNj
ZXNzRnJvbVByaXZhdGUob3RoZXIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBwcmludEVy
cm9yTWVzc2FnZShjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShvdGhlcikpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nl
c3NGcm9tKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChhbGxvd3NBY2Nl
c3NGcm9tUHJpdmF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBwcmludEVycm9yTWVzc2FnZShjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVz
c2FnZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0gICAgCi1pbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb21Ob0Vy
cm9yTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICByZXR1cm4gYWxs
b3dzQWNjZXNzRnJvbVByaXZhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLX0KLSAg
ICAKLWlubGluZSBib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAotewotICAgIGlmIChhbGxvd3NB
Y2Nlc3NGcm9tUHJpdmF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBtZXNzYWdlID0gY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2Uo
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0gICAg
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tUHJp
dmF0ZShjb25zdCBKU0dsb2JhbE9iamVjdCogb3RoZXIpIGNvbnN0Ci17Ci0gICAgY29uc3QgSlNE
T01XaW5kb3cqIG9yaWdpbldpbmRvdyA9IGFzSlNET01XaW5kb3cob3RoZXIpOwotICAgIGNvbnN0
IEpTRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBtX3NoZWxsLT53aW5kb3coKTsKLQotICAgIGlm
IChvcmlnaW5XaW5kb3cgPT0gdGFyZ2V0V2luZG93KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW5TZWN1cml0eU9yaWdpbiA9IG9yaWdpbldp
bmRvdy0+aW1wbCgpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0YXJnZXRTZWN1cml0eU9yaWdpbiA9IHRhcmdldFdpbmRvdy0+aW1wbCgpLT5zZWN1cml0eU9y
aWdpbigpOwotCi0gICAgcmV0dXJuIG9yaWdpblNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3ModGFy
Z2V0U2VjdXJpdHlPcmlnaW4pOwotfQotCiB9CiAKICNlbmRpZiAvLyBKU0RPTVdpbmRvd0N1c3Rv
bV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0TWFuYWdlci5jcHAKaW5kZXggYjIzNzc0NDc0YmM4MDM3M2FmYTQ4MTM2YzU5ODIwMzg2NTM0
NTNlZS4uZmVkYmI0ZGQyYmZkNjVlODIwYzE4OTkwZWU5NjMwMWFiMTYzNzRmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCiAKKyNpbmNsdWRlICJCaW5kaW5nU2VjdXJpdHkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1
c3RvbS5oIgpAQCAtODUsNyArODYsNyBAQCBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2Fu
QWNjZXNzSW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICBKU0RP
TVdpbmRvdyogaW5zcGVjdGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhzY3JpcHRTdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3ctPmFsbG93c0FjY2Vzc0Zy
b21Ob0Vycm9yTWVzc2FnZShzY3JpcHRTdGF0ZSk7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHNjcmlwdFN0YXRlLCBpbnNwZWN0ZWRXaW5kb3ct
PmltcGwoKS0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157370</attachid>
            <date>2012-08-08 19:31:26 -0700</date>
            <delta_ts>2012-08-20 17:33:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93407-20120808193100.patch</filename>
            <type>text/plain</type>
            <size>23450</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM3YzFkZGJlYTNlNzlh
NzU2NjdmNGYwNWY0MDBjOWI0ZmZkMmY5Zi4uNDA4MDQ2MTdhZDg5ZDMwNDA5OTc0OTAyZGVjNGYx
ZTRlYzlmZjFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTA4LTA4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgSW1wbGVtZW50IEpTRE9NV2lu
ZG93Kjo6YWxsb3dzQWNjZXNzRnJvbSogaW4gdGVybXMgb2YgQmluZGluZ1NlY3VyaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVt
b3ZlcyBhbGxvd3NBY2Nlc3NGcm9tIGFuZCBpbXBsZW1lbnRzIHRoZSBzZWN1cml0eSBjaGVja3MK
KyAgICAgICAgaW4gdGVybXMgb2Ygc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lIGRpcmVjdGx5LiBU
aGVyZSBzaG91bGRuJ3QgYmUgYW55CisgICAgICAgIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFsbG93QWNjZXNzRnJvbSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgIChKU0RPTVdpbmRvd0Jhc2Up
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
dzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmNh
bkFjY2Vzc0luc3BlY3RlZFdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJTY3Jp
cHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBfaXNTYWZlU2NyaXB0XSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkpOgorICAgICAgICAoR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVE
T01PYmplY3RFeGNpdGluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9N
T2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2Jq
ZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKToKKworMjAxMi0wOC0wOCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJld2lyZSB0aGUgc2FtZS1v
cmlnaW4gY2hlY2tzIGZvciB0aGUgSmF2YVNjcmlwdENvcmUgYmluZGluZ3MgdGhyb3VnaCBCaW5k
aW5nU2VjdXJpdHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkzMzgyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCmluZGV4IGQ0YTA2ZTU2Mzk5YTZkOWViMzAwZDQ3ZDVkYjM4MTUyNjkyOTllNTguLmJj
MmIxNTM0ZWFkZmI3NzViZDFiNzQ3MmFiZDYxNGYzYTgxNDc3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNDIsOSArNDIsMjMgQEAg
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgY2FsbCBzaG91bGRBbGxvd0FjY2Vzc1RvRG9jdW1lbnQgb25j
ZSB0aGVyZSBpcyBhIHByZWRpY3RhYmxlCisvLyB3YXkgdG8gZ2V0IGEgRG9jdW1lbnQqIGZyb20g
YSBET01XaW5kb3cqLgorc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IEpT
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRE9NV2lu
ZG93KiBhY3RpdmUgPSBhY3RpdmVET01XaW5kb3coZXhlYyk7CisgICAgRE9NV2luZG93KiB0YXJn
ZXQgPSBhc0pTRE9NV2luZG93KHRoaXNPYmplY3QpLT5pbXBsKCk7CisKKyAgICBpZiAoYWN0aXZl
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3ModGFyZ2V0LT5zZWN1cml0eU9yaWdpbigpKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHRh
cmdldC0+ZnJhbWUoKSwgdGFyZ2V0LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3Rp
dmUpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRv
d0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkgfTsKIAotY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9y
dHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBl
cmltZW50c0VuYWJsZWQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2lu
ZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNz
RnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3Vs
ZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQgfTsKIAogSlNE
T01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHdpbmRvdywgSlNET01X
aW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUsIHNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKQEAg
LTgzLDQxICs5NywxMSBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBKU0RPTVdpbmRvd0Jhc2U6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiBtX2ltcGwtPmRvY3Vt
ZW50KCk7CiB9CiAKLVN0cmluZyBKU0RPTVdpbmRvd0Jhc2U6OmNyb3NzRG9tYWluQWNjZXNzRXJy
b3JNZXNzYWdlKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zaGVsbC0+d2luZG93KCktPmltcGwoKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3Nh
Z2UoYXNKU0RPTVdpbmRvdyhvdGhlciktPmltcGwoKSk7Ci19Ci0KIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0CiB7CiAg
ICAgcHJpbnRFcnJvck1lc3NhZ2VGb3JGcmFtZShpbXBsKCktPmZyYW1lKCksIG1lc3NhZ2UpOwog
fQogCi0vLyBUaGlzIG1ldGhvZCBjaGVja3Mgd2hldGhlciBhY2Nlc3NzIHRvICp0aGlzKiBnbG9i
YWwgb2JqZWN0IGlzIHBlcm1pdHRlZCBmcm9tCi0vLyB0aGUgZ2l2ZW4gY29udGV4dDsgdGhpcyBk
aWZmZXJzIGZyb20gYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUsIHNpbmNlIHRoYXQKLS8vIG1ldGhv
ZCBjaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gY29udGV4dCBpcyBwZXJtaXR0ZWQgdG8gYWNjZXNz
IHRoZSBjdXJyZW50Ci0vLyB3aW5kb3cgdGhlIHNoZWxsIGlzIHJlZmVyZW5jaW5nICh3aGljaCBt
YXkgY29tZSBmcm9tIGEgZGlmZmVyZW50IHNlY3VyaXR5Ci0vLyBvcmlnaW4gdG8gdGhpcyBnbG9i
YWwgb2JqZWN0KS4KLWJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNH
bG9iYWxPYmplY3QqIG90aGVyT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwot
Ci0gICAgY29uc3QgSlNET01XaW5kb3cqIG9yaWdpbldpbmRvdyA9IGFzSlNET01XaW5kb3cob3Ro
ZXJPYmplY3QpOwotICAgIGNvbnN0IEpTRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBhc0pTRE9N
V2luZG93KHRoaXNPYmplY3QpOwotCi0gICAgaWYgKG9yaWdpbldpbmRvdyA9PSB0YXJnZXRXaW5k
b3cpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9y
aWdpblNlY3VyaXR5T3JpZ2luID0gb3JpZ2luV2luZG93LT5pbXBsKCktPnNlY3VyaXR5T3JpZ2lu
KCk7Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRhcmdldFNlY3VyaXR5T3JpZ2luID0gdGFy
Z2V0V2luZG93LT5pbXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0KLSAgICBpZiAob3JpZ2luU2Vj
dXJpdHlPcmlnaW4tPmNhbkFjY2Vzcyh0YXJnZXRTZWN1cml0eU9yaWdpbikpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgdGFyZ2V0V2luZG93LT5wcmludEVycm9yTWVzc2FnZSh0YXJnZXRX
aW5kb3ctPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKG90aGVyT2JqZWN0KSk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiBib29sIEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxp
bmcoY29uc3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCkKIHsKICNpZiAhRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpIHx8ICFFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCBjMWRmMTRlNjI3ZWM5YTQwNTAwY2YyNDQy
NWU2NTQ3MmZhMDZmNjI1Li4zMjQ1NGRhNmFkYTQzZmYzYzFkOWVkZWNlZjg4Yzg2ZjU3MWMxMGYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAt
NjQsMTUgKzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c1JpY2hTb3VyY2VJbmZvKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKICAgICAgICAgc3RhdGljIGJvb2wgamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxl
ZChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIGFsbG93
c0FjY2Vzc0Zyb20oY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKik7
Ci0gICAgICAgIAotICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oSlNDOjpFeGVjU3RhdGUq
KSBjb25zdDsKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tTm9FcnJvck1lc3NhZ2UoSlND
OjpFeGVjU3RhdGUqKSBjb25zdDsKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKEpTQzo6
RXhlY1N0YXRlKiwgU3RyaW5nJiBtZXNzYWdlKSBjb25zdDsKLSAgICAgICAgdm9pZCBwcmludEVy
cm9yTWVzc2FnZShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgICAgICAvLyBEb24ndCBjYWxs
IHRoaXMgdmVyc2lvbiBvZiBhbGxvd3NBY2Nlc3NGcm9tIC0tIGl0J3MgYSBzbGlnaHRseSBpbmNv
cnJlY3QgaW1wbGVtZW50YXRpb24gdXNlZCBvbmx5IGJ5IFdlYlNjcmlwdE9iamVjdAotICAgICAg
ICBib29sIGFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0
OworICAgICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
ICAgICAgICAKICAgICAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHRvVGhpc09iamVjdChKU0M6
OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKik7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwqIHNo
ZWxsKCkgY29uc3Q7CkBAIC04Miw5ICs3NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
cml2YXRlOgogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2ltcGw7CiAgICAgICAgIEpTRE9N
V2luZG93U2hlbGwqIG1fc2hlbGw7Ci0KLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tUHJp
dmF0ZShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgICAgIFN0cmluZyBj
cm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7CiAgICAgfTsKIAogICAgIC8vIFJldHVybnMgYSBKU0RPTVdpbmRvdyBvciBqc051bGwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IGJiM2Q3OTEyNWExYTc3MGNiMTlkZThiMGZlYjIzYzBkM2I5OWQyMzguLmFmZGZmMDFm
OGY0ZGM0NzE3ZGZjZjE4NzhkZGE1OWNlZTQ2NmIyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBz
dGF0aWMgSlNWYWx1ZSBuYW1lZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBQcm9wZXJ0eU5hbWUgcAogICAgIEpTRE9NV2luZG93QmFzZSogdGhpc09iaiA9IGpz
Q2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpc09iai0+aW1wbCgpLT5mcmFtZSgpLT5kb2N1bWVudCgpOwogCi0gICAgQVNT
RVJUKHRoaXNPYmotPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpOworICAgIEFTU0VSVChzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iai0+aW1wbCgpLT5mcmFtZSgpKSk7CiAgICAg
QVNTRVJUKGRvY3VtZW50KTsKICAgICBBU1NFUlQoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkp
OwogCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAvLyBi
ZWNhdXNlIHdlIGFsd2F5cyBhbGxvdyBhY2Nlc3MgdG8gc29tZSBmdW5jdGlvbiwganVzdCBkaWZm
ZXJlbnQgb25lcyBkZXBlbmRpbmcgd2hldGhlciBhY2Nlc3MKICAgICAvLyBpcyBhbGxvd2VkLgog
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYm9vbCBhbGxvd3NBY2Nlc3MgPSB0aGlzT2Jq
ZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgYm9vbCBhbGxv
d3NBY2Nlc3MgPSBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1w
bCgpLT5mcmFtZSgpLCBlcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVz
IGJlZm9yZSBsb29raW5nIGF0IGFueSBvZiBvdXIgb3duIHByb3BlcnRpZXMsIGJ1dCBpZ25vcmUg
b3ZlcnJpZGVzIGNvbXBsZXRlbHkKICAgICAvLyBpZiB0aGlzIGlzIGNyb3NzLWRvbWFpbiBhY2Nl
c3MuCkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBXZSBuZWVkIHRoaXMgY29kZSBoZXJlIGJlY2F1c2Ugb3Ro
ZXJ3aXNlIEpTRE9NV2luZG93QmFzZSB3aWxsIHN0b3AgdGhlIHNlYXJjaCBiZWZvcmUgd2UgZXZl
biBnZXQgdG8gdGhlCi0gICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0aGUgYmxhbmtldCBzYW1lIG9y
aWdpbiAoYWxsb3dzQWNjZXNzRnJvbSkgY2hlY2sgYXQgdGhlIGVuZCBvZiBnZXRPd25Qcm9wZXJ0
eVNsb3QuCisgICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0aGUgYmxhbmtldCBzYW1lIG9yaWdpbiBj
aGVjayBhdCB0aGUgZW5kIG9mIGdldE93blByb3BlcnR5U2xvdC4KICAgICAvLyBBbHNvLCBpdCdz
IGltcG9ydGFudCB0byBnZXQgdGhlIGltcGxlbWVudGF0aW9uIHN0cmFpZ2h0IG91dCBvZiB0aGUg
RE9NV2luZG93IHByb3RvdHlwZSByZWdhcmRsZXNzIG9mCiAgICAgLy8gd2hhdCBwcm90b3R5cGUg
aXMgYWN0dWFsbHkgc2V0IG9uIHRoaXMgb2JqZWN0LgogICAgIGVudHJ5ID0gSlNET01XaW5kb3dQ
cm90b3R5cGU6OnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLT5lbnRyeShleGVjLCBwcm9wZXJ0
eU5hbWUpOwpAQCAtMjcyLDcgKzI3Miw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiB7CiAg
ICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3Qp
OwogICAgIC8vIE5ldmVyIGFsbG93IGNyb3NzLWRvbWFpbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IKLSAgICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgaWYg
KCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFt
ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRy
eTsKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAKICAgICAvLyBP
cHRpbWl6YXRpb246IGFjY2VzcyBKYXZhU2NyaXB0IGdsb2JhbCB2YXJpYWJsZXMgZGlyZWN0bHkg
YmVmb3JlIGludm9sdmluZyB0aGUgRE9NLgogICAgIGlmICh0aGlzT2JqZWN0LT5KU0dsb2JhbE9i
amVjdDo6aGFzT3duUHJvcGVydHlGb3JXcml0ZShleGVjLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgICAgICBpZiAo
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUo
KSkpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwKICAgICBpZiAobG9va3VwUHV0PEpT
RE9NV2luZG93PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzX2luZm8ucHJvcEhhc2hUYWJs
ZShleGVjKSwgdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0aGlzT2Jq
ZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1Rv
RnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCkBA
IC0zNjUsNyArMzY1LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm8KIHsKICAgICBKU0RPTVdp
bmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIC8vIE9u
bHkgYWxsb3cgZGVsZXRpbmcgcHJvcGVydGllcyBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2lu
LgotICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICBpZiAo
IXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1l
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CkBAIC0zNzQsNyArMzc0LDcg
QEAgdm9pZCBKU0RPTVdpbmRvdzo6Z2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUg
d2luZG93IHRvIGVudW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBp
ZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgaWYgKCFzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIEJhc2U6OmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBKU0RP
TVdpbmRvdzo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnQKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyB0aGUgd2luZG93IHRvIGVu
dW1lcmF0ZWQgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIXRoaXNPYmpl
Y3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1Rv
RnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CiB9CkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6
ZGVmaW5lT3duUHJvcGVydHkoSlNDOjpKU09iamVjdCogb2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywKIHsKICAgICBKU0RPTVdpbmRvdyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRv
dyo+KG9iamVjdCk7CiAgICAgLy8gT25seSBhbGxvdyBkZWZpbmluZyBwcm9wZXJ0aWVzIGluIHRo
aXMgd2F5IGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4sIGFzIGl0IGFsbG93cyBzZXR0ZXJz
IHRvIGJlIGludHJvZHVjZWQuCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9t
KGV4ZWMpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmpl
Y3QtPmltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERv
bid0IGFsbG93IHNoYWRvd2luZyBsb2NhdGlvbiB1c2luZyBhY2Nlc3NvciBwcm9wZXJ0aWVzLgpA
QCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0
aXZlRE9NV2luZG93KGV4ZWMpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0
dGluZ3MgPSBhY3RpdmVGcmFtZS0+c2V0dGluZ3MoKSkgewogICAgICAgICAgICAgaWYgKHNldHRp
bmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYmICFhY3RpdmVG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgICAgIGlmIChhbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKQorICAgICAgICAgICAgICAgIGlmIChzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoZXhlYywgaW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAibG9jYXRpb24iKSwgdmFsdWUp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCmluZGV4IDU3ZTgxNjY4MDMyNGU5
ZjA2YmI2MGIyYjNlODIzYjIzNmE1YTg5MDQuLjc3NTQ2YjAxNDcyZDYyODg2MjUzZjc2N2I0NDEz
ZjU3YzdmNGY5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uaApAQCAtMzYsNDkgKzM2LDYgQEAgaW5saW5lIGNvbnN0IEpTRE9NV2luZG93KiBh
c0pTRE9NV2luZG93KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwog
fQogCi1pbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3Qg
SlNHbG9iYWxPYmplY3QqIG90aGVyKSBjb25zdAotewotICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9t
UHJpdmF0ZShvdGhlcikpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHByaW50RXJyb3JNZXNz
YWdlKGNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKG90aGVyKSk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1pbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20o
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAgaWYgKGFsbG93c0FjY2Vzc0Zyb21Q
cml2YXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIHByaW50RXJyb3JNZXNzYWdlKGNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLSAgICAK
LWlubGluZSBib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbU5vRXJyb3JNZXNz
YWdlKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJldHVybiBhbGxvd3NBY2Nl
c3NGcm9tUHJpdmF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotfQotICAgIAotaW5s
aW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0Ci17Ci0gICAgaWYgKGFsbG93c0FjY2Vzc0Zy
b21Qcml2YXRlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIG1lc3NhZ2UgPSBjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLSAgICAKLUFMV0FZ
U19JTkxJTkUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlKGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhlcikgY29uc3QKLXsKLSAgICBjb25zdCBKU0RPTVdpbmRv
dyogb3JpZ2luV2luZG93ID0gYXNKU0RPTVdpbmRvdyhvdGhlcik7Ci0gICAgY29uc3QgSlNET01X
aW5kb3cqIHRhcmdldFdpbmRvdyA9IG1fc2hlbGwtPndpbmRvdygpOwotCi0gICAgaWYgKG9yaWdp
bldpbmRvdyA9PSB0YXJnZXRXaW5kb3cpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29u
c3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpblNlY3VyaXR5T3JpZ2luID0gb3JpZ2luV2luZG93LT5p
bXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRhcmdl
dFNlY3VyaXR5T3JpZ2luID0gdGFyZ2V0V2luZG93LT5pbXBsKCktPnNlY3VyaXR5T3JpZ2luKCk7
Ci0KLSAgICByZXR1cm4gb3JpZ2luU2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzcyh0YXJnZXRTZWN1
cml0eU9yaWdpbik7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEpTRE9NV2luZG93Q3VzdG9tX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcAppbmRleCBiMjM3NzQ0NzRiYzgwMzczYWZhNDgxMzZjNTk4MjAzODY1MzQ1M2VlLi5m
ZWRiYjRkZDJiZmQ2NWU4MjBjMTg5OTBlZTk2MzAxYWIxNjM3NGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAor
I2luY2x1ZGUgIkJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgi
CkBAIC04NSw3ICs4Niw3IEBAIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJ
bnNwZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIEpTRE9NV2luZG93
KiBpbnNwZWN0ZWRXaW5kb3cgPSB0b0pTRE9NV2luZG93KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwogICAgIGlmICghaW5zcGVjdGVkV2luZG93KQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGluc3BlY3RlZFdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbU5vRXJy
b3JNZXNzYWdlKHNjcmlwdFN0YXRlKTsKKyAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRnJhbWUoc2NyaXB0U3RhdGUsIGluc3BlY3RlZFdpbmRvdy0+aW1wbCgp
LT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tCmluZGV4IDFhNTFiODFhMmU3ODBlZjEyMzBkMjc4N2M0MTFhOGE3YTc5MTVlYWUuLjMx
MzYwYWViNzMxZTdiMDU2MDBjM2I0MTg2NjdlMzU3OTY0NTIyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0yNDEsNyArMjQxLDEx
IEBAIHN0YXRpYyB2b2lkIF9kaWRFeGVjdXRlKFdlYlNjcmlwdE9iamVjdCAqb2JqKQogICAgIGlm
ICghX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgcmV0dXJuIGpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihyb290LT5nbG9i
YWxPYmplY3QoKSktPmFsbG93c0FjY2Vzc0Zyb20oX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpKTsKKyAgICAvLyBJdCdzIG5vdCBhY3R1YWxseSBjb3JyZWN0IHRvIGNh
bGwgc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lIGluIHRoaXMgd2F5IGJlY2F1c2UKKyAgICAvLyBK
U0RPTVdpbmRvd0Jhc2UqIGlzbid0IHRoZSByaWdodCBvYmplY3QgdG8gcmVwcmVzZW50IHRoZSBj
dXJyZW50bHkgZXhlY3V0aW5nCisgICAgLy8gSmF2YVNjcmlwdC4gSW5zdGVhZCwgd2Ugc2hvdWxk
IHVzZSBFeGVjU3RhdGUsIGxpa2Ugd2UgZG8gZWxzZXdoZXJlLgorICAgIEpTRE9NV2luZG93QmFz
ZSogdGFyZ2V0ID0ganNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHJvb3QtPmdsb2JhbE9iamVjdCgp
KTsKKyAgICByZXR1cm4gc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKF9wcml2YXRlLT5vcmlnaW5S
b290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB0YXJnZXQtPmltcGwoKS0+
ZnJhbWUoKSk7CiB9CiAKIC0gKG9uZXdheSB2b2lkKXJlbGVhc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNjAwYWM2OGM0
NGMyZjI0NjJiMGI4ZDg0ZGNiOGUwZDNlMjAyODZkNy4uYmE5ZGI1YTRjZTBlOWQ1YzY1NzAyNTcw
N2ViZDhmYjZkYmU1M2Y4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ4NSwxMSArNDg1LDcgQEAgc3ViIEdlbmVyYXRl
R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yQm9keQogICAgIAogICAgIG15IEBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JJbXBsID0gKCk7CiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgewotICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgh
dGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0Fj
Y2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOwotICAg
ICAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dB
Y2Nlc3NUb0ZyYW1lKGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAg
IH0KICAgICAKQEAgLTE3ODAsNyArMTc3Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNo
ZWNrU2VjdXJpdHkifSAmJgogICAgICAgICAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0gJiYKICAgICAg
ICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkRvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzLT5hbGxvd3NBY2Nlc3NGcm9t
KGV4ZWMpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKS0+
ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCkBA
IC0xODk1LDcgKzE4OTEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogZG9tT2JqZWN0ID0g
anNDYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAKICAgICAgICAg
ICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0
eSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgh
ZG9tT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KGV4ZWMsIGRvbU9iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4i
KTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE5NjksMTEgKzE5NjUsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2Vj
dXJpdHkifSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
RG9Ob3RDaGVja1NlY3VyaXR5In0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWpzQ2FzdDwkY2xh
c3NOYW1lKj4odGhpc09iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dB
Y2Nlc3NUb0ZyYW1lKGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwo
KS0+ZnJhbWUoKSkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
IXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNP
YmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTIwOTgsMTEgKzIwOTAsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9p
ZCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNP
YmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBqc0Nhc3Q8JGNsYXNzTmFtZSo+
KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91
bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0
KS0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0y
MjA2LDcgKzIxOTQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAg
ICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHki
fSBhbmQKICAgICAgICAgICAgICAgICAgICAgISRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjYXN0ZWRUaGlzLT5hbGxvd3NBY2Nlc3NG
cm9tKGV4ZWMpKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwo
KS0+ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
YzQ5NTUwMWZlOGVjMWVjMTIxOWIyNTgyM2RjYmJlYWEwNDQyODE2OC4uZGMwZWZiYzk2NTgxNDdm
OGEwN2ZjMDU5MzQ5MDRhMjZhMzg2OWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZQogSlNWYWx1
ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KGFzT2JqZWN0KHNs
b3RCYXNlKSk7Ci0gICAgaWYgKCFjYXN0ZWRUaGlzLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQor
ICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwo
KS0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdEFjdGl2ZURPTU9iamVjdCo+KGNhc3RlZFRoaXMtPmltcGwoKSk7CkBAIC0xNjUsNyArMTY1
LDcgQEAgSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm8KIEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBkb21PYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICBpZiAoIWRv
bU9iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICBpZiAoIXNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCBkb21PYmplY3QtPmltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVybiBKU1Rlc3RBY3RpdmVET01PYmplY3Q6Omdl
dENvbnN0cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwogfQpAQCAtMTgy
LDcgKzE4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0CiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RBY3RpdmVE
T01PYmplY3Q6OnNfaW5mbyk7Ci0gICAgaWYgKCFjYXN0ZWRUaGlzLT5hbGxvd3NBY2Nlc3NGcm9t
KGV4ZWMpKQorICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGNhc3RlZFRo
aXMtPmltcGwoKS0+ZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RBY3RpdmVET01PYmplY3QqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159573</attachid>
            <date>2012-08-20 17:33:19 -0700</date>
            <delta_ts>2012-08-20 17:50:02 -0700</delta_ts>
            <desc>Rebase to trunk</desc>
            <filename>bug-93407-20120820173240.patch</filename>
            <type>text/plain</type>
            <size>32064</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5jcHAKaW5kZXggOGRkZTY4NWI1NTc5ZWQxM2Jk
NTE1MGVlMjAyNmFkOWVmYTk0YjdhMy4uODVkYjMxZTI1N2IyMzI1ZDMxNzE5NWVlZWIwMDk4ODU5
YzAyNWExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5k
aW5nU2VjdXJpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmlu
ZGluZ1NlY3VyaXR5LmNwcApAQCAtNjAsNiArNjAsMTEgQEAgc3RhdGljIGJvb2wgY2FuQWNjZXNz
RG9jdW1lbnQoQmluZGluZ1N0YXRlKiBzdGF0ZSwgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50LCBT
ZWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRE9NV2luZG93KEJpbmRpbmdTdGF0ZSogc3RhdGUsIERPTVdpbmRvdyogdGFy
Z2V0LCBTZWN1cml0eVJlcG9ydGluZ09wdGlvbiByZXBvcnRpbmdPcHRpb24pCit7CisgICAgcmV0
dXJuIHRhcmdldCAmJiBjYW5BY2Nlc3NEb2N1bWVudChzdGF0ZSwgdGFyZ2V0LT5kb2N1bWVudCgp
LCByZXBvcnRpbmdPcHRpb24pOworfQorCiBib29sIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZSogc3RhdGUsIEZyYW1lKiB0YXJnZXQsIFNlY3Vy
aXR5UmVwb3J0aW5nT3B0aW9uIHJlcG9ydGluZ09wdGlvbikKIHsKICAgICByZXR1cm4gdGFyZ2V0
ICYmIGNhbkFjY2Vzc0RvY3VtZW50KHN0YXRlLCB0YXJnZXQtPmRvY3VtZW50KCksIHJlcG9ydGlu
Z09wdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0Jp
bmRpbmdTZWN1cml0eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5n
U2VjdXJpdHkuaAppbmRleCA5OWQ3ZjAwOTc3MTFjNDA3MzAxMGFmOGRiNWFmZjc2ODM4NDMzOGU3
Li5lZWExNjY4ZDE2ODBlZjNlYjVjYmYwOTE0OTllODZhNzg2ZGI4ODcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5LmgKQEAgLTQ3LDYg
KzQ3LDcgQEAgZW51bSBTZWN1cml0eVJlcG9ydGluZ09wdGlvbiB7CiBjbGFzcyBCaW5kaW5nU2Vj
dXJpdHkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzVG9Ob2Rl
KEJpbmRpbmdTdGF0ZSosIE5vZGUqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KEJpbmRpbmdTdGF0ZSosIERPTVdpbmRvdyosIFNlY3VyaXR5UmVwb3J0aW5n
T3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJvcik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZSosIEZyYW1lKiwgU2VjdXJpdHlSZXBvcnRpbmdP
cHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKTsKICAgICBzdGF0aWMgYm9vbCBhbGxvd1NldHRp
bmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChCaW5kaW5nU3RhdGUqLCBIVE1MRnJhbWVFbGVtZW50
QmFzZSosIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDNhZDdjMzI4NDZkMWUyNzYwYWExNmZiOGQ5OTdm
Yjc3MjRkNDM0ZTguLjY1NTFkNjY4N2RmZjgyOGU5NTRiYzJjZjFmNGFhNmM4ZmEyNDY1MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtMjEyLDkg
KzIxMiw5IEBAIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoRXhlY1N0YXRlKiBleGVjLCBO
b2RlKiBub2RlKQogICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNz
VG9Ob2RlKGV4ZWMsIG5vZGUpOwogfQogCi1ib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShF
eGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSkKK2Jvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0Zy
YW1lKEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUqIHRhcmdldCkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgZnJhbWUpOworICAgIHJl
dHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCB0YXJn
ZXQpOwogfQogCiBib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3RhdGUqIGV4ZWMs
IEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMjI3LDYgKzIyNywxNiBAQCBib29s
IHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwg
U3RyaW5nJiBtZXNzYWdlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgc2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMsIERPTVdpbmRvdyogdGFyZ2V0LCBT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBib29sIHJlc3VsdCA9IEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdyhleGVjLCB0YXJnZXQsIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcik7CisgICAg
Ly8gRklYTUU6IFRoZSBmb2xsb3dpbmcgbGluZSBvZiBjb2RlIHNob3VsZCBtb3ZlIHNvbWV3aGVy
ZSB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBpbW1lZGlhdGVseVJlcG9ydFVuc2FmZUFjY2Vz
c1RvLgorICAgIG1lc3NhZ2UgPSB0YXJnZXQtPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdl
KGFjdGl2ZURPTVdpbmRvdyhleGVjKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBw
cmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCmluZGV4IDFjODcxNmUyOTNjNTVmMzE5N2ZjYTE3NWQ0NTU1YzYwY2NjNjhjY2Eu
LjBjM2Q1Mzc0ODFiZWEyYTk5Yzk4MzUzYzE0ZDZlMTZmMDAyNDQ5N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC00MDEsMTEgKzQwMSwxMCBAQCBlbnVt
IFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsb3dBY2Nlc3NUb0NvbnRleHQoSlNDOjpFeGVj
U3RhdGUqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgYm9vbCBzaG91bGRBbGxvd0Fj
Y2Vzc1RvTm9kZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKICAgICBib29sIHNob3VsZEFsbG93
QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKik7CiAgICAgYm9vbCBzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSosIFN0cmluZyYgbWVzc2Fn
ZSk7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGxvd0FjY2Vzc1RvRE9NV2luZG93KEpTQzo6
RXhlY1N0YXRlKiwgRE9NV2luZG93Kik7CisgICAgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KEJpbmRpbmdTdGF0ZSosIERPTVdpbmRvdyosIFN0cmluZyYgbWVzc2FnZSk7CiAKICAg
ICB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0cmluZ0Z1bmN0aW9uR2V0dGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA0MjE5ZjBj
MWQzNGMxMzBjYmU5Y2Q2NzlkNDM2MjI5Nzk1MDIyMGYzLi5kOTNkNzQ2ZGE2NDkyYjVjNDc3ZGNl
ZTQwYzcwNWFkMWJhMGJlZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKIAorI2luY2x1ZGUgIkJpbmRpbmdTZWN1cml0
eS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRl
ICJET01XaW5kb3cuaCIKQEAgLTQyLDkgKzQzLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NGcm9t
KGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCBhc0pTRE9NV2luZG93KHRoaXNPYmplY3QpLT5pbXBsKCkpOworfQorCiBjb25zdCBDbGFz
c0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9iYWxP
YmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd0Jhc2Up
IH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1By
b2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQs
ICZqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkIH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZz
aG91bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNv
dXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVudHNF
bmFibGVkIH07CiAKIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93
PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQogICAgIDogSlNET01HbG9iYWxPYmpl
Y3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUpCkBAIC04Myw0MSArODksMTEgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
SlNET01XaW5kb3dCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKICAgICByZXR1
cm4gbV9pbXBsLT5kb2N1bWVudCgpOwogfQogCi1TdHJpbmcgSlNET01XaW5kb3dCYXNlOjpjcm9z
c0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShjb25zdCBKU0dsb2JhbE9iamVjdCogb3RoZXIpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hlbGwtPndpbmRvdygpLT5pbXBsKCktPmNyb3NzRG9tYWlu
QWNjZXNzRXJyb3JNZXNzYWdlKGFzSlNET01XaW5kb3cob3RoZXIpLT5pbXBsKCkpOwotfQotCiB2
b2lkIEpTRE9NV2luZG93QmFzZTo6cHJpbnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSBjb25zdAogewogICAgIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoaW1wbCgpLT5mcmFt
ZSgpLCBtZXNzYWdlKTsKIH0KIAotLy8gVGhpcyBtZXRob2QgY2hlY2tzIHdoZXRoZXIgYWNjZXNz
cyB0byAqdGhpcyogZ2xvYmFsIG9iamVjdCBpcyBwZXJtaXR0ZWQgZnJvbQotLy8gdGhlIGdpdmVu
IGNvbnRleHQ7IHRoaXMgZGlmZmVycyBmcm9tIGFsbG93c0FjY2Vzc0Zyb21Qcml2YXRlLCBzaW5j
ZSB0aGF0Ci0vLyBtZXRob2QgY2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGNvbnRleHQgaXMgcGVy
bWl0dGVkIHRvIGFjY2VzcyB0aGUgY3VycmVudAotLy8gd2luZG93IHRoZSBzaGVsbCBpcyByZWZl
cmVuY2luZyAod2hpY2ggbWF5IGNvbWUgZnJvbSBhIGRpZmZlcmVudCBzZWN1cml0eQotLy8gb3Jp
Z2luIHRvIHRoaXMgZ2xvYmFsIG9iamVjdCkuCi1ib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dz
QWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIEpTR2xvYmFsT2JqZWN0KiBvdGhlck9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKLQotICAgIGNvbnN0IEpTRE9NV2luZG93KiBvcmlnaW5XaW5kb3cgPSBh
c0pTRE9NV2luZG93KG90aGVyT2JqZWN0KTsKLSAgICBjb25zdCBKU0RPTVdpbmRvdyogdGFyZ2V0
V2luZG93ID0gYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KTsKLQotICAgIGlmIChvcmlnaW5XaW5k
b3cgPT0gdGFyZ2V0V2luZG93KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW5TZWN1cml0eU9yaWdpbiA9IG9yaWdpbldpbmRvdy0+aW1wbCgp
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0YXJnZXRTZWN1cml0eU9yaWdpbiA9IHRhcmdldFdpbmRvdy0+aW1wbCgpLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpOwotCi0gICAgaWYgKG9yaWdpblNlY3VyaXR5T3JpZ2luLT5jYW5B
Y2Nlc3ModGFyZ2V0U2VjdXJpdHlPcmlnaW4pKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IHRhcmdldFdpbmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UodGFyZ2V0V2luZG93LT5jcm9zc0RvbWFp
bkFjY2Vzc0Vycm9yTWVzc2FnZShvdGhlck9iamVjdCkpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBvYmplY3QpCiB7CiAjaWYgIUVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSB8fCAh
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKaW5kZXggYzFkZjE0ZTYyN2VjOWE0MDUwMGNmMjQ0MjVlNjU0NzJmYTA2ZjYyNS4u
MDJlZjQzZDJkYzRiZTMzMGUyMTg0MzI1Mjc2MTcwYTU1MTViMjUzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAgLTY0LDE2ICs2NCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNSaWNoU291cmNl
SW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIHNo
b3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgICAg
IHN0YXRpYyBib29sIGphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwotICAgICAgICBzdGF0aWMgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSopOwotICAgICAgICAKLSAgICAg
ICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAg
IGJvb2wgYWxsb3dzQWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKikgY29u
c3Q7Ci0gICAgICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShKU0M6OkV4ZWNTdGF0ZSosIFN0cmlu
ZyYgbWVzc2FnZSkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRFcnJvck1lc3NhZ2UoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAKLSAgICAgICAgLy8gRG9uJ3QgY2FsbCB0aGlzIHZlcnNpb24gb2Yg
YWxsb3dzQWNjZXNzRnJvbSAtLSBpdCdzIGEgc2xpZ2h0bHkgaW5jb3JyZWN0IGltcGxlbWVudGF0
aW9uIHVzZWQgb25seSBieSBXZWJTY3JpcHRPYmplY3QKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nl
c3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICAgICAgCiAgICAg
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0b1RoaXNPYmplY3QoSlNDOjpKU0NlbGwqLCBKU0M6
OkV4ZWNTdGF0ZSopOwogICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCgpIGNvbnN0Owog
CkBAIC04Miw5ICs3NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2ltcGw7CiAgICAgICAgIEpTRE9NV2luZG93U2hlbGwq
IG1fc2hlbGw7Ci0KLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgICAgIFN0cmluZyBjcm9zc0RvbWFpbkFj
Y2Vzc0Vycm9yTWVzc2FnZShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAg
fTsKIAogICAgIC8vIFJldHVybnMgYSBKU0RPTVdpbmRvdyBvciBqc051bGwoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDJkNzVh
YzA4Y2I3YTg1ZmMwNDlhZTRiN2VlM2YwMzY0MDhhNDQxMGMuLjM5YmVhZTVkYWJiOTNmZGM2MjY1
NTQ0N2E5OWIyMDI4Zjk3YjhjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogCisjaW5jbHVkZSAiQmluZGlu
Z1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgpAQCAtMTEyLDcgKzExMyw3IEBAIHN0YXRp
YyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIFByb3BlcnR5TmFtZSBwCiAgICAgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqID0ganNDYXN0
PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSB0aGlzT2JqLT5pbXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCk7CiAKLSAgICBBU1NFUlQo
dGhpc09iai0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSk7CisgICAgQVNTRVJUKEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqLT5pbXBsKCkp
KTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChkb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSk7CiAKQEAgLTE1OCw3ICsxNTksNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQog
ICAgIC8vIGJlY2F1c2Ugd2UgYWx3YXlzIGFsbG93IGFjY2VzcyB0byBzb21lIGZ1bmN0aW9uLCBq
dXN0IGRpZmZlcmVudCBvbmVzIGRlcGVuZGluZyB3aGV0aGVyIGFjY2VzcwogICAgIC8vIGlzIGFs
bG93ZWQuCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBib29sIGFsbG93c0FjY2VzcyA9
IHRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICBi
b29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhp
c09iamVjdC0+aW1wbCgpLCBlcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gTG9vayBmb3Igb3ZlcnJp
ZGVzIGJlZm9yZSBsb29raW5nIGF0IGFueSBvZiBvdXIgb3duIHByb3BlcnRpZXMsIGJ1dCBpZ25v
cmUgb3ZlcnJpZGVzIGNvbXBsZXRlbHkKICAgICAvLyBpZiB0aGlzIGlzIGNyb3NzLWRvbWFpbiBh
Y2Nlc3MuCkBAIC0xNjYsNyArMTY3LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBXZSBuZWVkIHRoaXMgY29kZSBoZXJlIGJlY2F1c2Ug
b3RoZXJ3aXNlIEpTRE9NV2luZG93QmFzZSB3aWxsIHN0b3AgdGhlIHNlYXJjaCBiZWZvcmUgd2Ug
ZXZlbiBnZXQgdG8gdGhlCi0gICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0aGUgYmxhbmtldCBzYW1l
IG9yaWdpbiAoYWxsb3dzQWNjZXNzRnJvbSkgY2hlY2sgYXQgdGhlIGVuZCBvZiBnZXRPd25Qcm9w
ZXJ0eVNsb3QuCisgICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0aGUgYmxhbmtldCBzYW1lIG9yaWdp
biAoc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdykgY2hlY2sgYXQgdGhlIGVuZCBvZiBnZXRP
d25Qcm9wZXJ0eVNsb3QuCiAgICAgLy8gQWxzbywgaXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBp
bXBsZW1lbnRhdGlvbiBzdHJhaWdodCBvdXQgb2YgdGhlIERPTVdpbmRvdyBwcm90b3R5cGUgcmVn
YXJkbGVzcyBvZgogICAgIC8vIHdoYXQgcHJvdG90eXBlIGlzIGFjdHVhbGx5IHNldCBvbiB0aGlz
IG9iamVjdC4KICAgICBlbnRyeSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpzX2luZm8ucHJvcEhh
c2hUYWJsZShleGVjKS0+ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTI3Miw3ICsyNzMs
NyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcgogewogICAgIEpTRE9NV2luZG93KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKICAgICAvLyBOZXZlciBhbGxvdyBj
cm9zcy1kb21haW4gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCi0gICAgaWYgKCF0aGlzT2JqZWN0
LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91
bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnk7CkBAIC0zNDks
NyArMzUwLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogCiAgICAgLy8gT3B0aW1pemF0aW9u
OiBhY2Nlc3MgSmF2YVNjcmlwdCBnbG9iYWwgdmFyaWFibGVzIGRpcmVjdGx5IGJlZm9yZSBpbnZv
bHZpbmcgdGhlIERPTS4KICAgICBpZiAodGhpc09iamVjdC0+SlNHbG9iYWxPYmplY3Q6Omhhc093
blByb3BlcnR5Rm9yV3JpdGUoZXhlYywgcHJvcGVydHlOYW1lKSkgewotICAgICAgICBpZiAodGhp
c09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgaWYgKEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBs
KCkpKQogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1
Nyw3ICszNTgsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAgICAgaWYgKGxvb2t1cFB1dDxK
U0RPTVdpbmRvdz4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc19pbmZvLnByb3BIYXNoVGFi
bGUoZXhlYyksIHRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodGhpc09i
amVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICBpZiAoQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAg
ICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KIApAQCAtMzY1LDcgKzM2Niw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvCiB7
CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihjZWxs
KTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3BlcnRpZXMgYnkgZnJhbWVzIGluIHRo
ZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhl
YykpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5k
b3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUpOwogfQpAQCAtMzc0LDcgKzM3NSw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiB7CiAg
ICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3Qp
OwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBp
biB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9t
KGV4ZWMpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBC
YXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOwogfQpAQCAtMzgzLDcgKzM4NCw3IEBAIHZvaWQgSlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0CiB7CiAg
ICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmplY3Qp
OwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBlbnVtZXJhdGVkIGJ5IGZyYW1lcyBp
biB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9t
KGV4ZWMpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBC
YXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOwogfQpAQCAtMzkyLDcgKzM5Myw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmRlZmluZU93
blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiB7
CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPihvYmpl
Y3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJvcGVydGllcyBpbiB0aGlzIHdheSBi
eSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBhbGxvd3Mgc2V0dGVycyB0byBiZSBp
bnRyb2R1Y2VkLgotICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkK
KyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNpbmcgYWNjZXNzb3IgcHJvcGVydGll
cy4KQEAgLTQxMiw3ICs0MTMsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKEZyYW1lKiBhY3RpdmVGcmFtZSA9
IGFjdGl2ZURPTVdpbmRvdyhleGVjKS0+ZnJhbWUoKSkgewogICAgICAgICBpZiAoU2V0dGluZ3Mq
IHNldHRpbmdzID0gYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkpIHsKICAgICAgICAgICAgIGlmIChz
ZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0
aXZlRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYWxsb3dz
QWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgICAgICAgICBpZiAoQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGltcGwoKSkpCiAgICAgICAgICAgICAg
ICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhlYywgImxv
Y2F0aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaAppbmRl
eCBhYjU2M2JmMDNjODZlMTdlNTcxYmE0NDQyNjk5ZTczM2E1MWM2OWEzLi43NzU0NmIwMTQ3MmQ2
Mjg4NjI1M2Y3NjdiNDQxM2Y1N2M3ZjRmOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKQEAgLTM2LDQ5ICszNiw2IEBAIGlubGluZSBjb25z
dCBKU0RPTVdpbmRvdyogYXNKU0RPTVdpbmRvdyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93Kj4o
Z2xvYmFsT2JqZWN0KTsKIH0KIAotaW5saW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NB
Y2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAo
YWxsb3dzQWNjZXNzRnJvbVByaXZhdGUob3RoZXIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBwcmludEVycm9yTWVzc2FnZShjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShvdGhlcikp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjph
bGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIGlmIChh
bGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBwcmludEVycm9yTWVzc2FnZShjcm9zc0RvbWFpbkFjY2Vz
c0Vycm9yTWVzc2FnZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0gICAgCi1pbmxpbmUgYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vz
c0Zyb21Ob0Vycm9yTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKLX0KLSAgICAKLWlubGluZSBib29sIEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJv
bShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAotewotICAgIGlm
IChhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBtZXNzYWdlID0gY3Jvc3NEb21haW5BY2Nlc3NFcnJv
ck1lc3NhZ2UoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0gICAgCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nl
c3NGcm9tUHJpdmF0ZShjb25zdCBKU0dsb2JhbE9iamVjdCogb3RoZXIpIGNvbnN0Ci17Ci0gICAg
Y29uc3QgSlNET01XaW5kb3cqIG9yaWdpbldpbmRvdyA9IGFzSlNET01XaW5kb3cob3RoZXIpOwot
ICAgIGNvbnN0IEpTRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBtX3NoZWxsLT53aW5kb3coKTsK
LQotICAgIGlmIChvcmlnaW5XaW5kb3cgPT0gdGFyZ2V0V2luZG93KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW5TZWN1cml0eU9yaWdpbiA9
IG9yaWdpbldpbmRvdy0+aW1wbCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwotICAg
IGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRTZWN1cml0eU9yaWdpbiA9IHRhcmdldFdpbmRv
dy0+aW1wbCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwotCi0gICAgcmV0dXJuIG9y
aWdpblNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3ModGFyZ2V0U2VjdXJpdHlPcmlnaW4pOwotfQot
CiB9CiAKICNlbmRpZiAvLyBKU0RPTVdpbmRvd0N1c3RvbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggYjIz
Nzc0NDc0YmM4MDM3M2FmYTQ4MTM2YzU5ODIwMzg2NTM0NTNlZS4uZTYzZjQ5NzRjZTc3MjA0MDU2
YmNlNGI4NzU2OWZmZjIxNDljMTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMzYsNiArMzYsNyBAQAog
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJCaW5kaW5n
U2VjdXJpdHkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgpAQCAtODUsNyArODYsNyBA
QCBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICBKU0RPTVdpbmRvdyogaW5zcGVjdGVkV2luZG93
ID0gdG9KU0RPTVdpbmRvdyhzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAg
ICBpZiAoIWluc3BlY3RlZFdpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBpbnNwZWN0ZWRXaW5kb3ctPmFsbG93c0FjY2Vzc0Zyb21Ob0Vycm9yTWVzc2FnZShzY3JpcHRT
dGF0ZSk7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RP
TVdpbmRvdyhzY3JpcHRTdGF0ZSwgaW5zcGVjdGVkV2luZG93LT5pbXBsKCksIERvTm90UmVwb3J0
U2VjdXJpdHlFcnJvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggMWE1MWI4MWEy
ZTc4MGVmMTIzMGQyNzg3YzQxMWE4YTdhNzkxNWVhZS4uYzFjMTk4ZDY1YmI0NDNhYTBiMWFjNTUz
MjliZGRiMjViZThkYThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9X
ZWJTY3JpcHRPYmplY3QubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogCisjaW1wb3J0ICJCaW5kaW5nU2Vj
dXJpdHkuaCIKICNpbXBvcnQgIkJyaWRnZUpTQy5oIgogI2ltcG9ydCAiQ29uc29sZS5oIgogI2lt
cG9ydCAiRE9NSW50ZXJuYWwuaCIKQEAgLTI0MSw3ICsyNDIsMTEgQEAgc3RhdGljIHZvaWQgX2Rp
ZEV4ZWN1dGUoV2ViU2NyaXB0T2JqZWN0ICpvYmopCiAgICAgaWYgKCFfcHJpdmF0ZS0+b3JpZ2lu
Um9vdE9iamVjdC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4ganNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHJvb3QtPmdsb2JhbE9iamVjdCgpKS0+YWxsb3dz
QWNjZXNzRnJvbShfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIC8vIEl0J3Mgbm90IGFjdHVhbGx5IGNvcnJlY3QgdG8gY2FsbCBzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUgaW4gdGhpcyB3YXkgYmVjYXVzZQorICAgIC8vIEpTRE9NV2luZG93QmFzZSogaXNu
J3QgdGhlIHJpZ2h0IG9iamVjdCB0byByZXByZXNlbnQgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcK
KyAgICAvLyBKYXZhU2NyaXB0LiBJbnN0ZWFkLCB3ZSBzaG91bGQgdXNlIEV4ZWNTdGF0ZSwgbGlr
ZSB3ZSBkbyBlbHNld2hlcmUuCisgICAgSlNET01XaW5kb3dCYXNlKiB0YXJnZXQgPSBqc0Nhc3Q8
SlNET01XaW5kb3dCYXNlKj4ocm9vdC0+Z2xvYmFsT2JqZWN0KCkpOworICAgIHJldHVybiBCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coX3ByaXZhdGUtPm9yaWdp
blJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHRhcmdldC0+aW1wbCgp
KTsKIH0KIAogLSAob25ld2F5IHZvaWQpcmVsZWFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0NDgwNTc1YTcwNDI4Y2Zh
YjY0M2QyMGJiYzJhM2RlYWFiYzNjZmYyLi45OTdiZTQxMzdkMmMxOTQ0NDIyYzhkMDNhYWZmZGU3
NzVjY2JlZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDc1LDcgKzQ3NSw4IEBAIHN1YiBHZW5lcmF0ZUdldE93blBy
b3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICBteSBAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1w
bCA9ICgpOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1Nl
Y3VyaXR5In0pIHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXRoaXNPYmplY3QtPmFs
bG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkJp
bmRpbmdTZWN1cml0eS5oIn0gPSAxOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhl
YywganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+aW1wbCgpKSlcbiIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91
bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpKSlc
biIpOwogICAgICAgICB9CkBAIC0xNzY4LDcgKzE3NjksOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDaGVja1NlY3VyaXR5In0gJiYKICAgICAgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9ICYm
CiAgICAgICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciJ9KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+YWxsb3dzQWNj
ZXNzRnJvbShleGVjKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJC
aW5kaW5nU2VjdXJpdHkuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsK
ICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4ODMsNyArMTg4NSw4IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtj
bGFzc05hbWV9KiBkb21PYmplY3QgPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RC
YXNlKSk7XG4iKTsKIAogICAgICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFkb21PYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykp
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siQmluZGluZ1NlY3VyaXR5
LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGRv
bU9iamVjdC0+aW1wbCgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAg
ICB9CiAKQEAgLTE5NTgsNyArMTk2MSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghanNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShl
eGVjKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siQmluZGluZ1NlY3VyaXR5LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRo
aXNPYmplY3QpLT5pbXBsKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShleGVjLCBqc0Nhc3Q8
JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCktPmZyYW1lKCkpKVxuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIwODcsNyArMjA5MSw4IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCFqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5hbGxv
d3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJCaW5kaW5nU2VjdXJpdHkuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCkt
PmltcGwoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKS0+
ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjE5NCw3ICsyMTk5LDgg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgIGlmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAg
ICAgICAgICAgICAgICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIp
OworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJCaW5kaW5nU2VjdXJpdHkuaCJ9
ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVk
VGhpcy0+aW1wbCgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5l
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dApp
bmRleCBmNzA2NmU2MTkyODQ0ZDY0ZjYzMmU5NDJlYmMzZTY1ODA2Zjg5MWUzLi4yZTM3NzU3NjZh
N2E1NmVkYjBmZWVjNTFiMjQ1YTEyOWYyODQ0MmM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1hZGRF
dmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVy
LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEph
dmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNv
dXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5o
dG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKLUNPTlNPTEUg
TUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBV
UkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1p
ZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2st
YWRkRXZlbnRMaXN0ZW5lci5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3Qg
bWF0Y2guCi0KIFRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExp
c3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRoZSB0
YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBh
c3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2Yg
ImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBs
b2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQKaW5kZXggY2Vm
OTRhNGIxMmU2ZjhkODFlMzc2M2UzMjI2NjZmMTM4YWY2M2FlMS4uNDZmMTk5YWI1Y2U2NzcyMDc5
ZGVhNTIyNDVhNjI2M2FmM2EyODBjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIv
eHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsx
LDUgQEAKIENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJn
ZXROb2RlLW9uY2xpY2stc2hvcnRjdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0
cyBtdXN0IG1hdGNoLgogCi1DT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVt
cHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENo
aWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29s
cyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQogVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hl
biBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIEV2ZW50VGFyZ2V0IHdpdGggdGhlIHNob3J0
Y3V0IChvbmNsaWNrLCBldGMpLCBpcyB0aGUgdGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3By
b2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVy
dCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5z
YWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgogCiAgIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mt
WE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVu
dExpc3RlbmVyLWV4cGVjdGVkLnR4dAppbmRleCA0Y2FjYmQ3OGY5MGYzZTFmZWFjNjAwMGU0NzEz
ZjAyYTMwMmM5M2M1Li5jYzA2YzVjNWZlMTM2NzY4MjhmOGY5NzM2MWY3NTBmYzMxMzE5MTZmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1Y
TUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRF
dmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FH
RTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUu
aHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9s
aXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0
ZW5lci5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKLUNP
TlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUg
d2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1m
cmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3Qt
YWRkRXZlbnRMaXN0ZW5lci5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3Qg
bWF0Y2guCi0KIFRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExp
c3RlbmVycyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB1c2luZyBhZGRFdmVudExpc3RlbmVyLCBpcyB0
aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBh
c3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2Yg
ImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBs
b2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1Y
TUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBlY3RlZC50eHQKaW5kZXggZGQyMTZjZjBiYWM4NTRj
NjJjOTE1NjIwMjZkMTYyNTllMGM2NDQ2Zi4uZGFjMDk3YWM4YzQwOGE1NGVlOWUyN2M3YmU5YTQ1
NzAxYzI2MDM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9s
aXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0
LXNob3J0Y3V0LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FHRTog
VW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRt
bCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0
ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRtbC4g
RG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCi1DT05TT0xFIE1FU1NB
R0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1l
Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
bGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0
bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQogVGhpcyB0ZXN0
cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0
dHBSZXF1ZXN0IHdpdGggdGhlIHNob3J0Y3V0IChvbnJlYWR5c3RhdGVjaGFuZ2UpLCBpcyB0aGUg
cmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3Nl
cyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxv
Y2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dn
ZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIv
eHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CmluZGV4IDEy
YzJkZjgyMjAyODdhZTNhZTQxMjZhN2UzYTA0OTFhMDljOTVkNDEuLjlhZjc0NDgwYzNlYzhlNjc4
MTE0MjVmYzlmMjc5OTY5MTgzNzkxN2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVu
ZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CkBAIC0x
LDcgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRv
IGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13
aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBh
bmQgcG9ydHMgbXVzdCBtYXRjaC4KIAotQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlw
dCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0
aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90
YXJnZXRDaGlsZC13aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLmh0bWwuIERvbWFpbnMs
IHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQogVGhpcyB0ZXN0cyB0aGF0IGZyYW1l
IHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRoZSB3aW5kb3cgdXNpbmcgYWRk
RXZlbnRMaXN0ZW5lciBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2
MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3
aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNj
cmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25j
bGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQKaW5k
ZXggYWM2ODg1MWE2YzNkMjc2ZjlhOWZjYjNlMmEyMTIwZjMxNzg1Nzc1ZC4uMTI2NTU5ZTMyMmFm
ODAxMjU5YWJjMTQ5NDc5NDMwNjRlMTU0N2QwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIv
eHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAK
IENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJh
bWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9z
cy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtd2luZG93LW9uY2xp
Y2stc2hvcnRjdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNo
LgogCi1DT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNz
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLXdpbmRvdy1v
bmNsaWNrLXNob3J0Y3V0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBt
YXRjaC4KLQogVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlz
dGVuZXJzIG9uIHRoZSB3aW5kb3cgd2l0aCB0aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIGlz
IHRoZSB3aW5kb3cncyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3Qg
cGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBv
ZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlz
IGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAogICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159577</attachid>
            <date>2012-08-20 17:50:05 -0700</date>
            <delta_ts>2012-09-02 00:55:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93407-20120820174926.patch</filename>
            <type>text/plain</type>
            <size>35571</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc3ZTc4YWNlNTMxOGMz
NjhhYjM2ZmU3ZmM3YWFiYzk5NmZlMTQ2MC4uM2JlNjk3ZWYyM2Y0M2E1YTQxYWI4OTBlNmI0MDRl
ODI1YjYwOTY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA4LTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IEpTRE9NV2lu
ZG93Kjo6YWxsb3dzQWNjZXNzRnJvbSogaW4gdGVybXMgb2YgQmluZGluZ1NlY3VyaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVt
b3ZlcyBhbGxvd3NBY2Nlc3NGcm9tIGFuZCBpbXBsZW1lbnRzIHRoZSBzZWN1cml0eSBjaGVja3MK
KyAgICAgICAgaW4gdGVybXMgb2Ygc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyBkaXJlY3Rs
eS4KKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdp
bmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0Jp
bmRpbmdTZWN1cml0eS5oOgorICAgICAgICAoQmluZGluZ1NlY3VyaXR5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWxsb3dBY2Nlc3NG
cm9tKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oOgorICAgICAgICAoSlNET01XaW5kb3dCYXNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuYW1lZEl0ZW1H
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93OjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0
TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5k
b3cpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAg
ICAoLVtXZWJTY3JpcHRPYmplY3QgX2lzU2FmZVNjcmlwdF0pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3JCb2R5KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
CiAyMDEyLTA4LTIwICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Q1NQIDEuMTogVGhlICdwbHVnaW4tdHlwZXMnIHdhcm5pbmcgc2hvdWxkIGluY2x1ZGUgZGV0YWls
cyBhYm91dCBleHBsaWNpdCB0eXBlIGRlY2xhcmF0aW9uIHdoZW4gcmVsZXZhbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5jcHAKaW5k
ZXggOGRkZTY4NWI1NTc5ZWQxM2JkNTE1MGVlMjAyNmFkOWVmYTk0YjdhMy4uODVkYjMxZTI1N2Iy
MzI1ZDMxNzE5NWVlZWIwMDk4ODU5YzAyNWExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5LmNwcApAQCAtNjAsNiArNjAsMTEgQEAg
c3RhdGljIGJvb2wgY2FuQWNjZXNzRG9jdW1lbnQoQmluZGluZ1N0YXRlKiBzdGF0ZSwgRG9jdW1l
bnQqIHRhcmdldERvY3VtZW50LCBTZWMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KEJpbmRpbmdTdGF0ZSog
c3RhdGUsIERPTVdpbmRvdyogdGFyZ2V0LCBTZWN1cml0eVJlcG9ydGluZ09wdGlvbiByZXBvcnRp
bmdPcHRpb24pCit7CisgICAgcmV0dXJuIHRhcmdldCAmJiBjYW5BY2Nlc3NEb2N1bWVudChzdGF0
ZSwgdGFyZ2V0LT5kb2N1bWVudCgpLCByZXBvcnRpbmdPcHRpb24pOworfQorCiBib29sIEJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZSogc3RhdGUs
IEZyYW1lKiB0YXJnZXQsIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHJlcG9ydGluZ09wdGlvbikK
IHsKICAgICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50KHN0YXRlLCB0YXJnZXQt
PmRvY3VtZW50KCksIHJlcG9ydGluZ09wdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuaAppbmRleCA5OWQ3ZjAwOTc3MTFjNDA3MzAx
MGFmOGRiNWFmZjc2ODM4NDMzOGU3Li5lZWExNjY4ZDE2ODBlZjNlYjVjYmYwOTE0OTllODZhNzg2
ZGI4ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRp
bmdTZWN1cml0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGlu
Z1NlY3VyaXR5LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51bSBTZWN1cml0eVJlcG9ydGluZ09wdGlv
biB7CiBjbGFzcyBCaW5kaW5nU2VjdXJpdHkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNo
b3VsZEFsbG93QWNjZXNzVG9Ob2RlKEJpbmRpbmdTdGF0ZSosIE5vZGUqKTsKKyAgICBzdGF0aWMg
Ym9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KEJpbmRpbmdTdGF0ZSosIERPTVdpbmRv
dyosIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uID0gUmVwb3J0U2VjdXJpdHlFcnJvcik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZSosIEZyYW1l
KiwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKTsKICAgICBz
dGF0aWMgYm9vbCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChCaW5kaW5nU3Rh
dGUqLCBIVE1MRnJhbWVFbGVtZW50QmFzZSosIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDNhZDdjMzI4
NDZkMWUyNzYwYWExNmZiOGQ5OTdmYjc3MjRkNDM0ZTguLjY1NTFkNjY4N2RmZjgyOGU5NTRiYzJj
ZjFmNGFhNmM4ZmEyNDY1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcApAQCAtMjEyLDkgKzIxMiw5IEBAIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb05v
ZGUoRXhlY1N0YXRlKiBleGVjLCBOb2RlKiBub2RlKQogICAgIHJldHVybiBCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKGV4ZWMsIG5vZGUpOwogfQogCi1ib29sIHNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSkKK2Jvb2wg
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUqIHRhcmdldCkK
IHsKLSAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
ZXhlYywgZnJhbWUpOworICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShleGVjLCB0YXJnZXQpOwogfQogCiBib29sIHNob3VsZEFsbG93QWNjZXNzVG9G
cmFtZShFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQpAQCAt
MjI3LDYgKzIyNywxNiBAQCBib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3RhdGUq
IGV4ZWMsIEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK2Jvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMs
IERPTVdpbmRvdyogdGFyZ2V0LCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCF0YXJnZXQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIHJlc3VsdCA9IEJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0YXJnZXQsIERvTm90UmVwb3J0
U2VjdXJpdHlFcnJvcik7CisgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgbGluZSBvZiBjb2Rl
IHNob3VsZCBtb3ZlIHNvbWV3aGVyZSB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgd2l0aCBpbW1lZGlh
dGVseVJlcG9ydFVuc2FmZUFjY2Vzc1RvLgorICAgIG1lc3NhZ2UgPSB0YXJnZXQtPmNyb3NzRG9t
YWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZURPTVdpbmRvdyhleGVjKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdm9pZCBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDFjODcxNmUyOTNjNTVmMzE5N2Zj
YTE3NWQ0NTU1YzYwY2NjNjhjY2EuLjBjM2Q1Mzc0ODFiZWEyYTk5Yzk4MzUzYzE0ZDZlMTZmMDAy
NDQ5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC00
MDEsMTEgKzQwMSwxMCBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsb3dBY2Nl
c3NUb0NvbnRleHQoSlNDOjpFeGVjU3RhdGUqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAg
ICAgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsK
ICAgICBib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1l
Kik7CiAgICAgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBG
cmFtZSosIFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KEpTQzo6RXhlY1N0YXRlKiwgRE9NV2luZG93Kik7CisgICAgYm9vbCBz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KEJpbmRpbmdTdGF0ZSosIERPTVdpbmRvdyosIFN0
cmluZyYgbWVzc2FnZSk7CiAKICAgICB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJh
bWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIEpTQzo6SlNWYWx1ZSBvYmplY3RUb1N0
cmluZ0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAppbmRleCA0MjE5ZjBjMWQzNGMxMzBjYmU5Y2Q2NzlkNDM2MjI5Nzk1MDIyMGYzLi5k
OTNkNzQ2ZGE2NDkyYjVjNDc3ZGNlZTQwYzcwNWFkMWJhMGJlZGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKIAorI2lu
Y2x1ZGUgIkJpbmRpbmdTZWN1cml0eS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTQyLDkgKzQzLDE0IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wg
c2hvdWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBhc0pTRE9NV2luZG93KHRoaXNPYmplY3QpLT5pbXBs
KCkpOworfQorCiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJX
aW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0RPTVdpbmRvd0Jhc2UpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0Fj
Y2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkIH07Citj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxvd0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2Zp
bGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZq
YXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkIH07CiAKIEpTRE9NV2luZG93QmFzZTo6SlNET01X
aW5kb3dCYXNlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsKQog
ICAgIDogSlNET01HbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBzaGVsbC0+d29y
bGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCkBAIC04Myw0MSArODksMTEgQEAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogSlNET01XaW5kb3dCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT5kb2N1bWVudCgpOwogfQogCi1TdHJpbmcg
SlNET01XaW5kb3dCYXNlOjpjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShjb25zdCBKU0ds
b2JhbE9iamVjdCogb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hlbGwtPndpbmRvdygp
LT5pbXBsKCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFzSlNET01XaW5kb3cob3Ro
ZXIpLT5pbXBsKCkpOwotfQotCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6cHJpbnRFcnJvck1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAogewogICAgIHByaW50RXJyb3JNZXNzYWdl
Rm9yRnJhbWUoaW1wbCgpLT5mcmFtZSgpLCBtZXNzYWdlKTsKIH0KIAotLy8gVGhpcyBtZXRob2Qg
Y2hlY2tzIHdoZXRoZXIgYWNjZXNzcyB0byAqdGhpcyogZ2xvYmFsIG9iamVjdCBpcyBwZXJtaXR0
ZWQgZnJvbQotLy8gdGhlIGdpdmVuIGNvbnRleHQ7IHRoaXMgZGlmZmVycyBmcm9tIGFsbG93c0Fj
Y2Vzc0Zyb21Qcml2YXRlLCBzaW5jZSB0aGF0Ci0vLyBtZXRob2QgY2hlY2tzIHdoZXRoZXIgdGhl
IGdpdmVuIGNvbnRleHQgaXMgcGVybWl0dGVkIHRvIGFjY2VzcyB0aGUgY3VycmVudAotLy8gd2lu
ZG93IHRoZSBzaGVsbCBpcyByZWZlcmVuY2luZyAod2hpY2ggbWF5IGNvbWUgZnJvbSBhIGRpZmZl
cmVudCBzZWN1cml0eQotLy8gb3JpZ2luIHRvIHRoaXMgZ2xvYmFsIG9iamVjdCkuCi1ib29sIEpT
RE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbShjb25zdCBKU0dsb2JhbE9iamVjdCogdGhp
c09iamVjdCwgRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsT2JqZWN0KiBvdGhlck9i
amVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLQotICAgIGNvbnN0IEpTRE9NV2lu
ZG93KiBvcmlnaW5XaW5kb3cgPSBhc0pTRE9NV2luZG93KG90aGVyT2JqZWN0KTsKLSAgICBjb25z
dCBKU0RPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0gYXNKU0RPTVdpbmRvdyh0aGlzT2JqZWN0KTsK
LQotICAgIGlmIChvcmlnaW5XaW5kb3cgPT0gdGFyZ2V0V2luZG93KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW5TZWN1cml0eU9yaWdpbiA9
IG9yaWdpbldpbmRvdy0+aW1wbCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwotICAg
IGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRTZWN1cml0eU9yaWdpbiA9IHRhcmdldFdpbmRv
dy0+aW1wbCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwotCi0gICAgaWYgKG9yaWdp
blNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3ModGFyZ2V0U2VjdXJpdHlPcmlnaW4pKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIHRhcmdldFdpbmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UodGFy
Z2V0V2luZG93LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShvdGhlck9iamVjdCkpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJv
ZmlsaW5nKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAjaWYgIUVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKSB8fCAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKaW5kZXggYzFkZjE0ZTYyN2VjOWE0MDUwMGNm
MjQ0MjVlNjU0NzJmYTA2ZjYyNS4uMDJlZjQzZDJkYzRiZTMzMGUyMTg0MzI1Mjc2MTcwYTU1MTVi
MjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgK
QEAgLTY0LDE2ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAg
ICAgICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGphdmFTY3JpcHRFeHBlcmltZW50c0Vu
YWJsZWQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgICAgICBzdGF0aWMgYm9vbCBh
bGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSopOwotICAgICAgICAKLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0
YXRlKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbU5vRXJyb3JNZXNzYWdl
KEpTQzo6RXhlY1N0YXRlKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShK
U0M6OkV4ZWNTdGF0ZSosIFN0cmluZyYgbWVzc2FnZSkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJp
bnRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICAgICAgLy8gRG9uJ3Qg
Y2FsbCB0aGlzIHZlcnNpb24gb2YgYWxsb3dzQWNjZXNzRnJvbSAtLSBpdCdzIGEgc2xpZ2h0bHkg
aW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIHVzZWQgb25seSBieSBXZWJTY3JpcHRPYmplY3QKLSAg
ICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKSBj
b25zdDsKLSAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0b1RoaXNPYmpl
Y3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSopOwogICAgICAgICBKU0RPTVdpbmRvd1No
ZWxsKiBzaGVsbCgpIGNvbnN0OwogCkBAIC04Miw5ICs3NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX2ltcGw7CiAgICAg
ICAgIEpTRE9NV2luZG93U2hlbGwqIG1fc2hlbGw7Ci0KLSAgICAgICAgYm9vbCBhbGxvd3NBY2Nl
c3NGcm9tUHJpdmF0ZShjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgICAg
IFN0cmluZyBjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CiAgICAgfTsKIAogICAgIC8vIFJldHVybnMgYSBKU0RPTVdpbmRvdyBv
ciBqc051bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCmluZGV4IDJkNzVhYzA4Y2I3YTg1ZmMwNDlhZTRiN2VlM2YwMzY0MDhhNDQxMGMu
LjM5YmVhZTVkYWJiOTNmZGM2MjY1NTQ0N2E5OWIyMDI4Zjk3YjhjZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5o
IgogCisjaW5jbHVkZSAiQmluZGluZ1NlY3VyaXR5LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgpAQCAt
MTEyLDcgKzExMyw3IEBAIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSBwCiAgICAgSlNET01XaW5kb3dC
YXNlKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsK
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqLT5pbXBsKCktPmZyYW1lKCktPmRvY3Vt
ZW50KCk7CiAKLSAgICBBU1NFUlQodGhpc09iai0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSk7Cisg
ICAgQVNTRVJUKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCB0aGlzT2JqLT5pbXBsKCkpKTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VS
VChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSk7CiAKQEAgLTE1OCw3ICsxNTksNyBAQCBib29s
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIC8vIGJlY2F1c2Ugd2UgYWx3YXlzIGFsbG93IGFjY2Vz
cyB0byBzb21lIGZ1bmN0aW9uLCBqdXN0IGRpZmZlcmVudCBvbmVzIGRlcGVuZGluZyB3aGV0aGVy
IGFjY2VzcwogICAgIC8vIGlzIGFsbG93ZWQuCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAg
ICBib29sIGFsbG93c0FjY2VzcyA9IHRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYywg
ZXJyb3JNZXNzYWdlKTsKKyAgICBib29sIGFsbG93c0FjY2VzcyA9IHNob3VsZEFsbG93QWNjZXNz
VG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpLCBlcnJvck1lc3NhZ2UpOwogCiAg
ICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29raW5nIGF0IGFueSBvZiBvdXIgb3du
IHByb3BlcnRpZXMsIGJ1dCBpZ25vcmUgb3ZlcnJpZGVzIGNvbXBsZXRlbHkKICAgICAvLyBpZiB0
aGlzIGlzIGNyb3NzLWRvbWFpbiBhY2Nlc3MuCkBAIC0xNjYsNyArMTY3LDcgQEAgYm9vbCBKU0RP
TVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBXZSBuZWVkIHRo
aXMgY29kZSBoZXJlIGJlY2F1c2Ugb3RoZXJ3aXNlIEpTRE9NV2luZG93QmFzZSB3aWxsIHN0b3Ag
dGhlIHNlYXJjaCBiZWZvcmUgd2UgZXZlbiBnZXQgdG8gdGhlCi0gICAgLy8gcHJvdG90eXBlIGR1
ZSB0byB0aGUgYmxhbmtldCBzYW1lIG9yaWdpbiAoYWxsb3dzQWNjZXNzRnJvbSkgY2hlY2sgYXQg
dGhlIGVuZCBvZiBnZXRPd25Qcm9wZXJ0eVNsb3QuCisgICAgLy8gcHJvdG90eXBlIGR1ZSB0byB0
aGUgYmxhbmtldCBzYW1lIG9yaWdpbiAoc2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdykgY2hl
Y2sgYXQgdGhlIGVuZCBvZiBnZXRPd25Qcm9wZXJ0eVNsb3QuCiAgICAgLy8gQWxzbywgaXQncyBp
bXBvcnRhbnQgdG8gZ2V0IHRoZSBpbXBsZW1lbnRhdGlvbiBzdHJhaWdodCBvdXQgb2YgdGhlIERP
TVdpbmRvdyBwcm90b3R5cGUgcmVnYXJkbGVzcyBvZgogICAgIC8vIHdoYXQgcHJvdG90eXBlIGlz
IGFjdHVhbGx5IHNldCBvbiB0aGlzIG9iamVjdC4KICAgICBlbnRyeSA9IEpTRE9NV2luZG93UHJv
dG90eXBlOjpzX2luZm8ucHJvcEhhc2hUYWJsZShleGVjKS0+ZW50cnkoZXhlYywgcHJvcGVydHlO
YW1lKTsKQEAgLTI3Miw3ICsyNzMsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcgogewogICAg
IEpTRE9NV2luZG93KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsK
ICAgICAvLyBOZXZlciBhbGxvdyBjcm9zcy1kb21haW4gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNP
YmplY3QtPmltcGwoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IEhhc2hF
bnRyeSogZW50cnk7CkBAIC0zNDksNyArMzUwLDcgQEAgdm9pZCBKU0RPTVdpbmRvdzo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAog
CiAgICAgLy8gT3B0aW1pemF0aW9uOiBhY2Nlc3MgSmF2YVNjcmlwdCBnbG9iYWwgdmFyaWFibGVz
IGRpcmVjdGx5IGJlZm9yZSBpbnZvbHZpbmcgdGhlIERPTS4KICAgICBpZiAodGhpc09iamVjdC0+
SlNHbG9iYWxPYmplY3Q6Omhhc093blByb3BlcnR5Rm9yV3JpdGUoZXhlYywgcHJvcGVydHlOYW1l
KSkgewotICAgICAgICBpZiAodGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAg
ICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhl
eGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6OnB1
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTM1Nyw3ICszNTgsNyBAQCB2b2lkIEpTRE9NV2luZG93OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
CiAgICAgaWYgKGxvb2t1cFB1dDxKU0RPTVdpbmRvdz4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyksIHRoaXNPYmplY3QpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAodGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICBp
ZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRo
aXNPYmplY3QtPmltcGwoKSkpCiAgICAgICAgIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIApAQCAtMzY1LDcgKzM2Niw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihjZWxsKTsKICAgICAvLyBPbmx5IGFsbG93IGRlbGV0aW5nIHByb3Bl
cnRpZXMgYnkgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KLSAgICBpZiAoIXRoaXNPYmplY3Qt
PmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpCisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgdGhpc09iamVjdC0+aW1wbCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQpAQCAtMzc0LDcgKzM3NSw3IEBAIHZvaWQgSlNE
T01XaW5kb3c6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBl
bnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2Jq
ZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtMzgzLDcgKzM4NCw3IEBAIHZvaWQgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0CiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgdGhlIHdpbmRvdyB0byBl
bnVtZXJhdGVkIGJ5IGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgaWYgKCF0aGlzT2Jq
ZWN0LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQorICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQpAQCAtMzkyLDcgKzM5Myw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OmRlZmluZU93blByb3BlcnR5KEpTQzo6SlNPYmplY3QqIG9iamVjdCwgSlND
OjpFeGVjU3RhdGUqIGV4ZWMsCiB7CiAgICAgSlNET01XaW5kb3cqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNET01XaW5kb3cqPihvYmplY3QpOwogICAgIC8vIE9ubHkgYWxsb3cgZGVmaW5pbmcgcHJv
cGVydGllcyBpbiB0aGlzIHdheSBieSBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLCBhcyBpdCBh
bGxvd3Mgc2V0dGVycyB0byBiZSBpbnRyb2R1Y2VkLgotICAgIGlmICghdGhpc09iamVjdC0+YWxs
b3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5pbXBsKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAvLyBEb24ndCBhbGxvdyBzaGFkb3dpbmcgbG9jYXRpb24gdXNp
bmcgYWNjZXNzb3IgcHJvcGVydGllcy4KQEAgLTQxMiw3ICs0MTMsNyBAQCB2b2lkIEpTRE9NV2lu
ZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgaWYg
KEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZURPTVdpbmRvdyhleGVjKS0+ZnJhbWUoKSkgewog
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkp
IHsKICAgICAgICAgICAgIGlmIChzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKKyAgICAgICAgICAgICAgICBp
ZiAoQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGlt
cGwoKSkpCiAgICAgICAgICAgICAgICAgICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IElkZW50aWZpZXIoZXhlYywgImxvY2F0aW9uIiksIHZhbHVlKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uaAppbmRleCBhYjU2M2JmMDNjODZlMTdlNTcxYmE0NDQyNjk5ZTczM2E1
MWM2OWEzLi43NzU0NmIwMTQ3MmQ2Mjg4NjI1M2Y3NjdiNDQxM2Y1N2M3ZjRmOTZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKQEAgLTM2LDQ5
ICszNiw2IEBAIGlubGluZSBjb25zdCBKU0RPTVdpbmRvdyogYXNKU0RPTVdpbmRvdyhjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAotaW5saW5lIGJvb2wgSlNE
T01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBvdGhl
cikgY29uc3QKLXsKLSAgICBpZiAoYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUob3RoZXIpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBwcmludEVycm9yTWVzc2FnZShjcm9zc0RvbWFpbkFjY2Vz
c0Vycm9yTWVzc2FnZShvdGhlcikpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJv
b2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKiBleGVj
KSBjb25zdAotewotICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBwcmludEVycm9yTWVz
c2FnZShjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0gICAgCi1pbmxpbmUgYm9vbCBKU0RPTVdp
bmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb21Ob0Vycm9yTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKLXsKLSAgICByZXR1cm4gYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLX0KLSAgICAKLWlubGluZSBib29sIEpTRE9NV2luZG93
QmFzZTo6YWxsb3dzQWNjZXNzRnJvbShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nJiBtZXNz
YWdlKSBjb25zdAotewotICAgIGlmIChhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBtZXNzYWdlID0g
Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0gICAgCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNET01X
aW5kb3dCYXNlOjphbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZShjb25zdCBKU0dsb2JhbE9iamVjdCog
b3RoZXIpIGNvbnN0Ci17Ci0gICAgY29uc3QgSlNET01XaW5kb3cqIG9yaWdpbldpbmRvdyA9IGFz
SlNET01XaW5kb3cob3RoZXIpOwotICAgIGNvbnN0IEpTRE9NV2luZG93KiB0YXJnZXRXaW5kb3cg
PSBtX3NoZWxsLT53aW5kb3coKTsKLQotICAgIGlmIChvcmlnaW5XaW5kb3cgPT0gdGFyZ2V0V2lu
ZG93KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW5TZWN1cml0eU9yaWdpbiA9IG9yaWdpbldpbmRvdy0+aW1wbCgpLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpOwotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRTZWN1cml0
eU9yaWdpbiA9IHRhcmdldFdpbmRvdy0+aW1wbCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpOwotCi0gICAgcmV0dXJuIG9yaWdpblNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3ModGFyZ2V0
U2VjdXJpdHlPcmlnaW4pOwotfQotCiB9CiAKICNlbmRpZiAvLyBKU0RPTVdpbmRvd0N1c3RvbV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKaW5kZXggYjIzNzc0NDc0YmM4MDM3M2FmYTQ4MTM2YzU5ODIwMzg2NTM0NTNl
ZS4uZTYzZjQ5NzRjZTc3MjA0MDU2YmNlNGI4NzU2OWZmZjIxNDljMTE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgi
CiAKKyNpbmNsdWRlICJCaW5kaW5nU2VjdXJpdHkuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3Rv
bS5oIgpAQCAtODUsNyArODYsNyBAQCBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNj
ZXNzSW5zcGVjdGVkV2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKICAgICBKU0RPTVdp
bmRvdyogaW5zcGVjdGVkV2luZG93ID0gdG9KU0RPTVdpbmRvdyhzY3JpcHRTdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBpbnNwZWN0ZWRXaW5kb3ctPmFsbG93c0FjY2Vzc0Zyb21O
b0Vycm9yTWVzc2FnZShzY3JpcHRTdGF0ZSk7CisgICAgcmV0dXJuIEJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzY3JpcHRTdGF0ZSwgaW5zcGVjdGVkV2luZG93
LT5pbXBsKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KaW5kZXggMWE1MWI4MWEyZTc4MGVmMTIzMGQyNzg3YzQxMWE4YTdhNzkxNWVhZS4uYzFj
MTk4ZDY1YmI0NDNhYTBiMWFjNTUzMjliZGRiMjViZThkYThlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgog
CisjaW1wb3J0ICJCaW5kaW5nU2VjdXJpdHkuaCIKICNpbXBvcnQgIkJyaWRnZUpTQy5oIgogI2lt
cG9ydCAiQ29uc29sZS5oIgogI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKQEAgLTI0MSw3ICsyNDIs
MTEgQEAgc3RhdGljIHZvaWQgX2RpZEV4ZWN1dGUoV2ViU2NyaXB0T2JqZWN0ICpvYmopCiAgICAg
aWYgKCFfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVjdC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHJvb3QtPmds
b2JhbE9iamVjdCgpKS0+YWxsb3dzQWNjZXNzRnJvbShfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpOworICAgIC8vIEl0J3Mgbm90IGFjdHVhbGx5IGNvcnJlY3QgdG8g
Y2FsbCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUgaW4gdGhpcyB3YXkgYmVjYXVzZQorICAgIC8v
IEpTRE9NV2luZG93QmFzZSogaXNuJ3QgdGhlIHJpZ2h0IG9iamVjdCB0byByZXByZXNlbnQgdGhl
IGN1cnJlbnRseSBleGVjdXRpbmcKKyAgICAvLyBKYXZhU2NyaXB0LiBJbnN0ZWFkLCB3ZSBzaG91
bGQgdXNlIEV4ZWNTdGF0ZSwgbGlrZSB3ZSBkbyBlbHNld2hlcmUuCisgICAgSlNET01XaW5kb3dC
YXNlKiB0YXJnZXQgPSBqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4ocm9vdC0+Z2xvYmFsT2JqZWN0
KCkpOworICAgIHJldHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01X
aW5kb3coX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxF
eGVjKCksIHRhcmdldC0+aW1wbCgpKTsKIH0KIAogLSAob25ld2F5IHZvaWQpcmVsZWFzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA0NDgwNTc1YTcwNDI4Y2ZhYjY0M2QyMGJiYzJhM2RlYWFiYzNjZmYyLi45OTdiZTQxMzdk
MmMxOTQ0NDIyYzhkMDNhYWZmZGU3NzVjY2JlZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDc1LDcgKzQ3NSw4IEBA
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKICAgICBteSBAZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9ySW1wbCA9ICgpOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKKyAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkJpbmRpbmdTZWN1cml0eS5oIn0gPSAxOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9ET01XaW5kb3coZXhlYywganNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0KS0+
aW1wbCgpKSlcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoZXhlYywgdGhpc09iamVj
dC0+aW1wbCgpLT5mcmFtZSgpKSlcbiIpOwogICAgICAgICB9CkBAIC0xNzY4LDcgKzE3NjksOCBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gJiYKICAgICAgICAgICAg
ICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRv
Tm90Q2hlY2tTZWN1cml0eSJ9ICYmCiAgICAgICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRl
ciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgh
Y2FzdGVkVGhpcy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOworICAgICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJCaW5kaW5nU2VjdXJpdHkuaCJ9ID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNo
b3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIp
OwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4ODMsNyArMTg4
NSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiBkb21PYmplY3QgPSBqc0Nhc3Q8JGNsYXNz
TmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKIAogICAgICAgICAgICAgICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFkb21PYmplY3QtPmFs
bG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siQmluZGluZ1NlY3VyaXR5LmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRE9NV2luZG93KGV4ZWMsIGRvbU9iamVjdC0+aW1wbCgpKSlcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTE5NTgsNyArMTk2MSw4IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9ICYmICEkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHki
fSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghanNDYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqZWN0
KS0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siQmluZGluZ1NlY3VyaXR5LmgifSA9IDE7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBq
c0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCkpKVxuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNz
VG9GcmFtZShleGVjLCBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpLT5pbXBsKCktPmZy
YW1lKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIwODcs
NyArMjA5MSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFqc0Nhc3Q8JGNsYXNzTmFt
ZSo+KHRoaXNPYmplY3QpLT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJCaW5kaW5nU2VjdXJpdHkuaCJ9ID0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGpzQ2FzdDwkY2xh
c3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMsIGpzQ2FzdDwkY2xhc3NOYW1lKj4o
dGhpc09iamVjdCktPmltcGwoKS0+ZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMjE5NCw3ICsyMTk5LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAg
ICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1Nl
Y3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+YWxsb3dz
QWNjZXNzRnJvbShleGVjKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJCaW5kaW5nU2VjdXJpdHkuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9E
T01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSlcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM5MmZiZGYx
NmYxNjNkOGI0NDRhYTg4Mzg3NzJmODdiYWE4YzcyYTYuLjUyZGVjNWUzOWYzZTQwYWRjYTgyMjU0
M2NjZjU1NjNkMzFmOTQ4MjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wOC0yMCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBKU0RPTVdp
bmRvdyo6OmFsbG93c0FjY2Vzc0Zyb20qIGluIHRlcm1zIG9mIEJpbmRpbmdTZWN1cml0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0MDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSB0ZXN0IHJl
c3VsdHMgYXJlIG5vdyBtb3JlIHNpbWlsYXIgKGFsdGhvdWdoIG5vdCBpZGVudGljYWwpIHRvIHRo
ZQorICAgICAgICByZXN1bHRzIGZvciB0aGUgVjggYmluZGluZ3MuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVu
dExpc3RlbmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qt
YWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNr
LWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dDoK
KwogMjAxMi0wOC0yMCAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENTUCAxLjE6IFRoZSAncGx1Z2luLXR5cGVzJyB3YXJuaW5nIHNob3VsZCBpbmNsdWRlIGRldGFp
bHMgYWJvdXQgZXhwbGljaXQgdHlwZSBkZWNsYXJhdGlvbiB3aGVuIHJlbGV2YW50LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJn
ZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1h
ZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAppbmRleCBmNzA2NmU2MTkyODQ0ZDY0ZjYzMmU5
NDJlYmMzZTY1ODA2Zjg5MWUzLi4yZTM3NzU3NjZhN2E1NmVkYjBmZWVjNTFiMjQ1YTEyOWYyODQ0
MmM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVy
L3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1Rhcmdl
dE5vZGUtb25jbGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUg
QEAKIENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3Mg
ZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9j
cm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXRO
b2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5k
IHBvcnRzIG11c3QgbWF0Y2guCiAKLUNPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQg
YXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGgg
VVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFy
Z2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci5odG1sLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KIFRoaXMgdGVzdHMgdGhhdCBm
cmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB1
c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRoZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8v
cHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFs
ZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJV
bnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAg
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hz
cy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1z
aG9ydGN1dC1leHBlY3RlZC50eHQKaW5kZXggY2VmOTRhNGIxMmU2ZjhkODFlMzc2M2UzMjI2NjZm
MTM4YWY2M2FlMS4uNDZmMTk5YWI1Y2U2NzcyMDc5ZGVhNTIyNDVhNjI2M2FmM2EyODBjMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNU
YXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNo
b3J0Y3V0LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FHRTogVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBm
cm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5l
ci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQuaHRt
bC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCi1DT05TT0xFIE1F
U1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZy
YW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENoaWxkLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNo
b3J0Y3V0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQog
VGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9u
IGFuIEV2ZW50VGFyZ2V0IHdpdGggdGhlIHNob3J0Y3V0IChvbmNsaWNrLCBldGMpLCBpcyB0aGUg
dGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBw
YXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9tYWluIG9m
ICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5pbmcgaXMg
bG9nZ2VkIHRvIHRoZSBjb25zb2xlLgogCiAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0
ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3Rl
bmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dAppbmRl
eCA0Y2FjYmQ3OGY5MGYzZTFmZWFjNjAwMGU0NzEzZjAyYTMwMmM5M2M1Li5jYzA2YzVjNWZlMTM2
NzY4MjhmOGY5NzM2MWY3NTBmYzMxMzE5MTZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3Rl
bmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xp
c3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dApA
QCAtMSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1w
dCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hp
bGQtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sLiBEb21haW5zLCBwcm90b2Nv
bHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKLUNPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFT
Y3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJj
ZXMvdGFyZ2V0Q2hpbGQtWE1MSHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci5odG1sLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KIFRoaXMgdGVzdHMgdGhhdCBm
cmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVycyBvbiBhbiBYTUxIdHRwUmVxdWVz
dCB1c2luZyBhZGRFdmVudExpc3RlbmVyLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8v
cHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFs
ZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJV
bnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAg
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hz
cy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1YTUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBl
Y3RlZC50eHQKaW5kZXggZGQyMTZjZjBiYWM4NTRjNjJjOTE1NjIwMjZkMTYyNTllMGM2NDQ2Zi4u
ZGFjMDk3YWM4YzQwOGE1NGVlOWUyN2M3YmU5YTQ1NzAxYzI2MDM3MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qt
c2hvcnRjdXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0LWV4cGVjdGVkLnR4dApAQCAt
MSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0
byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvdGFyZ2V0Q2hpbGQt
WE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0
cyBtdXN0IG1hdGNoLgogCi1DT05TT0xFIE1FU1NBR0U6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVt
cHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL3RhcmdldENo
aWxkLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KLQogVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0
aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHdpdGggdGhlIHNob3J0Y3V0
IChvbnJlYWR5c3RhdGVjaGFuZ2UpLCBpcyB0aGUgcmVxdWVzdHMgZnJhbWUuIChyZGFyOi8vcHJv
YmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0
IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNh
ZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13
aW5kb3ctb25jbGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2ZW50
TGlzdGVuZXItZXhwZWN0ZWQudHh0CmluZGV4IDEyYzJkZjgyMjAyODdhZTNhZTQxMjZhN2UzYTA0
OTFhMDljOTVkNDEuLjlhZjc0NDgwYzNlYzhlNjc4MTE0MjVmYzlmMjc5OTY5MTgzNzkxN2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdp
bmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLWFkZEV2
ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdF
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5o
dG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2xp
c3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13aW5kb3ctb25jbGljay1hZGRFdmVudExpc3Rl
bmVyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAotQ09O
U09MRSBNRVNTQUdFOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3
aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZy
YW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291cmNlcy90YXJnZXRDaGlsZC13aW5kb3ctb25jbGljay1h
ZGRFdmVudExpc3RlbmVyLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBt
YXRjaC4KLQogVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlz
dGVuZXJzIG9uIHRoZSB3aW5kb3cgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgd2luZG93
J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5
b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4gb2YgImxvY2FsaG9z
dCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBpcyBsb2dnZWQgdG8g
dGhlIGNvbnNvbGUuCiAKICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25j
bGljay1zaG9ydGN1dC1leHBlY3RlZC50eHQKaW5kZXggYWM2ODg1MWE2YzNkMjc2ZjlhOWZjYjNl
MmEyMTIwZjMxNzg1Nzc1ZC4uMTI2NTU5ZTMyMmFmODAxMjU5YWJjMTQ5NDc5NDMwNjRlMTU0N2Qw
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94
c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0
LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDUgQEAKIENPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEph
dmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNv
dXJjZXMvdGFyZ2V0Q2hpbGQtd2luZG93LW9uY2xpY2stc2hvcnRjdXQuaHRtbC4gRG9tYWlucywg
cHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCi1DT05TT0xFIE1FU1NBR0U6IFVuc2Fm
ZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJv
bSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvbGlzdGVuZXIv
cmVzb3VyY2VzL3RhcmdldENoaWxkLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0Lmh0bWwuIERvbWFp
bnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQogVGhpcyB0ZXN0cyB0aGF0IGZy
YW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRoZSB3aW5kb3cgd2l0aCB0
aGUgc2hvcnRjdXQgKG9uY2xpY2ssIGV0YyksIGlzIHRoZSB3aW5kb3cncyBmcmFtZS4gKHJkYXI6
Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUgYW4g
YWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxob3N0IiBpbiBpdCBhbmQgYW4g
IlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KIAog
ICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>