<?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>64305</bug_id>
          
          <creation_ts>2011-07-11 12:19:02 -0700</creation_ts>
          <short_desc>Move XML errors handling out from XMLDocumentParser (refactoring).</short_desc>
          <delta_ts>2011-07-14 10:15:45 -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>XML</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>
          
          <blocked>55233</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>abarth</cc>
    
    <cc>jeffrey+webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435108</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 12:19:02 -0700</bug_when>
    <thetext>Move XML errors handling out from XMLDocumentParser.

This is a part of http://webk.it/55233 (XSL transformations do not handle errors).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435124</commentid>
    <comment_count>1</comment_count>
      <attachid>100350</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 12:33:03 -0700</bug_when>
    <thetext>Created attachment 100350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435134</commentid>
    <comment_count>2</comment_count>
      <attachid>100350</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-11 12:39:12 -0700</bug_when>
    <thetext>Comment on attachment 100350
Patch

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

Sounds like a good idea.  I didn&apos;t verify that the moved code was identical, but I did find at least one difference, which makes me feel like I need to look more carefully in order to review the patch thoroughly.

&gt; Source/WebCore/xml/XMLErrors.cpp:72
&gt; +        case tip:
&gt; +            break;

Where did this case come from?  It doesn&apos;t appear to have existed before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435139</commentid>
    <comment_count>3</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 12:44:15 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/xml/XMLErrors.cpp:72
&gt; &gt; +        case tip:
&gt; &gt; +            break;
&gt; 
&gt; Where did this case come from?  It doesn&apos;t appear to have existed before.
I just added that for myself and forgot to remove, thanks for spotting it.

I&apos;ll fix that together with other comments if any.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435143</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 12:48:36 -0700</bug_when>
    <thetext>Actually this &quot;tip&quot; type is coming from libxml2 and will be used later (as it is used currently currently for XSLT error handling), but this is out of scope of this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435147</commentid>
    <comment_count>5</comment_count>
      <attachid>100350</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-11 12:55:41 -0700</bug_when>
    <thetext>Comment on attachment 100350
Patch

Attachment 100350 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9010580</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435166</commentid>
    <comment_count>6</comment_count>
      <attachid>100354</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-11 13:09:39 -0700</bug_when>
    <thetext>Created attachment 100354
Patch (comments addressed + qt build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436692</commentid>
    <comment_count>7</comment_count>
      <attachid>100354</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-13 15:01:52 -0700</bug_when>
    <thetext>Comment on attachment 100354
Patch (comments addressed + qt build fix)

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

&gt; Source/WebCore/xml/XMLErrors.cpp:85
&gt; +    RefPtr&lt;Element&gt; h3 = doc-&gt;createElement(h3Tag, false);
&gt; +    reportElement-&gt;appendChild(h3.get(), ec);

Can there be mutation event registered in doc to screw us over?

&gt; Source/WebCore/xml/XMLErrors.h:59
&gt; +    String m_errorMessages;

Consider using StringBuilder instead.  (See Darin&apos;s recent post on webkit-dev.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436693</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-13 15:02:16 -0700</bug_when>
    <thetext>Neither of those things are your fault, but the StringBuilder one should be easy to fix while you&apos;re here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437110</commentid>
    <comment_count>9</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-14 08:52:13 -0700</bug_when>
    <thetext>I&apos;ll fix StringBuilder thing before committing.

I have also filed https://bugs.webkit.org/show_bug.cgi?id=64532 for the other problem (with an example where it fails)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437162</commentid>
    <comment_count>10</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-07-14 10:15:45 -0700</bug_when>
    <thetext>Committed r91008: &lt;http://trac.webkit.org/changeset/91008&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100350</attachid>
            <date>2011-07-11 12:33:03 -0700</date>
            <delta_ts>2011-07-11 13:09:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64305-20110711233301.patch</filename>
            <type>text/plain</type>
            <size>33873</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3MzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjI5OTgy
YWQ5NjFiMDNmMzQwMjBiMzA3ZjZmZjAwOWMxNGZhMjNiZi4uMjQ0Y2ZmNzcyYjZlODk3MWZiODE3
MDA4NDg1ZTk5NmVmMDBiNWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjIsNiArMTM2
Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKIAogICAgIHhtbC9ET01QYXJzZXIuY3BwCiAgICAg
eG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAKKyAgICB4bWwvWE1MRXJyb3JzLmNwcAogICAg
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHAKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50VGhyb3R0bGUuY3BwCiAgICAgeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDc1ZGFmN2RmODM4MmM3MDZlOTRiMTIyN2IzZDY5MWQxMzRmMWJjNTAuLmIwNTc1YzI5
OTkwOGM5ODg0MTYzMGZhYzRmNmIwMGEyODYwMTBjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NiBAQAorMjAxMS0wNy0xMSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBNb3ZlIFhNTCBlcnJvcnMgaGFuZGxpbmcgb3V0IGZyb20gWE1MRG9jdW1lbnRQ
YXJzZXIgKHJlZmFjdG9yaW5nKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0MzA1CisKKyAgICAgICAgWE1MIGVycm9ycyBoYW5kbGluZyBsb2dpYyBp
cyBtb3ZlZCBvdXQgZnJvbSBYTUxEb2N1bWVudFBhcnNlciB0byBhbGxvdyB1c2luZyBpdCBmb3Ig
WFNMVCBlcnJvciBoYW5kbGluZyBhcyB3ZWxsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIG5lZWRlZCBhcyB0aGVyZSBpcyBubyBuZXcg
ZnVuY3Rpb25hbGl0eSBhZGRlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OlhNTEVycm9ycyk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRXJyb3JzOjpp
bnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTEVycm9ycy5oOiBBZGRl
ZC4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwdXNoQ3VycmVudE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50UGFyc2VyOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAg
ICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIHhtbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdD
YWxsYmFja3M6OmFwcGVuZEVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9j
dW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERv
Y3VtZW50UGFyc2VyOjpkb1dyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFy
c2VyOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp3YXJuaW5nSGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpmYXRhbEVycm9ySGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxF
cnJvckhhbmRsZXIpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvV3JpdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1
bWVudFBhcnNlcjo6cGFyc2VTdGFydEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9j
dW1lbnRQYXJzZXI6OnBhcnNlRHRkKToKKwogMjAxMS0wNy0xMSAgTXVzdGFmaXp1ciBSYWhhbWFu
ICA8bXVzdGFmLmhlcmVAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJv
Ymluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNjRkZWE4OGI1MDc1NTRh
YTBhMTBkZTVmNDMyNzFmZGFkMmFmNzQ4Zi4uZWQyOGZkZGU2ZGMyY2E2ODM0YTAzNTcyZTIyOWQw
ZGE2NWRhZjUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zODAwLDYgKzM4
MDAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJz
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBcCisJU291cmNlL1dl
YkNvcmUveG1sL1hNTEVycm9ycy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMu
aCBcCiAJU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwNmEyOTk2Mjg2ZTNiZTAz
YmFmMjFlY2NiZDY3ZDM4OTdkYTU3YzBjLi5hMmNhYTZlYWQyNWQzZDdiYmE3Y2M2ZjNlNGYxYzQ2
YzdjODQyYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MTM2LDYgKzYxMzYsOCBAQAogICAgICAg
ICAgICAgJ3htbC9ET01QYXJzZXIuaCcsCiAgICAgICAgICAgICAneG1sL05hdGl2ZVhQYXRoTlNS
ZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCcs
CisgICAgICAgICAgICAneG1sL1hNTEVycm9ycy5jcHAnLAorICAgICAgICAgICAgJ3htbC9YTUxF
cnJvcnMuaCcsCiAgICAgICAgICAgICAneG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCcsCiAgICAgICAg
ICAgICAneG1sL1hNTEh0dHBSZXF1ZXN0LmgnLAogICAgICAgICAgICAgJ3htbC9YTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbi5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggZjNmNDRmNmMxZmYzNDcxN2YyMmIwOTI1Y2NjZDE1NmE5NTg4NjNkOS4u
NGJkOGM1YTRjOGEyM2Y3N2ZlNmUwOTMxOTU2MDQxYzgxMTM5OGZjNyAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQyMDQ4LDYgKzQyMDQ4LDE0
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHht
bFxYTUxFcnJvcnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlx4bWxcWE1MRXJyb3JzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxYTUxIdHRwUmVxdWVzdC5jcHAiCiAJCQkJPgogCQkJ
PC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDU4NjU4MGQzNzVjMGE1MWZmZTM4NzZjZjA5NmY3ZGYyZDkyMzcwN2YuLmMw
YjVjYTIxMzUzNTE2ZDQyMjU3MzFmYjdiMzY5YjhlYzZkNzhlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0ODEsNiArMTQ4
MSw4IEBACiAJCTU5QkMzOTNGMTEwNTRBMTMwMEZEODVEQiAvKiBKYXZhU3RyaW5nSlNDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUJDMzkzRTExMDU0
QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pTQy5oICovOyB9OwogCQk1OUMyN0YwNTEzOEQyOEMx
MDA3OUI3RTIgLyogTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDMjdGMDQxMzhEMjhDMTAwNzlCN0UyIC8qIE5l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcCAqLzsgfTsKIAkJNTlDMjdGMDcxMzhEMjhDRjAwNzlCN0Uy
IC8qIE5ldHdvcmtSZXNvdXJjZXNEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1OUMyN0YwNjEzOEQyOENGMDA3OUI3RTIgLyogTmV0d29ya1Jlc291
cmNlc0RhdGEuaCAqLzsgfTsKKwkJNTlDMjgwNDUxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9y
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUMy
ODA0MzEzOERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmNwcCAqLzsgfTsKKwkJNTlDMjgwNDYx
MzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDMjgwNDQxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9y
cy5oICovOyB9OwogCQk1OUQxQzEwNDExRUI1RENGMDBCNjM4QzggLyogRGV2aWNlT3JpZW50YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlE
MUMxMDMxMUVCNURDRjAwQjYzOEM4IC8qIERldmljZU9yaWVudGF0aW9uLmNwcCAqLzsgfTsKIAkJ
NTlFNTYwQTcxMTA1MzM2NjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlFNTYwQTYxMTA1MzM2NjAwQUExMjU4
IC8qIEphdmFDbGFzc0pTQy5oICovOyB9OwogCQk1OUU1NjBBOTExMDUzMzZGMDBBQTEyNTggLyog
SmF2YUNsYXNzSlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5RTU2MEE4MTEwNTMzNkYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuY3BwICovOyB9
OwpAQCAtODAzMSw2ICs4MDMzLDggQEAKIAkJNTlCQzM5M0UxMTA1NEExMzAwRkQ4NURCIC8qIEph
dmFTdHJpbmdKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSmF2YVN0cmlu
Z0pTQy5oOyBwYXRoID0ganNjL0phdmFTdHJpbmdKU0MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTlDMjdGMDQxMzhEMjhDMTAwNzlCN0UyIC8qIE5ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlDMjdGMDYxMzhEMjhD
RjAwNzlCN0UyIC8qIE5ldHdvcmtSZXNvdXJjZXNEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZXNEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU5QzI4MDQzMTM4REMyNDEwMDc5QjdFMiAvKiBYTUxFcnJvcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRXJyb3JzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTlDMjgwNDQxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9y
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxFcnJvcnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlEMUMxMDMxMUVCNURDRjAwQjYzOEM4IC8qIERldmlj
ZU9yaWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
dmljZU9yaWVudGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlFNTYw
QTYxMTA1MzM2NjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBKYXZhQ2xhc3NKU0MuaDsgcGF0aCA9IGpzYy9KYXZhQ2xhc3NKU0MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlFNTYwQTgxMTA1MzM2RjAwQUExMjU4IC8q
IEphdmFDbGFzc0pTQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
YXZhQ2xhc3NKU0MuY3BwOyBwYXRoID0ganNjL0phdmFDbGFzc0pTQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xOTAwNCw2ICsxOTAwOCw4IEBACiAJCQkJRTEwQjlCNkIwQjc0
NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgKi8sCiAJCQkJRTEwQjlC
NkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oICovLAogCQkJCUE4
MzNDN0Y2MEEyQ0YxRDgwMEQ1NzY2NCAvKiB4bWxhdHRycy5pbiAqLywKKwkJCQk1OUMyODA0MzEz
OERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmNwcCAqLywKKwkJCQk1OUMyODA0NDEzOERDMjQx
MDA3OUI3RTIgLyogWE1MRXJyb3JzLmggKi8sCiAJCQkJQkM3NzJDNDQwQzRFQjJDNjAwODMyODVG
IC8qIFhNTEh0dHBSZXF1ZXN0LmNwcCAqLywKIAkJCQlCQzc3MkM0NTBDNEVCMkM2MDA4MzI4NUYg
LyogWE1MSHR0cFJlcXVlc3QuaCAqLywKIAkJCQlCQzM0OEJBNzBEQjdGMUI4MDA0QUJBQjkgLyog
WE1MSHR0cFJlcXVlc3QuaWRsICovLApAQCAtMjMxMTYsNiArMjMxMjIsNyBAQAogCQkJCTA4MURE
NDlDMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mjg4OUI0RDEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVj
dG9yU3R5bGVUZXh0RWRpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OUMyODA0NjEzOERDMjQx
MDA3OUI3RTIgLyogWE1MRXJyb3JzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODg3LDYgKzI1ODk0
LDcgQEAKIAkJCQk0M0Y2RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNEMjU5NzcxM0M4
MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5QzI4
MDQ1MTM4REMyNDEwMDc5QjdFMiAvKiBYTUxFcnJvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMzg4NDdlOTViN2U0NmVmNmVjMTE4OWNk
NGU5NzRlMzVjNTBhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLgorICogT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiWE1MRXJyb3JzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK2Nv
bnN0IGludCBtYXhFcnJvcnMgPSAyNTsKKworWE1MRXJyb3JzOjpYTUxFcnJvcnMoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fZXJyb3JDb3Vu
dCgwKQorICAgICwgbV9sYXN0RXJyb3JQb3NpdGlvbihUZXh0UG9zaXRpb24xOjpiZWxvd1Jhbmdl
UG9zaXRpb24oKSkKK3sKK30KKwordm9pZCBYTUxFcnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlw
ZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcikKK3sKKyAgICBoYW5kbGVFcnJvcih0eXBlLCBtZXNzYWdlLCBUZXh0UG9zaXRpb24xKFdU
Rjo6T25lQmFzZWROdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgV1RGOjpPbmVC
YXNlZE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGNvbHVtbk51bWJlcikpKTsKK30KKwordm9pZCBY
TUxFcnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdl
LCBUZXh0UG9zaXRpb24xIHBvc2l0aW9uKQoreworICAgIGlmICh0eXBlID09IGZhdGFsIHx8ICht
X2Vycm9yQ291bnQgPCBtYXhFcnJvcnMgJiYgbV9sYXN0RXJyb3JQb3NpdGlvbi5tX2xpbmUgIT0g
cG9zaXRpb24ubV9saW5lICYmIG1fbGFzdEVycm9yUG9zaXRpb24ubV9jb2x1bW4gIT0gcG9zaXRp
b24ubV9jb2x1bW4pKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIHdh
cm5pbmc6CisgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZXMgKz0gIndhcm5pbmcgb24gbGluZSAi
ICsgU3RyaW5nOjpudW1iZXIocG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpICsgIiBhdCBj
b2x1bW4gIiArIFN0cmluZzo6bnVtYmVyKHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkp
ICsgIjogIiArIG1lc3NhZ2U7CisgICAgICAgIGNhc2UgZmF0YWw6CisgICAgICAgIGNhc2Ugbm9u
RmF0YWw6CisgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZXMgKz0gImVycm9yIG9uIGxpbmUgIiAr
IFN0cmluZzo6bnVtYmVyKHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKSArICIgYXQgY29s
dW1uICIgKyBTdHJpbmc6Om51bWJlcihwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKSAr
ICI6ICIgKyBtZXNzYWdlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgdGlwOgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtX2xhc3RFcnJvclBvc2l0
aW9uID0gcG9zaXRpb247CisgICAgICAgICsrbV9lcnJvckNvdW50OworICAgIH0KK30KKworc3Rh
dGljIGlubGluZSBSZWZQdHI8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihE
b2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZXMpCit7CisgICAgUmVmUHRy
PEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFt
ZShudWxsQXRvbSwgInBhcnNlcmVycm9yIiwgeGh0bWxOYW1lc3BhY2VVUkkpLCBmYWxzZSk7Cisg
ICAgcmVwb3J0RWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2Nr
OyB3aGl0ZS1zcGFjZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFl
bSAwIDFlbTsgbWFyZ2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFj
ayIpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGgz
ID0gZG9jLT5jcmVhdGVFbGVtZW50KGgzVGFnLCBmYWxzZSk7CisgICAgcmVwb3J0RWxlbWVudC0+
YXBwZW5kQ2hpbGQoaDMuZ2V0KCksIGVjKTsKKyAgICBoMy0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVh
dGVUZXh0Tm9kZSgiVGhpcyBwYWdlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiIpLCBl
Yyk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gZml4ZWQgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2
VGFnLCBmYWxzZSk7CisgICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQoZml4ZWQuZ2V0KCks
IGVjKTsKKyAgICBmaXhlZC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgImZvbnQtZmFtaWx5Om1v
bm9zcGFjZTtmb250LXNpemU6MTJweCIpOworICAgIGZpeGVkLT5hcHBlbmRDaGlsZChkb2MtPmNy
ZWF0ZVRleHROb2RlKGVycm9yTWVzc2FnZXMpLCBlYyk7CisKKyAgICBoMyA9IGRvYy0+Y3JlYXRl
RWxlbWVudChoM1RhZywgZmFsc2UpOworICAgIHJlcG9ydEVsZW1lbnQtPmFwcGVuZENoaWxkKGgz
LmdldCgpLCBlYyk7CisgICAgaDMtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIkJl
bG93IGlzIGEgcmVuZGVyaW5nIG9mIHRoZSBwYWdlIHVwIHRvIHRoZSBmaXJzdCBlcnJvci4iKSwg
ZWMpOworCisgICAgcmV0dXJuIHJlcG9ydEVsZW1lbnQ7Cit9CisKK3ZvaWQgWE1MRXJyb3JzOjpp
bnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpIGNvbnN0Cit7CisgICAgLy8gT25lIG9yIG1vcmUgZXJy
b3JzIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHRoZSBjb2RlLiBEaXNwbGF5IGFuIGVycm9y
IGJsb2NrIHRvIHRoZSB1c2VyIGFib3ZlCisgICAgLy8gdGhlIG5vcm1hbCBjb250ZW50ICh0aGUg
RE9NIHRyZWUgaXMgY3JlYXRlZCBtYW51YWxseSBhbmQgaW5jbHVkZXMgbGluZS9jb2wgaW5mbyBy
ZWdhcmRpbmcKKyAgICAvLyB3aGVyZSB0aGUgZXJyb3JzIGFyZSBsb2NhdGVkKQorCisgICAgLy8g
Q3JlYXRlIGVsZW1lbnRzIGZvciBkaXNwbGF5CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3VtZW50RWxlbWVudCA9IG1fZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpOworICAgIGlmICghZG9jdW1lbnRFbGVtZW50KSB7CisgICAgICAgIFJlZlB0cjxF
bGVtZW50PiByb290RWxlbWVudCA9IG1fZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoaHRtbFRhZywg
ZmFsc2UpOworICAgICAgICBtX2RvY3VtZW50LT5hcHBlbmRDaGlsZChyb290RWxlbWVudCwgZWMp
OworICAgICAgICBSZWZQdHI8RWxlbWVudD4gYm9keSA9IG1fZG9jdW1lbnQtPmNyZWF0ZUVsZW1l
bnQoYm9keVRhZywgZmFsc2UpOworICAgICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9k
eSwgZWMpOworICAgICAgICBkb2N1bWVudEVsZW1lbnQgPSBib2R5LmdldCgpOworICAgIH0KKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudC0+bmFtZXNwYWNlVVJJ
KCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkgeworICAgICAgICBSZWZQdHI8RWxlbWVu
dD4gcm9vdEVsZW1lbnQgPSBtX2RvY3VtZW50LT5jcmVhdGVFbGVtZW50KGh0bWxUYWcsIGZhbHNl
KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGJvZHkgPSBtX2RvY3VtZW50LT5jcmVhdGVFbGVt
ZW50KGJvZHlUYWcsIGZhbHNlKTsKKyAgICAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJv
ZHksIGVjKTsKKyAgICAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZG9jdW1lbnRFbGVtZW50LCBlYyk7
CisgICAgICAgIG1fZG9jdW1lbnQtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LmdldCgpLCBlYyk7
CisgICAgICAgIGRvY3VtZW50RWxlbWVudCA9IGJvZHkuZ2V0KCk7CisgICAgfQorI2VuZGlmCisg
ICAgUmVmUHRyPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBjcmVhdGVYSFRNTFBhcnNlckVycm9y
SGVhZGVyKG1fZG9jdW1lbnQsIG1fZXJyb3JNZXNzYWdlcyk7CisgICAgZG9jdW1lbnRFbGVtZW50
LT5pbnNlcnRCZWZvcmUocmVwb3J0RWxlbWVudCwgZG9jdW1lbnRFbGVtZW50LT5maXJzdENoaWxk
KCksIGVjKTsKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICBpZiAobV9kb2N1bWVudC0+dHJhbnNmb3Jt
U291cmNlRG9jdW1lbnQoKSkgeworICAgICAgICBSZWZQdHI8RWxlbWVudD4gcGFyYWdyYXBoID0g
bV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudChwVGFnLCBmYWxzZSk7CisgICAgICAgIHBhcmFncmFw
aC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3JtYWwiKTsKKyAgICAg
ICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChtX2RvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZSgiVGhp
cyBkb2N1bWVudCB3YXMgY3JlYXRlZCBhcyB0aGUgcmVzdWx0IG9mIGFuIFhTTCB0cmFuc2Zvcm1h
dGlvbi4gVGhlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGdpdmVuIGFyZSBmcm9tIHRoZSB0cmFu
c2Zvcm1lZCByZXN1bHQuIiksIGVjKTsKKyAgICAgICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hp
bGQocGFyYWdyYXBoLnJlbGVhc2UoKSwgZWMpOworICAgIH0KKyNlbmRpZgorICAgIG1fZG9jdW1l
bnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiYzY0MzY5M2U5Zjk0NWI1ZTQzMmIzYzRm
M2Y4ZTM5ZWRiYTIzODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLgorICogT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFhNTEVy
cm9yc19oCisjZGVmaW5lIFhNTEVycm9yc19oCisKKyNpbmNsdWRlIDxQbGF0Zm9ybVN0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgorCisjaWYgIVVTRShRWE1MU1RS
RUFNKQorI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCitjbGFzcyBYTUxFcnJvcnMgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFhNTEVycm9ycyhEb2N1bWVudCopOworCisgICAgLy8gRXhwb3NlZCBmb3Ig
Y2FsbGJhY2tzOgorICAgIGVudW0gRXJyb3JUeXBlIHsgdGlwLCB3YXJuaW5nLCBub25GYXRhbCwg
ZmF0YWwgfTsKKyAgICB2b2lkIGhhbmRsZUVycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciogbWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZvaWQgaGFuZGxl
RXJyb3IoRXJyb3JUeXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBUZXh0UG9zaXRpb24xKTsKKwor
ICAgIHZvaWQgaW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBEb2N1bWVudCogbV9kb2N1bWVudDsKKworICAgIGludCBtX2Vycm9yQ291bnQ7CisgICAgVGV4
dFBvc2l0aW9uMSBtX2xhc3RFcnJvclBvc2l0aW9uOworICAgIFN0cmluZyBtX2Vycm9yTWVzc2Fn
ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBYTUxFcnJvcnNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApp
bmRleCAyMzYzZWFkMWEzZjlmODZlMzljZDUwZjBkNzNhZjkwZjM2OTYzN2IxLi5jM2U0MjkyYTBi
NTdhYmFhMGEzNzUwMGExY2MwYzEzYWNmOGFjMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNTAsNyArNTAsNyBAQAogI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIlRyZWVEZXB0aExpbWl0LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisjaW5jbHVkZSAiWE1MRXJyb3JzLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC02
Niw4ICs2Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAotY29uc3QgaW50IG1heEVycm9ycyA9IDI1OwotCiB2b2lkIFhNTERvY3VtZW50UGFy
c2VyOjpwdXNoQ3VycmVudE5vZGUoQ29udGFpbmVyTm9kZSogbikKIHsKICAgICBBU1NFUlQobik7
CkBAIC03Nyw3ICs3NSw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnB1c2hDdXJyZW50Tm9k
ZShDb250YWluZXJOb2RlKiBuKQogICAgIG1fY3VycmVudE5vZGVTdGFjay5hcHBlbmQobV9jdXJy
ZW50Tm9kZSk7CiAgICAgbV9jdXJyZW50Tm9kZSA9IG47CiAgICAgaWYgKG1fY3VycmVudE5vZGVT
dGFjay5zaXplKCkgPiBtYXhET01UcmVlRGVwdGgpCi0gICAgICAgIGhhbmRsZUVycm9yKGZhdGFs
LCAiRXhjZXNzaXZlIG5vZGUgbmVzdGluZy4iLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigp
KTsKKyAgICAgICAgaGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpmYXRhbCwgIkV4Y2Vzc2l2ZSBub2Rl
IG5lc3RpbmcuIiwgbGluZU51bWJlcigpLCBjb2x1bW5OdW1iZXIoKSk7CiB9CiAKIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OnBvcEN1cnJlbnROb2RlKCkKQEAgLTEzNSwzMSArMTMzLDE3IEBAIHZv
aWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHMpCiAg
ICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKIH0KIAot
dm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoRXJyb3JUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIG0sIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQordm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3Qg
Y2hhciogbSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaGFuZGxl
RXJyb3IodHlwZSwgbSwgVGV4dFBvc2l0aW9uMShXVEY6Ok9uZUJhc2VkTnVtYmVyOjpmcm9tT25l
QmFzZWRJbnQobGluZU51bWJlciksIFdURjo6T25lQmFzZWROdW1iZXI6OmZyb21PbmVCYXNlZElu
dChjb2x1bW5OdW1iZXIpKSk7CiB9CiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVy
cm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24xIHBvc2l0aW9u
KQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5
cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4dFBvc2l0aW9uMSBwb3NpdGlvbikKIHsKLSAgICBp
ZiAodHlwZSA9PSBmYXRhbCB8fCAobV9lcnJvckNvdW50IDwgbWF4RXJyb3JzICYmIG1fbGFzdEVy
cm9yUG9zaXRpb24ubV9saW5lICE9IHBvc2l0aW9uLm1fbGluZSAmJiBtX2xhc3RFcnJvclBvc2l0
aW9uLm1fY29sdW1uICE9IHBvc2l0aW9uLm1fY29sdW1uKSkgewotICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKLSAgICAgICAgICAgIGNhc2Ugd2FybmluZzoKLSAgICAgICAgICAgICAgICBtX2Vycm9y
TWVzc2FnZXMgKz0gIndhcm5pbmcgb24gbGluZSAiICsgU3RyaW5nOjpudW1iZXIocG9zaXRpb24u
bV9saW5lLm9uZUJhc2VkSW50KCkpICsgIiBhdCBjb2x1bW4gIiArIFN0cmluZzo6bnVtYmVyKHBv
c2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpICsgIjogIiArIG07Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIGZhdGFsOgotICAgICAgICAgICAgY2FzZSBub25G
YXRhbDoKLSAgICAgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZXMgKz0gImVycm9yIG9uIGxpbmUg
IiArIFN0cmluZzo6bnVtYmVyKHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKSArICIgYXQg
Y29sdW1uICIgKyBTdHJpbmc6Om51bWJlcihwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgp
KSArICI6ICIgKyBtOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9sYXN0RXJyb3JQb3NpdGlvbiA9
IHBvc2l0aW9uOwotICAgICAgICArK21fZXJyb3JDb3VudDsKLSAgICB9Ci0KLSAgICBpZiAodHlw
ZSAhPSB3YXJuaW5nKQorICAgIG1feG1sRXJyb3JzLmhhbmRsZUVycm9yKHR5cGUsIG0sIHBvc2l0
aW9uKTsKKyAgICBpZiAodHlwZSAhPSBYTUxFcnJvcnM6Ondhcm5pbmcpCiAgICAgICAgIG1fc2F3
RXJyb3IgPSB0cnVlOwotCi0gICAgaWYgKHR5cGUgPT0gZmF0YWwpCisgICAgaWYgKHR5cGUgPT0g
WE1MRXJyb3JzOjpmYXRhbCkKICAgICAgICAgc3RvcFBhcnNpbmcoKTsKIH0KIApAQCAtMjUxLDcw
ICsyMzUsMTQgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoV2FzQ2FsbGVkKCkKICAg
ICByZXR1cm4gbV9maW5pc2hDYWxsZWQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPEVsZW1l
bnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQqIGRvYywgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2VzKQotewotICAgIFJlZlB0cjxFbGVtZW50PiByZXBvcnRFbGVtZW50
ID0gZG9jLT5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20sICJwYXJzZXJlcnJv
ciIsIHhodG1sTmFtZXNwYWNlVVJJKSwgZmFsc2UpOwotICAgIHJlcG9ydEVsZW1lbnQtPnNldEF0
dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgYm9y
ZGVyOiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjogMWVtOyBi
YWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxhY2siKTsKLQotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFJlZlB0cjxFbGVtZW50PiBoMyA9IGRvYy0+Y3JlYXRlRWxlbWVudCho
M1RhZywgZmFsc2UpOwotICAgIHJlcG9ydEVsZW1lbnQtPmFwcGVuZENoaWxkKGgzLmdldCgpLCBl
Yyk7Ci0gICAgaDMtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgcGFnZSBj
b250YWlucyB0aGUgZm9sbG93aW5nIGVycm9yczoiKSwgZWMpOwotCi0gICAgUmVmUHRyPEVsZW1l
bnQ+IGZpeGVkID0gZG9jLT5jcmVhdGVFbGVtZW50KGRpdlRhZywgZmFsc2UpOwotICAgIHJlcG9y
dEVsZW1lbnQtPmFwcGVuZENoaWxkKGZpeGVkLmdldCgpLCBlYyk7Ci0gICAgZml4ZWQtPnNldEF0
dHJpYnV0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgi
KTsKLSAgICBmaXhlZC0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShlcnJvck1lc3Nh
Z2VzKSwgZWMpOwotCi0gICAgaDMgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoaDNUYWcsIGZhbHNlKTsK
LSAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChoMy5nZXQoKSwgZWMpOwotICAgIGgzLT5h
cHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJCZWxvdyBpcyBhIHJlbmRlcmluZyBvZiB0
aGUgcGFnZSB1cCB0byB0aGUgZmlyc3QgZXJyb3IuIiksIGVjKTsKLQotICAgIHJldHVybiByZXBv
cnRFbGVtZW50OwotfQotCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnRFcnJvck1lc3Nh
Z2VCbG9jaygpCiB7CiAjaWYgVVNFKFFYTUxTVFJFQU0pCiAgICAgaWYgKG1fcGFyc2luZ0ZyYWdt
ZW50KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICAvLyBPbmUgb3IgbW9yZSBlcnJvcnMg
b2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgb2YgdGhlIGNvZGUuIERpc3BsYXkgYW4gZXJyb3IgYmxv
Y2sgdG8gdGhlIHVzZXIgYWJvdmUKLSAgICAvLyB0aGUgbm9ybWFsIGNvbnRlbnQgKHRoZSBET00g
dHJlZSBpcyBjcmVhdGVkIG1hbnVhbGx5IGFuZCBpbmNsdWRlcyBsaW5lL2NvbCBpbmZvIHJlZ2Fy
ZGluZwotICAgIC8vIHdoZXJlIHRoZSBlcnJvcnMgYXJlIGxvY2F0ZWQpCiAKLSAgICAvLyBDcmVh
dGUgZWxlbWVudHMgZm9yIGRpc3BsYXkKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIFJlZlB0cjxFbGVtZW50
PiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYg
KCFkb2N1bWVudEVsZW1lbnQpIHsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHJvb3RFbGVtZW50
ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoaHRtbFRhZywgZmFsc2UpOwotICAgICAgICBkb2N1
bWVudC0+YXBwZW5kQ2hpbGQocm9vdEVsZW1lbnQsIGVjKTsKLSAgICAgICAgUmVmUHRyPEVsZW1l
bnQ+IGJvZHkgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChib2R5VGFnLCBmYWxzZSk7Ci0gICAg
ICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5LCBlYyk7Ci0gICAgICAgIGRvY3VtZW50
RWxlbWVudCA9IGJvZHkuZ2V0KCk7Ci0gICAgfQotI2lmIEVOQUJMRShTVkcpCi0gICAgZWxzZSBp
ZiAoZG9jdW1lbnRFbGVtZW50LT5uYW1lc3BhY2VVUkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNw
YWNlVVJJKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiByb290RWxlbWVudCA9IGRvY3VtZW50
LT5jcmVhdGVFbGVtZW50KGh0bWxUYWcsIGZhbHNlKTsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IGJvZHkgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChib2R5VGFnLCBmYWxzZSk7Ci0gICAgICAg
IHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5LCBlYyk7Ci0gICAgICAgIGJvZHktPmFwcGVu
ZENoaWxkKGRvY3VtZW50RWxlbWVudCwgZWMpOwotICAgICAgICBkb2N1bWVudC0+YXBwZW5kQ2hp
bGQocm9vdEVsZW1lbnQuZ2V0KCksIGVjKTsKLSAgICAgICAgZG9jdW1lbnRFbGVtZW50ID0gYm9k
eS5nZXQoKTsKLSAgICB9Ci0jZW5kaWYKLSAgICBSZWZQdHI8RWxlbWVudD4gcmVwb3J0RWxlbWVu
dCA9IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoZG9jdW1lbnQsIG1fZXJyb3JNZXNzYWdl
cyk7Ci0gICAgZG9jdW1lbnRFbGVtZW50LT5pbnNlcnRCZWZvcmUocmVwb3J0RWxlbWVudCwgZG9j
dW1lbnRFbGVtZW50LT5maXJzdENoaWxkKCksIGVjKTsKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICBp
ZiAoZG9jdW1lbnQtPnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKLSAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IHBhcmFncmFwaCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KHBUYWcsIGZhbHNl
KTsKLSAgICAgICAgcGFyYWdyYXBoLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3Bh
Y2U6IG5vcm1hbCIpOwotICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5j
cmVhdGVUZXh0Tm9kZSgiVGhpcyBkb2N1bWVudCB3YXMgY3JlYXRlZCBhcyB0aGUgcmVzdWx0IG9m
IGFuIFhTTCB0cmFuc2Zvcm1hdGlvbi4gVGhlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGdpdmVu
IGFyZSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCByZXN1bHQuIiksIGVjKTsKLSAgICAgICAgcmVwb3J0
RWxlbWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBoLnJlbGVhc2UoKSwgZWMpOwotICAgIH0KLSNl
bmRpZgotICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV94bWxFcnJv
cnMuaW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHVudXNlZFJlc291cmNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDNhY2RkMjVj
NTVkYzAzNWI4ZjMyYTc0MTc1YTQ2ZDk4OWVlYjI3NWMuLmI2YzU2OWMyYzI1MDEzMzQ3ZWVkZmJi
M2I5YzVjNmVhZTAzOWIxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGcmFnbWVudFNjcmlw
dGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIK
ICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJYTUxFcnJvcnMuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC04Niw5ICs4Nyw4IEBAIGNsYXNzIFRleHQ7CiAgICAg
ICAgIH5YTUxEb2N1bWVudFBhcnNlcigpOwogCiAgICAgICAgIC8vIEV4cG9zZWQgZm9yIGNhbGxi
YWNrczoKLSAgICAgICAgZW51bSBFcnJvclR5cGUgeyB3YXJuaW5nLCBub25GYXRhbCwgZmF0YWwg
fTsKLSAgICAgICAgdm9pZCBoYW5kbGVFcnJvcihFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKLSAgICAgICAgdm9pZCBoYW5k
bGVFcnJvcihFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIFRleHRQb3NpdGlvbjEpOwor
ICAgICAgICB2b2lkIGhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBlLCBjb25zdCBjaGFy
KiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgICAgIHZv
aWQgaGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Us
IFRleHRQb3NpdGlvbjEpOwogCiAgICAgICAgIHZvaWQgc2V0SXNYSFRNTERvY3VtZW50KGJvb2wg
aXNYSFRNTCkgeyBtX2lzWEhUTUxEb2N1bWVudCA9IGlzWEhUTUw7IH0KICAgICAgICAgYm9vbCBp
c1hIVE1MRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzWEhUTUxEb2N1bWVudDsgfQpAQCAt
MTQ4LDcgKzE0OCw3IEBAIHByaXZhdGU6CiAjZWxzZQogcHVibGljOgogICAgICAgICAvLyBjYWxs
YmFja3MgZnJvbSBwYXJzZXIgU0FYCi0gICAgICAgIHZvaWQgZXJyb3IoRXJyb3JUeXBlLCBjb25z
dCBjaGFyKiBtZXNzYWdlLCB2YV9saXN0IGFyZ3MpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDMsIDAp
OworICAgICAgICB2b2lkIGVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBlLCBjb25zdCBjaGFyKiBt
ZXNzYWdlLCB2YV9saXN0IGFyZ3MpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDMsIDApOwogICAgICAg
ICB2b2lkIHN0YXJ0RWxlbWVudE5zKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3Qg
eG1sQ2hhciogeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4bWxVUkksIGludCBuYl9uYW1lc3Bh
Y2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHhtbENoYXIqKiBuYW1lc3Bh
Y2VzLCBpbnQgbmJfYXR0cmlidXRlcywgaW50IG5iX2RlZmF1bHRlZCwgY29uc3QgeG1sQ2hhcioq
IGxpYnhtbEF0dHJpYnV0ZXMpOwogICAgICAgICB2b2lkIGVuZEVsZW1lbnROcygpOwpAQCAtMjA3
LDkgKzIwNyw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3JlcXVlc3RpbmdTY3JpcHQ7CiAg
ICAgICAgIGJvb2wgbV9maW5pc2hDYWxsZWQ7CiAKLSAgICAgICAgaW50IG1fZXJyb3JDb3VudDsK
LSAgICAgICAgVGV4dFBvc2l0aW9uMSBtX2xhc3RFcnJvclBvc2l0aW9uOwotICAgICAgICBTdHJp
bmcgbV9lcnJvck1lc3NhZ2VzOworICAgICAgICBYTUxFcnJvcnMgbV94bWxFcnJvcnM7CiAKICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX3BlbmRpbmdTY3JpcHQ7
CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBtX3NjcmlwdEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5k
ZXggZjJmMzlmYjRlYzdkZWUwNzBhODM1MTVhZTBjNGY0MTBmNmI3Mjg2ZS4uNjA5Y2IzYzc0MDFm
YTU5ZTMxODNhMzIzZGM0ZDYyYmJjMjE3ZjI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTcyLDcgKzE3
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrLnJlbGVh
c2UoKSk7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhNTERvY3VtZW50
UGFyc2VyOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgeG1sQ2hhciogbWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhN
TEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENoYXIqIG1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgT3duUHRyPFBlbmRpbmdF
cnJvckNhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UHRyKG5ldyBQZW5kaW5nRXJyb3JDYWxsYmFj
ayk7CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcGFyc2VyLT5o
YW5kbGVFcnJvcih0eXBlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihtZXNzYWdlKSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIFhNTERvY3VtZW50UGFy
c2VyOjpFcnJvclR5cGUgdHlwZTsKKyAgICAgICAgWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZTsK
ICAgICAgICAgeG1sQ2hhciogbWVzc2FnZTsKICAgICAgICAgaW50IGxpbmVOdW1iZXI7CiAgICAg
ICAgIGludCBjb2x1bW5OdW1iZXI7CkBAIC01NjIsOCArNTYyLDcgQEAgWE1MRG9jdW1lbnRQYXJz
ZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCiAgICAgLCBtX3BhcnNlclBhdXNlZChmYWxzZSkKICAgICAsIG1fcmVxdWVzdGluZ1Nj
cmlwdChmYWxzZSkKICAgICAsIG1fZmluaXNoQ2FsbGVkKGZhbHNlKQotICAgICwgbV9lcnJvckNv
dW50KDApCi0gICAgLCBtX2xhc3RFcnJvclBvc2l0aW9uKFRleHRQb3NpdGlvbjE6OmJlbG93UmFu
Z2VQb3NpdGlvbigpKQorICAgICwgbV94bWxFcnJvcnMoZG9jdW1lbnQpCiAgICAgLCBtX3BlbmRp
bmdTY3JpcHQoMCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb24xOjpi
ZWxvd1JhbmdlUG9zaXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KGZhbHNlKQpAQCAt
NTg5LDggKzU4OCw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50CiAgICAgLCBtX3BhcnNlclBh
dXNlZChmYWxzZSkKICAgICAsIG1fcmVxdWVzdGluZ1NjcmlwdChmYWxzZSkKICAgICAsIG1fZmlu
aXNoQ2FsbGVkKGZhbHNlKQotICAgICwgbV9lcnJvckNvdW50KDApCi0gICAgLCBtX2xhc3RFcnJv
clBvc2l0aW9uKFRleHRQb3NpdGlvbjE6OmJlbG93UmFuZ2VQb3NpdGlvbigpKQorICAgICwgbV94
bWxFcnJvcnMoZnJhZ21lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3BlbmRpbmdTY3JpcHQoMCkK
ICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb24xOjpiZWxvd1JhbmdlUG9z
aXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCkBAIC02NzUsNyArNjczLDcg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9Xcml0ZShjb25zdCBTdHJpbmcmIHBhcnNlU3Ry
aW5nKQogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBoZXJlPyAgQW5kIHdoeSBpcyBpdCBhZnRl
ciB3ZSBwcm9jZXNzIHRoZSBwYXNzZWQgc291cmNlPwogICAgIGlmIChkb2N1bWVudCgpLT5kZWNv
ZGVyKCkgJiYgZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5zYXdFcnJvcigpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBkZWNvZGVyIHNhdyBhbiBlcnJvciwgcmVwb3J0IGl0IGFzIGZhdGFsIChzdG9wcyBw
YXJzaW5nKQotICAgICAgICBoYW5kbGVFcnJvcihmYXRhbCwgIkVuY29kaW5nIGVycm9yIiwgY29u
dGV4dC0+Y29udGV4dCgpLT5pbnB1dC0+bGluZSwgY29udGV4dC0+Y29udGV4dCgpLT5pbnB1dC0+
Y29sKTsKKyAgICAgICAgaGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpmYXRhbCwgIkVuY29kaW5nIGVy
cm9yIiwgY29udGV4dC0+Y29udGV4dCgpLT5pbnB1dC0+bGluZSwgY29udGV4dC0+Y29udGV4dCgp
LT5pbnB1dC0+Y29sKTsKICAgICB9CiB9CiAKQEAgLTkzNSw3ICs5MzMsNyBAQCB2b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjpjaGFyYWN0ZXJzKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAg
bV9idWZmZXJlZFRleHQuYXBwZW5kKHMsIGxlbik7CiB9CiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2YV9saXN0IGFy
Z3MpCit2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplcnJvcihYTUxFcnJvcnM6OkVycm9yVHlwZSB0
eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2YV9saXN0IGFyZ3MpCiB7CiAgICAgaWYgKGlzU3Rv
cHBlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTU3LDcgKzExNTUsNyBAQCBzdGF0aWMgdm9p
ZCB3YXJuaW5nSGFuZGxlcih2b2lkKiBjbG9zdXJlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCAuLi4p
CiB7CiAgICAgdmFfbGlzdCBhcmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIG1lc3NhZ2UpOwotICAg
IGdldFBhcnNlcihjbG9zdXJlKS0+ZXJyb3IoWE1MRG9jdW1lbnRQYXJzZXI6Ondhcm5pbmcsIG1l
c3NhZ2UsIGFyZ3MpOworICAgIGdldFBhcnNlcihjbG9zdXJlKS0+ZXJyb3IoWE1MRXJyb3JzOjp3
YXJuaW5nLCBtZXNzYWdlLCBhcmdzKTsKICAgICB2YV9lbmQoYXJncyk7CiB9CiAKQEAgLTExNjYs
NyArMTE2NCw3IEBAIHN0YXRpYyB2b2lkIGZhdGFsRXJyb3JIYW5kbGVyKHZvaWQqIGNsb3N1cmUs
IGNvbnN0IGNoYXIqIG1lc3NhZ2UsIC4uLikKIHsKICAgICB2YV9saXN0IGFyZ3M7CiAgICAgdmFf
c3RhcnQoYXJncywgbWVzc2FnZSk7Ci0gICAgZ2V0UGFyc2VyKGNsb3N1cmUpLT5lcnJvcihYTUxE
b2N1bWVudFBhcnNlcjo6ZmF0YWwsIG1lc3NhZ2UsIGFyZ3MpOworICAgIGdldFBhcnNlcihjbG9z
dXJlKS0+ZXJyb3IoWE1MRXJyb3JzOjpmYXRhbCwgbWVzc2FnZSwgYXJncyk7CiAgICAgdmFfZW5k
KGFyZ3MpOwogfQogCkBAIC0xMTc1LDcgKzExNzMsNyBAQCBzdGF0aWMgdm9pZCBub3JtYWxFcnJv
ckhhbmRsZXIodm9pZCogY2xvc3VyZSwgY29uc3QgY2hhciogbWVzc2FnZSwgLi4uKQogewogICAg
IHZhX2xpc3QgYXJnczsKICAgICB2YV9zdGFydChhcmdzLCBtZXNzYWdlKTsKLSAgICBnZXRQYXJz
ZXIoY2xvc3VyZSktPmVycm9yKFhNTERvY3VtZW50UGFyc2VyOjpub25GYXRhbCwgbWVzc2FnZSwg
YXJncyk7CisgICAgZ2V0UGFyc2VyKGNsb3N1cmUpLT5lcnJvcihYTUxFcnJvcnM6Om5vbkZhdGFs
LCBtZXNzYWdlLCBhcmdzKTsKICAgICB2YV9lbmQoYXJncyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCmluZGV4IGI1Y2ZhMjM0
MmQwZDY1MGQwNGMyMGJjMzhkN2ZlZTZiNjg1YzA2ZmEuLjZkZmI5MzIwOWVkZDU2N2M5MjA4Njk4
YjQwZjU4MThjYjIxN2Q5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlclF0LmNwcApAQCAtMTAxLDggKzEwMSw3IEBAIFhNTERvY3VtZW50UGFy
c2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQsIEZyYW1lVmlldyogZnJh
bWVWaWV3KQogICAgICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RpbmdT
Y3JpcHQoZmFsc2UpCiAgICAgLCBtX2ZpbmlzaENhbGxlZChmYWxzZSkKLSAgICAsIG1fZXJyb3JD
b3VudCgwKQotICAgICwgbV9sYXN0RXJyb3JQb3NpdGlvbihUZXh0UG9zaXRpb24xOjpiZWxvd1Jh
bmdlUG9zaXRpb24oKSkKKyAgICAsIG1feG1sRXJyb3JzKGRvY3VtZW50KQogICAgICwgbV9wZW5k
aW5nU2NyaXB0KDApCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uMTo6
YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVudChmYWxzZSkKQEAg
LTEyOCw4ICsxMjcsNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudAogICAgICwgbV9wYXJzZXJQ
YXVzZWQoZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RpbmdTY3JpcHQoZmFsc2UpCiAgICAgLCBtX2Zp
bmlzaENhbGxlZChmYWxzZSkKLSAgICAsIG1fZXJyb3JDb3VudCgwKQotICAgICwgbV9sYXN0RXJy
b3JQb3NpdGlvbihUZXh0UG9zaXRpb24xOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKKyAgICAsIG1f
eG1sRXJyb3JzKGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9wZW5kaW5nU2NyaXB0KDAp
CiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uMTo6YmVsb3dSYW5nZVBv
c2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQpAQCAtMTg1LDcgKzE4Myw3
IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvV3JpdGUoY29uc3QgU3RyaW5nJiBwYXJzZVN0
cmluZykKIAogICAgIGlmIChkb2N1bWVudCgpLT5kZWNvZGVyKCkgJiYgZG9jdW1lbnQoKS0+ZGVj
b2RlcigpLT5zYXdFcnJvcigpKSB7CiAgICAgICAgIC8vIElmIHRoZSBkZWNvZGVyIHNhdyBhbiBl
cnJvciwgcmVwb3J0IGl0IGFzIGZhdGFsIChzdG9wcyBwYXJzaW5nKQotICAgICAgICBoYW5kbGVF
cnJvcihmYXRhbCwgIkVuY29kaW5nIGVycm9yIiwgbGluZU51bWJlcigpLCBjb2x1bW5OdW1iZXIo
KSk7CisgICAgICAgIGhhbmRsZUVycm9yKFhNTEVycm9yczo6ZmF0YWwsICJFbmNvZGluZyBlcnJv
ciIsIGxpbmVOdW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0yMjUsNyArMjIzLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQoKQog
CiAgICAgaWYgKG1fc3RyZWFtLmVycm9yKCkgPT0gUVhtbFN0cmVhbVJlYWRlcjo6UHJlbWF0dXJl
RW5kT2ZEb2N1bWVudEVycm9yCiAgICAgICAgIHx8IChtX3dyb3RlVGV4dCAmJiAhbV9zYXdGaXJz
dEVsZW1lbnQgJiYgIW1fc2F3WFNMVHJhbnNmb3JtICYmICFtX3Nhd0Vycm9yKSkKLSAgICAgICAg
aGFuZGxlRXJyb3IoZmF0YWwsIHFQcmludGFibGUobV9zdHJlYW0uZXJyb3JTdHJpbmcoKSksIGxp
bmVOdW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOworICAgICAgICBoYW5kbGVFcnJvcihYTUxFcnJv
cnM6OmZhdGFsLCBxUHJpbnRhYmxlKG1fc3RyZWFtLmVycm9yU3RyaW5nKCkpLCBsaW5lTnVtYmVy
KCksIGNvbHVtbk51bWJlcigpKTsKIH0KIAogaW50IFhNTERvY3VtZW50UGFyc2VyOjpsaW5lTnVt
YmVyKCkgY29uc3QKQEAgLTM4Miw3ICszODAsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpw
YXJzZSgpCiAgICAgICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRlcjo6U3RhcnRFbGVtZW50OiB7CiAj
aWYgRU5BQkxFKFhIVE1MTVApCiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+aXNYSFRNTE1Q
RG9jdW1lbnQoKSAmJiAhbV9oYXNEb2NUeXBlRGVjbGFyYXRpb24pIHsKLSAgICAgICAgICAgICAg
ICBoYW5kbGVFcnJvcihmYXRhbCwgIkRPQ1RZUEUgZGVjbGFyYXRpb24gbG9zdC4iLCBsaW5lTnVt
YmVyKCksIGNvbHVtbk51bWJlcigpKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihYTUxF
cnJvcnM6OmZhdGFsLCAiRE9DVFlQRSBkZWNsYXJhdGlvbiBsb3N0LiIsIGxpbmVOdW1iZXIoKSwg
Y29sdW1uTnVtYmVyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
I2VuZGlmCkBAIC00NDAsOCArNDM4LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2Uo
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIGlm
IChtX3N0cmVhbS5lcnJvcigpICE9IFFYbWxTdHJlYW1SZWFkZXI6OlByZW1hdHVyZUVuZE9mRG9j
dW1lbnRFcnJvcikgewotICAgICAgICAgICAgICAgIEVycm9yVHlwZSB0eXBlID0gKG1fc3RyZWFt
LmVycm9yKCkgPT0gUVhtbFN0cmVhbVJlYWRlcjo6Tm90V2VsbEZvcm1lZEVycm9yKSA/Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXRhbCA6IHdhcm5pbmc7CisgICAgICAgICAg
ICAgICAgWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSA9IChtX3N0cmVhbS5lcnJvcigpID09IFFY
bWxTdHJlYW1SZWFkZXI6Ok5vdFdlbGxGb3JtZWRFcnJvcikgPworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWE1MRXJyb3JzOjpmYXRhbCA6IFhNTEVycm9yczo6d2FybmluZzsKICAg
ICAgICAgICAgICAgICBoYW5kbGVFcnJvcih0eXBlLCBxUHJpbnRhYmxlKG1fc3RyZWFtLmVycm9y
U3RyaW5nKCkpLCBsaW5lTnVtYmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uTnVtYmVyKCkpOwogICAgICAgICAgICAgfQpAQCAtNTAxLDcgKzQ5OSw3IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OnBhcnNlU3RhcnRFbGVtZW50KCkKICAgICAgICAgLy8gZW5zdXJlIHRo
ZSBuYW1lIG9mIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBvbiB0aGUgcm9vdCBlbG1lbnQgJ2h0bWwn
CiAgICAgICAgIC8vIE1VU1QgYmUgJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnCiAgICAg
ICAgIGlmIChsb2NhbE5hbWUgIT0gSFRNTE5hbWVzOjpodG1sVGFnLmxvY2FsTmFtZSgpKSB7Ci0g
ICAgICAgICAgICBoYW5kbGVFcnJvcihmYXRhbCwgIlhIVE1MTVAgZG9jdW1lbnQgZXhwZWN0cyAn
aHRtbCcgYXMgcm9vdCBlbGVtZW50LiIsIGxpbmVOdW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOwor
ICAgICAgICAgICAgaGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpmYXRhbCwgIlhIVE1MTVAgZG9jdW1l
bnQgZXhwZWN0cyAnaHRtbCcgYXMgcm9vdCBlbGVtZW50LiIsIGxpbmVOdW1iZXIoKSwgY29sdW1u
TnVtYmVyKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTcwNSw3ICs3
MDMsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZUR0ZCgpCiAgICAgZWxzZSBpZiAo
KHB1YmxpY0lkID09IFFMYXRpbjFTdHJpbmcoIi0vL1dBUEZPUlVNLy9EVEQgWEhUTUwgTW9iaWxl
IDEuMS8vRU4iKSkKICAgICAgICAgICAgICB8fCAocHVibGljSWQgPT0gUUxhdGluMVN0cmluZygi
LS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4wLy9FTiIpKSkgewogICAgICAgICBpZiAo
QXRvbWljU3RyaW5nKG5hbWUpICE9IEhUTUxOYW1lczo6aHRtbFRhZy5sb2NhbE5hbWUoKSkgewot
ICAgICAgICAgICAgaGFuZGxlRXJyb3IoZmF0YWwsICJJbnZhbGlkIERPQ1RZUEUgZGVjbGFyYXRp
b24sIGV4cGVjdGVkICdodG1sJyBhcyByb290IGVsZW1lbnQuIiwgbGluZU51bWJlcigpLCBjb2x1
bW5OdW1iZXIoKSk7CisgICAgICAgICAgICBoYW5kbGVFcnJvcihYTUxFcnJvcnM6OmZhdGFsLCAi
SW52YWxpZCBET0NUWVBFIGRlY2xhcmF0aW9uLCBleHBlY3RlZCAnaHRtbCcgYXMgcm9vdCBlbGVt
ZW50LiIsIGxpbmVOdW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100354</attachid>
            <date>2011-07-11 13:09:39 -0700</date>
            <delta_ts>2011-07-13 15:01:52 -0700</delta_ts>
            <desc>Patch (comments addressed + qt build fix)</desc>
            <filename>bug-64305-20110712000936.patch</filename>
            <type>text/plain</type>
            <size>34570</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3MzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjI5OTgy
YWQ5NjFiMDNmMzQwMjBiMzA3ZjZmZjAwOWMxNGZhMjNiZi4uMjQ0Y2ZmNzcyYjZlODk3MWZiODE3
MDA4NDg1ZTk5NmVmMDBiNWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEzNjIsNiArMTM2
Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKIAogICAgIHhtbC9ET01QYXJzZXIuY3BwCiAgICAg
eG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAKKyAgICB4bWwvWE1MRXJyb3JzLmNwcAogICAg
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHAKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50VGhyb3R0bGUuY3BwCiAgICAgeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDc1ZGFmN2RmODM4MmM3MDZlOTRiMTIyN2IzZDY5MWQxMzRmMWJjNTAuLjhiNzExZTI0
ZmY2NTU4OTJhNjBkZTI3M2NiZGZlYWMzNWIyNDA0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NyBAQAorMjAxMS0wNy0xMSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBNb3ZlIFhNTCBlcnJvcnMgaGFuZGxpbmcgb3V0IGZyb20gWE1MRG9jdW1lbnRQ
YXJzZXIgKHJlZmFjdG9yaW5nKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0MzA1CisKKyAgICAgICAgWE1MIGVycm9ycyBoYW5kbGluZyBsb2dpYyBp
cyBtb3ZlZCBvdXQgZnJvbSBYTUxEb2N1bWVudFBhcnNlciB0byBhbGxvdyB1c2luZyBpdCBmb3Ig
WFNMVCBlcnJvciBoYW5kbGluZyBhcyB3ZWxsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIHRlc3RzIG5lZWRlZCBhcyB0aGVyZSBpcyBubyBuZXcg
ZnVuY3Rpb25hbGl0eSBhZGRlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB4bWwvWE1MRXJyb3JzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6
OlhNTEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAg
ICogeG1sL1hNTEVycm9ycy5oOiBBZGRlZC4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwdXNo
Q3VycmVudE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRs
ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjppbnNlcnRFcnJv
ck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
OgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVycm9yQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb1dyaXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp3
YXJuaW5nSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpmYXRhbEVycm9ySGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpub3JtYWxFcnJvckhhbmRsZXIpOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVu
dFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6OmRvV3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6
OmRvRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VTdGFydEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRHRkKToKKwogMjAxMS0w
Ny0xMSAgTXVzdGFmaXp1ciBSYWhhbWFuICA8bXVzdGFmLmhlcmVAZ21haWwuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggNjRkZWE4OGI1MDc1NTRhYTBhMTBkZTVmNDMyNzFmZGFkMmFmNzQ4Zi4uZWQyOGZk
ZGU2ZGMyY2E2ODM0YTAzNTcyZTIyOWQwZGE2NWRhZjUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zODAwLDYgKzM4MDAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL05hdGl2
ZVhQYXRoTlNSZXNvbHZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5T
UmVzb2x2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAwNmEyOTk2Mjg2ZTNiZTAzYmFmMjFlY2NiZDY3ZDM4OTdkYTU3YzBjLi5hMmNhYTZl
YWQyNWQzZDdiYmE3Y2M2ZjNlNGYxYzQ2YzdjODQyYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02
MTM2LDYgKzYxMzYsOCBAQAogICAgICAgICAgICAgJ3htbC9ET01QYXJzZXIuaCcsCiAgICAgICAg
ICAgICAneG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ3htbC9O
YXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCcsCisgICAgICAgICAgICAneG1sL1hNTEVycm9ycy5jcHAn
LAorICAgICAgICAgICAgJ3htbC9YTUxFcnJvcnMuaCcsCiAgICAgICAgICAgICAneG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAneG1sL1hNTEh0dHBSZXF1ZXN0LmgnLAogICAg
ICAgICAgICAgJ3htbC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggNTBiN2Q1YmU4YjE1NThjMWE2MjRhM2M5MWNlZjc5MGVkMmE3MzA5MS4uYWFjNDQ0YzBlY2Nk
ODhlNTc2MGY3ZDIzMjVjZGJjYjAwNTE0ZjJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTExOTQsNiAr
MTE5NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHAgXAogICAg
IHhtbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgXAogICAgIHhtbC9Y
TUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAgXAorICAgIHhtbC9YTUxFcnJvcnMuY3BwIFwKICAgICB4
bWwvWE1MU2VyaWFsaXplci5jcHAgXAogICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIAogCkBAIC0yNDk1LDYgKzI0OTYsNyBAQCBIRUFERVJTICs9IFwKICAgICB4bWwvTmF0aXZl
WFBhdGhOU1Jlc29sdmVyLmggXAogICAgIHhtbC9YTUxIdHRwUmVxdWVzdC5oIFwKICAgICB4bWwv
WE1MSHR0cFJlcXVlc3RVcGxvYWQuaCBcCisgICAgeG1sL1hNTEVycm9ycy5oIFwKICAgICB4bWwv
WE1MU2VyaWFsaXplci5oIFwKICAgICB4bWwvWFBhdGhFdmFsdWF0b3IuaCBcCiAgICAgeG1sL1hQ
YXRoRXhwcmVzc2lvbi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggZjNmNDRmNmMxZmYzNDcxN2YyMmIwOTI1Y2NjZDE1NmE5NTg4NjNkOS4u
NGJkOGM1YTRjOGEyM2Y3N2ZlNmUwOTMxOTU2MDQxYzgxMTM5OGZjNyAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQyMDQ4LDYgKzQyMDQ4LDE0
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHht
bFxYTUxFcnJvcnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlx4bWxcWE1MRXJyb3JzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxYTUxIdHRwUmVxdWVzdC5jcHAiCiAJCQkJPgogCQkJ
PC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDU4NjU4MGQzNzVjMGE1MWZmZTM4NzZjZjA5NmY3ZGYyZDkyMzcwN2YuLmMw
YjVjYTIxMzUzNTE2ZDQyMjU3MzFmYjdiMzY5YjhlYzZkNzhlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0ODEsNiArMTQ4
MSw4IEBACiAJCTU5QkMzOTNGMTEwNTRBMTMwMEZEODVEQiAvKiBKYXZhU3RyaW5nSlNDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUJDMzkzRTExMDU0
QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pTQy5oICovOyB9OwogCQk1OUMyN0YwNTEzOEQyOEMx
MDA3OUI3RTIgLyogTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDMjdGMDQxMzhEMjhDMTAwNzlCN0UyIC8qIE5l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcCAqLzsgfTsKIAkJNTlDMjdGMDcxMzhEMjhDRjAwNzlCN0Uy
IC8qIE5ldHdvcmtSZXNvdXJjZXNEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1OUMyN0YwNjEzOEQyOENGMDA3OUI3RTIgLyogTmV0d29ya1Jlc291
cmNlc0RhdGEuaCAqLzsgfTsKKwkJNTlDMjgwNDUxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9y
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUMy
ODA0MzEzOERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmNwcCAqLzsgfTsKKwkJNTlDMjgwNDYx
MzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDMjgwNDQxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9y
cy5oICovOyB9OwogCQk1OUQxQzEwNDExRUI1RENGMDBCNjM4QzggLyogRGV2aWNlT3JpZW50YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlE
MUMxMDMxMUVCNURDRjAwQjYzOEM4IC8qIERldmljZU9yaWVudGF0aW9uLmNwcCAqLzsgfTsKIAkJ
NTlFNTYwQTcxMTA1MzM2NjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlFNTYwQTYxMTA1MzM2NjAwQUExMjU4
IC8qIEphdmFDbGFzc0pTQy5oICovOyB9OwogCQk1OUU1NjBBOTExMDUzMzZGMDBBQTEyNTggLyog
SmF2YUNsYXNzSlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5RTU2MEE4MTEwNTMzNkYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuY3BwICovOyB9
OwpAQCAtODAzMSw2ICs4MDMzLDggQEAKIAkJNTlCQzM5M0UxMTA1NEExMzAwRkQ4NURCIC8qIEph
dmFTdHJpbmdKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSmF2YVN0cmlu
Z0pTQy5oOyBwYXRoID0ganNjL0phdmFTdHJpbmdKU0MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTlDMjdGMDQxMzhEMjhDMTAwNzlCN0UyIC8qIE5ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlDMjdGMDYxMzhEMjhD
RjAwNzlCN0UyIC8qIE5ldHdvcmtSZXNvdXJjZXNEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZXNEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU5QzI4MDQzMTM4REMyNDEwMDc5QjdFMiAvKiBYTUxFcnJvcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRXJyb3JzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTlDMjgwNDQxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9y
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxFcnJvcnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlEMUMxMDMxMUVCNURDRjAwQjYzOEM4IC8qIERldmlj
ZU9yaWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
dmljZU9yaWVudGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlFNTYw
QTYxMTA1MzM2NjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBKYXZhQ2xhc3NKU0MuaDsgcGF0aCA9IGpzYy9KYXZhQ2xhc3NKU0MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlFNTYwQTgxMTA1MzM2RjAwQUExMjU4IC8q
IEphdmFDbGFzc0pTQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBK
YXZhQ2xhc3NKU0MuY3BwOyBwYXRoID0ganNjL0phdmFDbGFzc0pTQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xOTAwNCw2ICsxOTAwOCw4IEBACiAJCQkJRTEwQjlCNkIwQjc0
NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgKi8sCiAJCQkJRTEwQjlC
NkEwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oICovLAogCQkJCUE4
MzNDN0Y2MEEyQ0YxRDgwMEQ1NzY2NCAvKiB4bWxhdHRycy5pbiAqLywKKwkJCQk1OUMyODA0MzEz
OERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmNwcCAqLywKKwkJCQk1OUMyODA0NDEzOERDMjQx
MDA3OUI3RTIgLyogWE1MRXJyb3JzLmggKi8sCiAJCQkJQkM3NzJDNDQwQzRFQjJDNjAwODMyODVG
IC8qIFhNTEh0dHBSZXF1ZXN0LmNwcCAqLywKIAkJCQlCQzc3MkM0NTBDNEVCMkM2MDA4MzI4NUYg
LyogWE1MSHR0cFJlcXVlc3QuaCAqLywKIAkJCQlCQzM0OEJBNzBEQjdGMUI4MDA0QUJBQjkgLyog
WE1MSHR0cFJlcXVlc3QuaWRsICovLApAQCAtMjMxMTYsNiArMjMxMjIsNyBAQAogCQkJCTA4MURE
NDlDMTNCQTFBNjAwMERDNzYyNyAvKiBTVkdQcm9wZXJ0eUluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mjg4OUI0RDEzQzYyMzkyMDA5QTYxNTYgLyogSW5zcGVj
dG9yU3R5bGVUZXh0RWRpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OUMyODA0NjEzOERDMjQx
MDA3OUI3RTIgLyogWE1MRXJyb3JzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODg3LDYgKzI1ODk0
LDcgQEAKIAkJCQk0M0Y2RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgyODg5QjRDMTNDNjIzOTIwMDlBNjE1NiAvKiBJbnNw
ZWN0b3JTdHlsZVRleHRFZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNEMjU5NzcxM0M4
MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5QzI4
MDQ1MTM4REMyNDEwMDc5QjdFMiAvKiBYTUxFcnJvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNmZlYTIzMzBkMDRjOTRlNzM4NWE4YjUy
NGEyNzU0ZGE0M2M0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLgorICogT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiWE1MRXJyb3JzLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK2Nv
bnN0IGludCBtYXhFcnJvcnMgPSAyNTsKKworWE1MRXJyb3JzOjpYTUxFcnJvcnMoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fZXJyb3JDb3Vu
dCgwKQorICAgICwgbV9sYXN0RXJyb3JQb3NpdGlvbihUZXh0UG9zaXRpb24xOjpiZWxvd1Jhbmdl
UG9zaXRpb24oKSkKK3sKK30KKwordm9pZCBYTUxFcnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlw
ZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcikKK3sKKyAgICBoYW5kbGVFcnJvcih0eXBlLCBtZXNzYWdlLCBUZXh0UG9zaXRpb24xKFdU
Rjo6T25lQmFzZWROdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgV1RGOjpPbmVC
YXNlZE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGNvbHVtbk51bWJlcikpKTsKK30KKwordm9pZCBY
TUxFcnJvcnM6OmhhbmRsZUVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdl
LCBUZXh0UG9zaXRpb24xIHBvc2l0aW9uKQoreworICAgIGlmICh0eXBlID09IGZhdGFsIHx8ICht
X2Vycm9yQ291bnQgPCBtYXhFcnJvcnMgJiYgbV9sYXN0RXJyb3JQb3NpdGlvbi5tX2xpbmUgIT0g
cG9zaXRpb24ubV9saW5lICYmIG1fbGFzdEVycm9yUG9zaXRpb24ubV9jb2x1bW4gIT0gcG9zaXRp
b24ubV9jb2x1bW4pKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIHdh
cm5pbmc6CisgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZXMgKz0gIndhcm5pbmcgb24gbGluZSAi
ICsgU3RyaW5nOjpudW1iZXIocG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCkpICsgIiBhdCBj
b2x1bW4gIiArIFN0cmluZzo6bnVtYmVyKHBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkp
ICsgIjogIiArIG1lc3NhZ2U7CisgICAgICAgIGNhc2UgZmF0YWw6CisgICAgICAgIGNhc2Ugbm9u
RmF0YWw6CisgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZXMgKz0gImVycm9yIG9uIGxpbmUgIiAr
IFN0cmluZzo6bnVtYmVyKHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKSArICIgYXQgY29s
dW1uICIgKyBTdHJpbmc6Om51bWJlcihwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKSAr
ICI6ICIgKyBtZXNzYWdlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBtX2xhc3RFcnJvclBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICsrbV9lcnJvckNvdW50
OworICAgIH0KK30KKworc3RhdGljIGlubGluZSBSZWZQdHI8RWxlbWVudD4gY3JlYXRlWEhUTUxQ
YXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCogZG9jLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZXMpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVs
ZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgInBhcnNlcmVycm9yIiwgeGh0bWxOYW1lc3Bh
Y2VVUkkpLCBmYWxzZSk7CisgICAgcmVwb3J0RWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0
ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAj
Yzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6
ICNmZGQ7IGNvbG9yOiBibGFjayIpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
UmVmUHRyPEVsZW1lbnQ+IGgzID0gZG9jLT5jcmVhdGVFbGVtZW50KGgzVGFnLCBmYWxzZSk7Cisg
ICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQoaDMuZ2V0KCksIGVjKTsKKyAgICBoMy0+YXBw
ZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSgiVGhpcyBwYWdlIGNvbnRhaW5zIHRoZSBmb2xs
b3dpbmcgZXJyb3JzOiIpLCBlYyk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gZml4ZWQgPSBkb2Mt
PmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxzZSk7CisgICAgcmVwb3J0RWxlbWVudC0+YXBwZW5k
Q2hpbGQoZml4ZWQuZ2V0KCksIGVjKTsKKyAgICBmaXhlZC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0
ciwgImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTJweCIpOworICAgIGZpeGVkLT5h
cHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKGVycm9yTWVzc2FnZXMpLCBlYyk7CisKKyAg
ICBoMyA9IGRvYy0+Y3JlYXRlRWxlbWVudChoM1RhZywgZmFsc2UpOworICAgIHJlcG9ydEVsZW1l
bnQtPmFwcGVuZENoaWxkKGgzLmdldCgpLCBlYyk7CisgICAgaDMtPmFwcGVuZENoaWxkKGRvYy0+
Y3JlYXRlVGV4dE5vZGUoIkJlbG93IGlzIGEgcmVuZGVyaW5nIG9mIHRoZSBwYWdlIHVwIHRvIHRo
ZSBmaXJzdCBlcnJvci4iKSwgZWMpOworCisgICAgcmV0dXJuIHJlcG9ydEVsZW1lbnQ7Cit9CisK
K3ZvaWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpIGNvbnN0Cit7CisgICAg
Ly8gT25lIG9yIG1vcmUgZXJyb3JzIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHRoZSBjb2Rl
LiBEaXNwbGF5IGFuIGVycm9yIGJsb2NrIHRvIHRoZSB1c2VyIGFib3ZlCisgICAgLy8gdGhlIG5v
cm1hbCBjb250ZW50ICh0aGUgRE9NIHRyZWUgaXMgY3JlYXRlZCBtYW51YWxseSBhbmQgaW5jbHVk
ZXMgbGluZS9jb2wgaW5mbyByZWdhcmRpbmcKKyAgICAvLyB3aGVyZSB0aGUgZXJyb3JzIGFyZSBs
b2NhdGVkKQorCisgICAgLy8gQ3JlYXRlIGVsZW1lbnRzIGZvciBkaXNwbGF5CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGRvY3VtZW50RWxlbWVudCA9IG1f
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmICghZG9jdW1lbnRFbGVtZW50KSB7
CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiByb290RWxlbWVudCA9IG1fZG9jdW1lbnQtPmNyZWF0
ZUVsZW1lbnQoaHRtbFRhZywgZmFsc2UpOworICAgICAgICBtX2RvY3VtZW50LT5hcHBlbmRDaGls
ZChyb290RWxlbWVudCwgZWMpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4gYm9keSA9IG1fZG9j
dW1lbnQtPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgZmFsc2UpOworICAgICAgICByb290RWxlbWVu
dC0+YXBwZW5kQ2hpbGQoYm9keSwgZWMpOworICAgICAgICBkb2N1bWVudEVsZW1lbnQgPSBib2R5
LmdldCgpOworICAgIH0KKyNpZiBFTkFCTEUoU1ZHKQorICAgIGVsc2UgaWYgKGRvY3VtZW50RWxl
bWVudC0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkgeworICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1lbnQgPSBtX2RvY3VtZW50LT5jcmVhdGVFbGVt
ZW50KGh0bWxUYWcsIGZhbHNlKTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGJvZHkgPSBtX2Rv
Y3VtZW50LT5jcmVhdGVFbGVtZW50KGJvZHlUYWcsIGZhbHNlKTsKKyAgICAgICAgcm9vdEVsZW1l
bnQtPmFwcGVuZENoaWxkKGJvZHksIGVjKTsKKyAgICAgICAgYm9keS0+YXBwZW5kQ2hpbGQoZG9j
dW1lbnRFbGVtZW50LCBlYyk7CisgICAgICAgIG1fZG9jdW1lbnQtPmFwcGVuZENoaWxkKHJvb3RF
bGVtZW50LmdldCgpLCBlYyk7CisgICAgICAgIGRvY3VtZW50RWxlbWVudCA9IGJvZHkuZ2V0KCk7
CisgICAgfQorI2VuZGlmCisgICAgUmVmUHRyPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBjcmVh
dGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKG1fZG9jdW1lbnQsIG1fZXJyb3JNZXNzYWdlcyk7Cisg
ICAgZG9jdW1lbnRFbGVtZW50LT5pbnNlcnRCZWZvcmUocmVwb3J0RWxlbWVudCwgZG9jdW1lbnRF
bGVtZW50LT5maXJzdENoaWxkKCksIGVjKTsKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICBpZiAobV9k
b2N1bWVudC0+dHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkgeworICAgICAgICBSZWZQdHI8RWxl
bWVudD4gcGFyYWdyYXBoID0gbV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudChwVGFnLCBmYWxzZSk7
CisgICAgICAgIHBhcmFncmFwaC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNl
OiBub3JtYWwiKTsKKyAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChtX2RvY3VtZW50LT5j
cmVhdGVUZXh0Tm9kZSgiVGhpcyBkb2N1bWVudCB3YXMgY3JlYXRlZCBhcyB0aGUgcmVzdWx0IG9m
IGFuIFhTTCB0cmFuc2Zvcm1hdGlvbi4gVGhlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGdpdmVu
IGFyZSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCByZXN1bHQuIiksIGVjKTsKKyAgICAgICAgcmVwb3J0
RWxlbWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBoLnJlbGVhc2UoKSwgZWMpOworICAgIH0KKyNl
bmRpZgorICAgIG1fZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9y
cy5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmM2ZhYjUw
ZmY3NDczM2ZkYWY1YjM4N2UwNTQ1YjVlMjkwMTI0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LgorICogT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFhNTEVycm9yc19oCisjZGVmaW5lIFhNTEVycm9yc19oCisKKyNpbmNsdWRl
IDxQbGF0Zm9ybVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgor
CisjaWYgIVVTRShRWE1MU1RSRUFNKQorI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXIuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCitjbGFzcyBYTUxF
cnJvcnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IFhNTEVycm9ycyhEb2N1bWVudCopOworCisg
ICAgLy8gRXhwb3NlZCBmb3IgY2FsbGJhY2tzOgorICAgIGVudW0gRXJyb3JUeXBlIHsgd2Fybmlu
Zywgbm9uRmF0YWwsIGZhdGFsIH07CisgICAgdm9pZCBoYW5kbGVFcnJvcihFcnJvclR5cGUsIGNv
bnN0IGNoYXIqIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAg
ICB2b2lkIGhhbmRsZUVycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgVGV4dFBv
c2l0aW9uMSk7CisKKyAgICB2b2lkIGluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisKKyAgICBpbnQgbV9lcnJvckNv
dW50OworICAgIFRleHRQb3NpdGlvbjEgbV9sYXN0RXJyb3JQb3NpdGlvbjsKKyAgICBTdHJpbmcg
bV9lcnJvck1lc3NhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gWE1MRXJyb3JzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggMjM2M2VhZDFhM2Y5Zjg2ZTM5Y2Q1MGYwZDczYWY5MGYzNjk2Mzdi
MS4uYzNlNDI5MmEwYjU3YWJhYTBhMzc1MDBhMWNjMGMxM2FjZjhhYzFmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKICNpbmNsdWRlICJUcmVlRGVwdGhMaW1pdC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIlhNTEVycm9ycy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNjYsOCArNjYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKLWNvbnN0IGludCBtYXhFcnJvcnMgPSAyNTsKLQogdm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6cHVzaEN1cnJlbnROb2RlKENvbnRhaW5lck5vZGUqIG4pCiB7CiAg
ICAgQVNTRVJUKG4pOwpAQCAtNzcsNyArNzUsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpw
dXNoQ3VycmVudE5vZGUoQ29udGFpbmVyTm9kZSogbikKICAgICBtX2N1cnJlbnROb2RlU3RhY2su
YXBwZW5kKG1fY3VycmVudE5vZGUpOwogICAgIG1fY3VycmVudE5vZGUgPSBuOwogICAgIGlmICht
X2N1cnJlbnROb2RlU3RhY2suc2l6ZSgpID4gbWF4RE9NVHJlZURlcHRoKQotICAgICAgICBoYW5k
bGVFcnJvcihmYXRhbCwgIkV4Y2Vzc2l2ZSBub2RlIG5lc3RpbmcuIiwgbGluZU51bWJlcigpLCBj
b2x1bW5OdW1iZXIoKSk7CisgICAgICAgIGhhbmRsZUVycm9yKFhNTEVycm9yczo6ZmF0YWwsICJF
eGNlc3NpdmUgbm9kZSBuZXN0aW5nLiIsIGxpbmVOdW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOwog
fQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwb3BDdXJyZW50Tm9kZSgpCkBAIC0xMzUsMzEg
KzEzMywxNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVk
U3RyaW5nJiBzKQogICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZl
bnRzKCk7CiB9CiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKEVycm9yVHlw
ZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikK
K3ZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBl
IHR5cGUsIGNvbnN0IGNoYXIqIG0sIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQog
ewogICAgIGhhbmRsZUVycm9yKHR5cGUsIG0sIFRleHRQb3NpdGlvbjEoV1RGOjpPbmVCYXNlZE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBXVEY6Ok9uZUJhc2VkTnVtYmVyOjpm
cm9tT25lQmFzZWRJbnQoY29sdW1uTnVtYmVyKSkpOwogfQogCi12b2lkIFhNTERvY3VtZW50UGFy
c2VyOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4dFBvc2l0
aW9uMSBwb3NpdGlvbikKK3ZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKFhNTEVy
cm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG0sIFRleHRQb3NpdGlvbjEgcG9zaXRp
b24pCiB7Ci0gICAgaWYgKHR5cGUgPT0gZmF0YWwgfHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9y
cyAmJiBtX2xhc3RFcnJvclBvc2l0aW9uLm1fbGluZSAhPSBwb3NpdGlvbi5tX2xpbmUgJiYgbV9s
YXN0RXJyb3JQb3NpdGlvbi5tX2NvbHVtbiAhPSBwb3NpdGlvbi5tX2NvbHVtbikpIHsKLSAgICAg
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIHdhcm5pbmc6Ci0gICAgICAgICAg
ICAgICAgbV9lcnJvck1lc3NhZ2VzICs9ICJ3YXJuaW5nIG9uIGxpbmUgIiArIFN0cmluZzo6bnVt
YmVyKHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpKSArICIgYXQgY29sdW1uICIgKyBTdHJp
bmc6Om51bWJlcihwb3NpdGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKSArICI6ICIgKyBtOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBmYXRhbDoKLSAgICAgICAg
ICAgIGNhc2Ugbm9uRmF0YWw6Ci0gICAgICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2VzICs9ICJl
cnJvciBvbiBsaW5lICIgKyBTdHJpbmc6Om51bWJlcihwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJ
bnQoKSkgKyAiIGF0IGNvbHVtbiAiICsgU3RyaW5nOjpudW1iZXIocG9zaXRpb24ubV9jb2x1bW4u
b25lQmFzZWRJbnQoKSkgKyAiOiAiICsgbTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbGFzdEVy
cm9yUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgKyttX2Vycm9yQ291bnQ7Ci0gICAgfQot
Ci0gICAgaWYgKHR5cGUgIT0gd2FybmluZykKKyAgICBtX3htbEVycm9ycy5oYW5kbGVFcnJvcih0
eXBlLCBtLCBwb3NpdGlvbik7CisgICAgaWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3YXJuaW5nKQog
ICAgICAgICBtX3Nhd0Vycm9yID0gdHJ1ZTsKLQotICAgIGlmICh0eXBlID09IGZhdGFsKQorICAg
IGlmICh0eXBlID09IFhNTEVycm9yczo6ZmF0YWwpCiAgICAgICAgIHN0b3BQYXJzaW5nKCk7CiB9
CiAKQEAgLTI1MSw3MCArMjM1LDE0IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaFdh
c0NhbGxlZCgpCiAgICAgcmV0dXJuIG1fZmluaXNoQ2FsbGVkOwogfQogCi1zdGF0aWMgaW5saW5l
IFJlZlB0cjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50KiBk
b2MsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlcykKLXsKLSAgICBSZWZQdHI8RWxlbWVudD4g
cmVwb3J0RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCAicGFyc2VyZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVSSSksIGZhbHNlKTsKLSAgICByZXBvcnRF
bGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxvY2s7IHdoaXRlLXNw
YWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAgMWVtIDAgMWVtOyBt
YXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJsYWNrIik7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RWxlbWVudD4gaDMgPSBkb2MtPmNy
ZWF0ZUVsZW1lbnQoaDNUYWcsIGZhbHNlKTsKLSAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGls
ZChoMy5nZXQoKSwgZWMpOwotICAgIGgzLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2Rl
KCJUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBlcnJvcnM6IiksIGVjKTsKLQotICAg
IFJlZlB0cjxFbGVtZW50PiBmaXhlZCA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIGZhbHNl
KTsKLSAgICByZXBvcnRFbGVtZW50LT5hcHBlbmRDaGlsZChmaXhlZC5nZXQoKSwgZWMpOwotICAg
IGZpeGVkLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2Zv
bnQtc2l6ZToxMnB4Iik7Ci0gICAgZml4ZWQtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5v
ZGUoZXJyb3JNZXNzYWdlcyksIGVjKTsKLQotICAgIGgzID0gZG9jLT5jcmVhdGVFbGVtZW50KGgz
VGFnLCBmYWxzZSk7Ci0gICAgcmVwb3J0RWxlbWVudC0+YXBwZW5kQ2hpbGQoaDMuZ2V0KCksIGVj
KTsKLSAgICBoMy0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSgiQmVsb3cgaXMgYSBy
ZW5kZXJpbmcgb2YgdGhlIHBhZ2UgdXAgdG8gdGhlIGZpcnN0IGVycm9yLiIpLCBlYyk7Ci0KLSAg
ICByZXR1cm4gcmVwb3J0RWxlbWVudDsKLX0KLQogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aW5z
ZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQogewogI2lmIFVTRShRWE1MU1RSRUFNKQogICAgIGlmICht
X3BhcnNpbmdGcmFnbWVudCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgLy8gT25lIG9y
IG1vcmUgZXJyb3JzIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHRoZSBjb2RlLiBEaXNwbGF5
IGFuIGVycm9yIGJsb2NrIHRvIHRoZSB1c2VyIGFib3ZlCi0gICAgLy8gdGhlIG5vcm1hbCBjb250
ZW50ICh0aGUgRE9NIHRyZWUgaXMgY3JlYXRlZCBtYW51YWxseSBhbmQgaW5jbHVkZXMgbGluZS9j
b2wgaW5mbyByZWdhcmRpbmcKLSAgICAvLyB3aGVyZSB0aGUgZXJyb3JzIGFyZSBsb2NhdGVkKQog
Ci0gICAgLy8gQ3JlYXRlIGVsZW1lbnRzIGZvciBkaXNwbGF5Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBS
ZWZQdHI8RWxlbWVudD4gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOwotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50
PiByb290RWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGh0bWxUYWcsIGZhbHNlKTsK
LSAgICAgICAgZG9jdW1lbnQtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LCBlYyk7Ci0gICAgICAg
IFJlZlB0cjxFbGVtZW50PiBib2R5ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywg
ZmFsc2UpOwotICAgICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSwgZWMpOwotICAg
ICAgICBkb2N1bWVudEVsZW1lbnQgPSBib2R5LmdldCgpOwotICAgIH0KLSNpZiBFTkFCTEUoU1ZH
KQotICAgIGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudC0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFt
ZXM6OnN2Z05hbWVzcGFjZVVSSSkgewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gcm9vdEVsZW1l
bnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChodG1sVGFnLCBmYWxzZSk7Ci0gICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBib2R5ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgZmFs
c2UpOwotICAgICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSwgZWMpOwotICAgICAg
ICBib2R5LT5hcHBlbmRDaGlsZChkb2N1bWVudEVsZW1lbnQsIGVjKTsKLSAgICAgICAgZG9jdW1l
bnQtPmFwcGVuZENoaWxkKHJvb3RFbGVtZW50LmdldCgpLCBlYyk7Ci0gICAgICAgIGRvY3VtZW50
RWxlbWVudCA9IGJvZHkuZ2V0KCk7Ci0gICAgfQotI2VuZGlmCi0gICAgUmVmUHRyPEVsZW1lbnQ+
IHJlcG9ydEVsZW1lbnQgPSBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKGRvY3VtZW50LCBt
X2Vycm9yTWVzc2FnZXMpOwotICAgIGRvY3VtZW50RWxlbWVudC0+aW5zZXJ0QmVmb3JlKHJlcG9y
dEVsZW1lbnQsIGRvY3VtZW50RWxlbWVudC0+Zmlyc3RDaGlsZCgpLCBlYyk7Ci0jaWYgRU5BQkxF
KFhTTFQpCi0gICAgaWYgKGRvY3VtZW50LT50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7Ci0g
ICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGggPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVu
dChwVGFnLCBmYWxzZSk7Ci0gICAgICAgIHBhcmFncmFwaC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0
ciwgIndoaXRlLXNwYWNlOiBub3JtYWwiKTsKLSAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGls
ZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMg
dGhlIHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4g
bnVtYmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiIpLCBlYyk7Ci0g
ICAgICAgIHJlcG9ydEVsZW1lbnQtPmFwcGVuZENoaWxkKHBhcmFncmFwaC5yZWxlYXNlKCksIGVj
KTsKLSAgICB9Ci0jZW5kaWYKLSAgICBkb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwor
ICAgIG1feG1sRXJyb3JzLmluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7CiB9CiAKIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiB1bnVzZWRSZXNv
dXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaApp
bmRleCAzYWNkZDI1YzU1ZGMwMzViOGYzMmE3NDE3NWE0NmQ5ODllZWIyNzVjLi5iNmM1NjljMmMy
NTAxMzM0N2VlZGZiYjNiOWM1YzZlYWUwMzliMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCisjaW5jbHVkZSAiWE1M
RXJyb3JzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtODYsOSArODcsOCBAQCBjbGFz
cyBUZXh0OwogICAgICAgICB+WE1MRG9jdW1lbnRQYXJzZXIoKTsKIAogICAgICAgICAvLyBFeHBv
c2VkIGZvciBjYWxsYmFja3M6Ci0gICAgICAgIGVudW0gRXJyb3JUeXBlIHsgd2FybmluZywgbm9u
RmF0YWwsIGZhdGFsIH07Ci0gICAgICAgIHZvaWQgaGFuZGxlRXJyb3IoRXJyb3JUeXBlLCBjb25z
dCBjaGFyKiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7Ci0gICAg
ICAgIHZvaWQgaGFuZGxlRXJyb3IoRXJyb3JUeXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBUZXh0
UG9zaXRpb24xKTsKKyAgICAgICAgdm9pZCBoYW5kbGVFcnJvcihYTUxFcnJvcnM6OkVycm9yVHlw
ZSwgY29uc3QgY2hhciogbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
OworICAgICAgICB2b2lkIGhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBlLCBjb25zdCBj
aGFyKiBtZXNzYWdlLCBUZXh0UG9zaXRpb24xKTsKIAogICAgICAgICB2b2lkIHNldElzWEhUTUxE
b2N1bWVudChib29sIGlzWEhUTUwpIHsgbV9pc1hIVE1MRG9jdW1lbnQgPSBpc1hIVE1MOyB9CiAg
ICAgICAgIGJvb2wgaXNYSFRNTERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1hIVE1MRG9j
dW1lbnQ7IH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2Vsc2UKIHB1YmxpYzoKICAg
ICAgICAgLy8gY2FsbGJhY2tzIGZyb20gcGFyc2VyIFNBWAotICAgICAgICB2b2lkIGVycm9yKEVy
cm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdmFfbGlzdCBhcmdzKSBXVEZfQVRUUklCVVRF
X1BSSU5URigzLCAwKTsKKyAgICAgICAgdm9pZCBlcnJvcihYTUxFcnJvcnM6OkVycm9yVHlwZSwg
Y29uc3QgY2hhciogbWVzc2FnZSwgdmFfbGlzdCBhcmdzKSBXVEZfQVRUUklCVVRFX1BSSU5URigz
LCAwKTsKICAgICAgICAgdm9pZCBzdGFydEVsZW1lbnROcyhjb25zdCB4bWxDaGFyKiB4bWxMb2Nh
bE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJLCBp
bnQgbmJfbmFtZXNwYWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4bWxD
aGFyKiogbmFtZXNwYWNlcywgaW50IG5iX2F0dHJpYnV0ZXMsIGludCBuYl9kZWZhdWx0ZWQsIGNv
bnN0IHhtbENoYXIqKiBsaWJ4bWxBdHRyaWJ1dGVzKTsKICAgICAgICAgdm9pZCBlbmRFbGVtZW50
TnMoKTsKQEAgLTIwNyw5ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbV9yZXF1ZXN0
aW5nU2NyaXB0OwogICAgICAgICBib29sIG1fZmluaXNoQ2FsbGVkOwogCi0gICAgICAgIGludCBt
X2Vycm9yQ291bnQ7Ci0gICAgICAgIFRleHRQb3NpdGlvbjEgbV9sYXN0RXJyb3JQb3NpdGlvbjsK
LSAgICAgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlczsKKyAgICAgICAgWE1MRXJyb3JzIG1feG1s
RXJyb3JzOwogCiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9w
ZW5kaW5nU2NyaXB0OwogICAgICAgICBSZWZQdHI8RWxlbWVudD4gbV9zY3JpcHRFbGVtZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IGYyZjM5ZmI0ZWM3ZGVlMDcwYTgzNTE1YWUwYzRmNDEwZjZiNzI4NmUu
LjYwOWNiM2M3NDAxZmE1OWUzMTgzYTMyM2RjNGQ2MmJiYzIxN2YyNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
QEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChj
YWxsYmFjay5yZWxlYXNlKCkpOwogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kRXJyb3JDYWxsYmFj
ayhYTUxEb2N1bWVudFBhcnNlcjo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENoYXIqIG1lc3Nh
Z2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgIHZvaWQgYXBwZW5kRXJy
b3JDYWxsYmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxDaGFyKiBtZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIE93
blB0cjxQZW5kaW5nRXJyb3JDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFB0cihuZXcgUGVuZGlu
Z0Vycm9yQ2FsbGJhY2spOwogCkBAIC0zMjgsNyArMzI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHBhcnNlci0+aGFuZGxlRXJyb3IodHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWVz
c2FnZSksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIH0KIAotICAgICAgICBY
TUxEb2N1bWVudFBhcnNlcjo6RXJyb3JUeXBlIHR5cGU7CisgICAgICAgIFhNTEVycm9yczo6RXJy
b3JUeXBlIHR5cGU7CiAgICAgICAgIHhtbENoYXIqIG1lc3NhZ2U7CiAgICAgICAgIGludCBsaW5l
TnVtYmVyOwogICAgICAgICBpbnQgY29sdW1uTnVtYmVyOwpAQCAtNTYyLDggKzU2Miw3IEBAIFhN
TERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQsIEZy
YW1lVmlldyogZnJhbWVWaWV3KQogICAgICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCiAgICAgLCBt
X3JlcXVlc3RpbmdTY3JpcHQoZmFsc2UpCiAgICAgLCBtX2ZpbmlzaENhbGxlZChmYWxzZSkKLSAg
ICAsIG1fZXJyb3JDb3VudCgwKQotICAgICwgbV9sYXN0RXJyb3JQb3NpdGlvbihUZXh0UG9zaXRp
b24xOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKKyAgICAsIG1feG1sRXJyb3JzKGRvY3VtZW50KQog
ICAgICwgbV9wZW5kaW5nU2NyaXB0KDApCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4
dFBvc2l0aW9uMTo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVu
dChmYWxzZSkKQEAgLTU4OSw4ICs1ODgsNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudAogICAg
ICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RpbmdTY3JpcHQoZmFsc2Up
CiAgICAgLCBtX2ZpbmlzaENhbGxlZChmYWxzZSkKLSAgICAsIG1fZXJyb3JDb3VudCgwKQotICAg
ICwgbV9sYXN0RXJyb3JQb3NpdGlvbihUZXh0UG9zaXRpb24xOjpiZWxvd1JhbmdlUG9zaXRpb24o
KSkKKyAgICAsIG1feG1sRXJyb3JzKGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9wZW5k
aW5nU2NyaXB0KDApCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uMTo6
YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQpAQCAt
Njc1LDcgKzY3Myw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvV3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXJzZVN0cmluZykKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgaGVyZT8gIEFuZCB3
aHkgaXMgaXQgYWZ0ZXIgd2UgcHJvY2VzcyB0aGUgcGFzc2VkIHNvdXJjZT8KICAgICBpZiAoZG9j
dW1lbnQoKS0+ZGVjb2RlcigpICYmIGRvY3VtZW50KCktPmRlY29kZXIoKS0+c2F3RXJyb3IoKSkg
ewogICAgICAgICAvLyBJZiB0aGUgZGVjb2RlciBzYXcgYW4gZXJyb3IsIHJlcG9ydCBpdCBhcyBm
YXRhbCAoc3RvcHMgcGFyc2luZykKLSAgICAgICAgaGFuZGxlRXJyb3IoZmF0YWwsICJFbmNvZGlu
ZyBlcnJvciIsIGNvbnRleHQtPmNvbnRleHQoKS0+aW5wdXQtPmxpbmUsIGNvbnRleHQtPmNvbnRl
eHQoKS0+aW5wdXQtPmNvbCk7CisgICAgICAgIGhhbmRsZUVycm9yKFhNTEVycm9yczo6ZmF0YWws
ICJFbmNvZGluZyBlcnJvciIsIGNvbnRleHQtPmNvbnRleHQoKS0+aW5wdXQtPmxpbmUsIGNvbnRl
eHQtPmNvbnRleHQoKS0+aW5wdXQtPmNvbCk7CiAgICAgfQogfQogCkBAIC05MzUsNyArOTMzLDcg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2hhcmFjdGVycyhjb25zdCB4bWxDaGFyKiBzLCBp
bnQgbGVuKQogICAgIG1fYnVmZmVyZWRUZXh0LmFwcGVuZChzLCBsZW4pOwogfQogCi12b2lkIFhN
TERvY3VtZW50UGFyc2VyOjplcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSwgdmFfbGlzdCBhcmdzKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZXJyb3IoWE1MRXJyb3Jz
OjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgdmFfbGlzdCBhcmdzKQogewog
ICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE1Nyw3ICsxMTU1LDcg
QEAgc3RhdGljIHZvaWQgd2FybmluZ0hhbmRsZXIodm9pZCogY2xvc3VyZSwgY29uc3QgY2hhciog
bWVzc2FnZSwgLi4uKQogewogICAgIHZhX2xpc3QgYXJnczsKICAgICB2YV9zdGFydChhcmdzLCBt
ZXNzYWdlKTsKLSAgICBnZXRQYXJzZXIoY2xvc3VyZSktPmVycm9yKFhNTERvY3VtZW50UGFyc2Vy
Ojp3YXJuaW5nLCBtZXNzYWdlLCBhcmdzKTsKKyAgICBnZXRQYXJzZXIoY2xvc3VyZSktPmVycm9y
KFhNTEVycm9yczo6d2FybmluZywgbWVzc2FnZSwgYXJncyk7CiAgICAgdmFfZW5kKGFyZ3MpOwog
fQogCkBAIC0xMTY2LDcgKzExNjQsNyBAQCBzdGF0aWMgdm9pZCBmYXRhbEVycm9ySGFuZGxlcih2
b2lkKiBjbG9zdXJlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCAuLi4pCiB7CiAgICAgdmFfbGlzdCBh
cmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIG1lc3NhZ2UpOwotICAgIGdldFBhcnNlcihjbG9zdXJl
KS0+ZXJyb3IoWE1MRG9jdW1lbnRQYXJzZXI6OmZhdGFsLCBtZXNzYWdlLCBhcmdzKTsKKyAgICBn
ZXRQYXJzZXIoY2xvc3VyZSktPmVycm9yKFhNTEVycm9yczo6ZmF0YWwsIG1lc3NhZ2UsIGFyZ3Mp
OwogICAgIHZhX2VuZChhcmdzKTsKIH0KIApAQCAtMTE3NSw3ICsxMTczLDcgQEAgc3RhdGljIHZv
aWQgbm9ybWFsRXJyb3JIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Us
IC4uLikKIHsKICAgICB2YV9saXN0IGFyZ3M7CiAgICAgdmFfc3RhcnQoYXJncywgbWVzc2FnZSk7
Ci0gICAgZ2V0UGFyc2VyKGNsb3N1cmUpLT5lcnJvcihYTUxEb2N1bWVudFBhcnNlcjo6bm9uRmF0
YWwsIG1lc3NhZ2UsIGFyZ3MpOworICAgIGdldFBhcnNlcihjbG9zdXJlKS0+ZXJyb3IoWE1MRXJy
b3JzOjpub25GYXRhbCwgbWVzc2FnZSwgYXJncyk7CiAgICAgdmFfZW5kKGFyZ3MpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclF0LmNwcApp
bmRleCBiNWNmYTIzNDJkMGQ2NTBkMDRjMjBiYzM4ZDdmZWU2YjY4NWMwNmZhLi42ZGZiOTMyMDll
ZGQ1NjdjOTIwODY5OGI0MGY1ODE4Y2IyMTdkOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAKQEAgLTEwMSw4ICsxMDEsNyBAQCBY
TUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBG
cmFtZVZpZXcqIGZyYW1lVmlldykKICAgICAsIG1fcGFyc2VyUGF1c2VkKGZhbHNlKQogICAgICwg
bV9yZXF1ZXN0aW5nU2NyaXB0KGZhbHNlKQogICAgICwgbV9maW5pc2hDYWxsZWQoZmFsc2UpCi0g
ICAgLCBtX2Vycm9yQ291bnQoMCkKLSAgICAsIG1fbGFzdEVycm9yUG9zaXRpb24oVGV4dFBvc2l0
aW9uMTo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCisgICAgLCBtX3htbEVycm9ycyhkb2N1bWVudCkK
ICAgICAsIG1fcGVuZGluZ1NjcmlwdCgwKQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRl
eHRQb3NpdGlvbjE6OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV9wYXJzaW5nRnJhZ21l
bnQoZmFsc2UpCkBAIC0xMjgsOCArMTI3LDcgQEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3Vt
ZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnQKICAg
ICAsIG1fcGFyc2VyUGF1c2VkKGZhbHNlKQogICAgICwgbV9yZXF1ZXN0aW5nU2NyaXB0KGZhbHNl
KQogICAgICwgbV9maW5pc2hDYWxsZWQoZmFsc2UpCi0gICAgLCBtX2Vycm9yQ291bnQoMCkKLSAg
ICAsIG1fbGFzdEVycm9yUG9zaXRpb24oVGV4dFBvc2l0aW9uMTo6YmVsb3dSYW5nZVBvc2l0aW9u
KCkpCisgICAgLCBtX3htbEVycm9ycyhmcmFnbWVudC0+ZG9jdW1lbnQoKSkKICAgICAsIG1fcGVu
ZGluZ1NjcmlwdCgwKQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjE6
OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkKQEAg
LTE4NSw3ICsxODMsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb1dyaXRlKGNvbnN0IFN0
cmluZyYgcGFyc2VTdHJpbmcpCiAKICAgICBpZiAoZG9jdW1lbnQoKS0+ZGVjb2RlcigpICYmIGRv
Y3VtZW50KCktPmRlY29kZXIoKS0+c2F3RXJyb3IoKSkgewogICAgICAgICAvLyBJZiB0aGUgZGVj
b2RlciBzYXcgYW4gZXJyb3IsIHJlcG9ydCBpdCBhcyBmYXRhbCAoc3RvcHMgcGFyc2luZykKLSAg
ICAgICAgaGFuZGxlRXJyb3IoZmF0YWwsICJFbmNvZGluZyBlcnJvciIsIGxpbmVOdW1iZXIoKSwg
Y29sdW1uTnVtYmVyKCkpOworICAgICAgICBoYW5kbGVFcnJvcihYTUxFcnJvcnM6OmZhdGFsLCAi
RW5jb2RpbmcgZXJyb3IiLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMjI1LDcgKzIyMyw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmRvRW5kKCkKIAogICAgIGlmIChtX3N0cmVhbS5lcnJvcigpID09IFFYbWxTdHJlYW1SZWFk
ZXI6OlByZW1hdHVyZUVuZE9mRG9jdW1lbnRFcnJvcgogICAgICAgICB8fCAobV93cm90ZVRleHQg
JiYgIW1fc2F3Rmlyc3RFbGVtZW50ICYmICFtX3Nhd1hTTFRyYW5zZm9ybSAmJiAhbV9zYXdFcnJv
cikpCi0gICAgICAgIGhhbmRsZUVycm9yKGZhdGFsLCBxUHJpbnRhYmxlKG1fc3RyZWFtLmVycm9y
U3RyaW5nKCkpLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKKyAgICAgICAgaGFuZGxl
RXJyb3IoWE1MRXJyb3JzOjpmYXRhbCwgcVByaW50YWJsZShtX3N0cmVhbS5lcnJvclN0cmluZygp
KSwgbGluZU51bWJlcigpLCBjb2x1bW5OdW1iZXIoKSk7CiB9CiAKIGludCBYTUxEb2N1bWVudFBh
cnNlcjo6bGluZU51bWJlcigpIGNvbnN0CkBAIC0zODIsNyArMzgwLDcgQEAgdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6cGFyc2UoKQogICAgICAgICBjYXNlIFFYbWxTdHJlYW1SZWFkZXI6OlN0YXJ0
RWxlbWVudDogewogI2lmIEVOQUJMRShYSFRNTE1QKQogICAgICAgICAgICAgaWYgKGRvY3VtZW50
KCktPmlzWEhUTUxNUERvY3VtZW50KCkgJiYgIW1faGFzRG9jVHlwZURlY2xhcmF0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZmF0YWwsICJET0NUWVBFIGRlY2xhcmF0aW9uIGxv
c3QuIiwgbGluZU51bWJlcigpLCBjb2x1bW5OdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgaGFu
ZGxlRXJyb3IoWE1MRXJyb3JzOjpmYXRhbCwgIkRPQ1RZUEUgZGVjbGFyYXRpb24gbG9zdC4iLCBs
aW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDQwLDggKzQzOCw4IEBAIHZvaWQgWE1MRG9jdW1lbnRQ
YXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OiB7CiAg
ICAgICAgICAgICBpZiAobV9zdHJlYW0uZXJyb3IoKSAhPSBRWG1sU3RyZWFtUmVhZGVyOjpQcmVt
YXR1cmVFbmRPZkRvY3VtZW50RXJyb3IpIHsKLSAgICAgICAgICAgICAgICBFcnJvclR5cGUgdHlw
ZSA9IChtX3N0cmVhbS5lcnJvcigpID09IFFYbWxTdHJlYW1SZWFkZXI6Ok5vdFdlbGxGb3JtZWRF
cnJvcikgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWwgOiB3YXJuaW5n
OworICAgICAgICAgICAgICAgIFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUgPSAobV9zdHJlYW0u
ZXJyb3IoKSA9PSBRWG1sU3RyZWFtUmVhZGVyOjpOb3RXZWxsRm9ybWVkRXJyb3IpID8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTEVycm9yczo6ZmF0YWwgOiBYTUxFcnJvcnM6
Ondhcm5pbmc7CiAgICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IodHlwZSwgcVByaW50YWJsZSht
X3N0cmVhbS5lcnJvclN0cmluZygpKSwgbGluZU51bWJlcigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbHVtbk51bWJlcigpKTsKICAgICAgICAgICAgIH0KQEAgLTUwMSw3ICs0OTks
NyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZVN0YXJ0RWxlbWVudCgpCiAgICAgICAg
IC8vIGVuc3VyZSB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCBuYW1lc3BhY2Ugb24gdGhlIHJvb3Qg
ZWxtZW50ICdodG1sJwogICAgICAgICAvLyBNVVNUIGJlICdodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sJwogICAgICAgICBpZiAobG9jYWxOYW1lICE9IEhUTUxOYW1lczo6aHRtbFRhZy5sb2Nh
bE5hbWUoKSkgewotICAgICAgICAgICAgaGFuZGxlRXJyb3IoZmF0YWwsICJYSFRNTE1QIGRvY3Vt
ZW50IGV4cGVjdHMgJ2h0bWwnIGFzIHJvb3QgZWxlbWVudC4iLCBsaW5lTnVtYmVyKCksIGNvbHVt
bk51bWJlcigpKTsKKyAgICAgICAgICAgIGhhbmRsZUVycm9yKFhNTEVycm9yczo6ZmF0YWwsICJY
SFRNTE1QIGRvY3VtZW50IGV4cGVjdHMgJ2h0bWwnIGFzIHJvb3QgZWxlbWVudC4iLCBsaW5lTnVt
YmVyKCksIGNvbHVtbk51bWJlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC03MDUsNyArNzAzLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEdGQoKQog
ICAgIGVsc2UgaWYgKChwdWJsaWNJZCA9PSBRTGF0aW4xU3RyaW5nKCItLy9XQVBGT1JVTS8vRFRE
IFhIVE1MIE1vYmlsZSAxLjEvL0VOIikpCiAgICAgICAgICAgICAgfHwgKHB1YmxpY0lkID09IFFM
YXRpbjFTdHJpbmcoIi0vL1dBUEZPUlVNLy9EVEQgWEhUTUwgTW9iaWxlIDEuMC8vRU4iKSkpIHsK
ICAgICAgICAgaWYgKEF0b21pY1N0cmluZyhuYW1lKSAhPSBIVE1MTmFtZXM6Omh0bWxUYWcubG9j
YWxOYW1lKCkpIHsKLSAgICAgICAgICAgIGhhbmRsZUVycm9yKGZhdGFsLCAiSW52YWxpZCBET0NU
WVBFIGRlY2xhcmF0aW9uLCBleHBlY3RlZCAnaHRtbCcgYXMgcm9vdCBlbGVtZW50LiIsIGxpbmVO
dW1iZXIoKSwgY29sdW1uTnVtYmVyKCkpOworICAgICAgICAgICAgaGFuZGxlRXJyb3IoWE1MRXJy
b3JzOjpmYXRhbCwgIkludmFsaWQgRE9DVFlQRSBkZWNsYXJhdGlvbiwgZXhwZWN0ZWQgJ2h0bWwn
IGFzIHJvb3QgZWxlbWVudC4iLCBsaW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCg==
</data>
<flag name="review"
          id="95032"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>