<?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>64566</bug_id>
          
          <creation_ts>2011-07-14 15:31:29 -0700</creation_ts>
          <short_desc>New XML tokenizer</short_desc>
          <delta_ts>2011-07-26 19:26:04 -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>
          <dependson>64764</dependson>
    
    <dependson>65000</dependson>
          <blocked>64396</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>437368</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-14 15:31:29 -0700</bug_when>
    <thetext>For the new XML parser, we&apos;ll need a tokenizer for the source before we can parse the tokens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441997</commentid>
    <comment_count>1</comment_count>
      <attachid>101943</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-25 17:04:43 -0700</bug_when>
    <thetext>Created attachment 101943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442001</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 17:07:01 -0700</bug_when>
    <thetext>Attachment 101943 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/xml/parser/XMLTokenizer.cpp:227:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442036</commentid>
    <comment_count>3</comment_count>
      <attachid>101943</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 17:55:07 -0700</bug_when>
    <thetext>Comment on attachment 101943
Patch

Attachment 101943 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9253101</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442044</commentid>
    <comment_count>4</comment_count>
      <attachid>101943</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 18:09:23 -0700</bug_when>
    <thetext>Comment on attachment 101943
Patch

Attachment 101943 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9253107</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442045</commentid>
    <comment_count>5</comment_count>
      <attachid>101943</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 18:14:03 -0700</bug_when>
    <thetext>Comment on attachment 101943
Patch

Attachment 101943 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9250169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442050</commentid>
    <comment_count>6</comment_count>
      <attachid>101957</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-25 18:19:39 -0700</bug_when>
    <thetext>Created attachment 101957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442051</commentid>
    <comment_count>7</comment_count>
      <attachid>101943</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-25 18:21:01 -0700</bug_when>
    <thetext>Comment on attachment 101943
Patch

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

This looks like a great start.  Obviously, it would be nice for it to build before landing.  :)

&gt; Source/WebCore/xml/parser/NewXMLDocumentParser.cpp:62
&gt; +        m_token.print();

DEBUG only?

This function will obviously evolve.  :)

&gt; Source/WebCore/xml/parser/XMLTokenizer.cpp:47
&gt; +inline bool isNumeric(UChar cc)

cc =&gt; c (I need to go through the HTML parser and fix this there too.)

&gt; Source/WebCore/xml/parser/XMLTokenizer.cpp:55
&gt; +inline bool isLetter(UChar cc)
&gt; +{
&gt; +    return (cc &gt;= &apos;A&apos; &amp;&amp; cc &lt;= &apos;Z&apos;) || (cc &gt;= &apos;a&apos; &amp;&amp; cc &lt;= &apos;z&apos;);
&gt; +}

I think these functions already exist in ASCIITypes.h

&gt; Source/WebCore/xml/parser/XMLTokenizer.cpp:62
&gt; +inline bool isValidNameStart(UChar cc)

You might find that this function is hot, but optimizations can come later.

&gt; Source/WebCore/xml/parser/XMLTokenizer.cpp:472
&gt; +        DEFINE_STATIC_LOCAL(String, xmlString, (&quot;xml &quot;));

Is the space necessary after the xml?  There can&apos;t be other sorts of whitespace?

&gt; Source/WebCore/xml/parser/XMLTokenizer.h:110
&gt; +    bool gotError() const { return m_parseError; }

I&apos;m not in love with gotError as a name.  Maybe errorDuringParsing ?  In any case, you should rename the member variable to match the accessor.

&gt; Source/WebCore/xml/parser/XMLTokenizer.h:112
&gt; +    virtual bool shouldSkipNullCharacters() const { return false; }

I thought this wasn&apos;t virtual anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442052</commentid>
    <comment_count>8</comment_count>
      <attachid>101957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-25 18:21:28 -0700</bug_when>
    <thetext>Comment on attachment 101957
Patch

(modulo comments above)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442054</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 18:23:49 -0700</bug_when>
    <thetext>Attachment 101957 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/xml/parser/XMLTokenizer.cpp:227:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442059</commentid>
    <comment_count>10</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-25 18:37:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 101943 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101943&amp;action=review
&gt; 
&gt; This looks like a great start.  Obviously, it would be nice for it to build before landing.  :)

That&apos;s what I get for only checking to make sure it builds in Debug!


&gt; &gt; Source/WebCore/xml/parser/XMLTokenizer.cpp:55
&gt; &gt; +inline bool isLetter(UChar cc)
&gt; &gt; +{
&gt; &gt; +    return (cc &gt;= &apos;A&apos; &amp;&amp; cc &lt;= &apos;Z&apos;) || (cc &gt;= &apos;a&apos; &amp;&amp; cc &lt;= &apos;z&apos;);
&gt; &gt; +}
&gt; 
&gt; I think these functions already exist in ASCIITypes.h

I see an ASCIICTypes.h, which uses unsigned short and not UChar. Close enough?

&gt; &gt; Source/WebCore/xml/parser/XMLTokenizer.cpp:472
&gt; &gt; +        DEFINE_STATIC_LOCAL(String, xmlString, (&quot;xml &quot;));
&gt; 
&gt; Is the space necessary after the xml?  There can&apos;t be other sorts of whitespace?

Good catch. This can be any whitespace accepted by the tokenizer as whitespace. I&apos;ll fix that.

&gt; &gt; Source/WebCore/xml/parser/XMLTokenizer.h:112
&gt; &gt; +    virtual bool shouldSkipNullCharacters() const { return false; }
&gt; 
&gt; I thought this wasn&apos;t virtual anymore?

Whoops, this snuck in under my radar. I implemented the tokenizer before I re-optimized the merged token class, and forgot to remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442070</commentid>
    <comment_count>11</comment_count>
      <attachid>101957</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-07-25 19:21:25 -0700</bug_when>
    <thetext>Comment on attachment 101957
Patch

Attachment 101957 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9249240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442362</commentid>
    <comment_count>12</comment_count>
      <attachid>102024</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-26 10:59:14 -0700</bug_when>
    <thetext>Created attachment 102024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442365</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 11:02:19 -0700</bug_when>
    <thetext>Attachment 102024 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/xml/parser/XMLTokenizer.cpp:212:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442565</commentid>
    <comment_count>14</comment_count>
      <attachid>102024</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-26 15:09:19 -0700</bug_when>
    <thetext>Comment on attachment 102024
Patch

I realize now I forgot to fix one of the problems mentioned by abarth&apos;s previous comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442625</commentid>
    <comment_count>15</comment_count>
      <attachid>102074</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-07-26 16:54:54 -0700</bug_when>
    <thetext>Created attachment 102074
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442626</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 16:57:43 -0700</bug_when>
    <thetext>Attachment 102074 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/xml/parser/XMLTokenizer.cpp:212:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/xml/parser/XMLTokenizer.cpp:490:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442703</commentid>
    <comment_count>17</comment_count>
      <attachid>102074</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 19:25:58 -0700</bug_when>
    <thetext>Comment on attachment 102074
Patch for landing

Clearing flags on attachment: 102074

Committed r91811: &lt;http://trac.webkit.org/changeset/91811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442704</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 19:26:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101943</attachid>
            <date>2011-07-25 17:04:43 -0700</date>
            <delta_ts>2011-07-25 18:21:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64566-20110725170442.patch</filename>
            <type>text/plain</type>
            <size>53558</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTU4OTBjMzk0YTk3NjQz
MjM0MzY4MjllZDkxNDFiM2I3NDg4ZWE3Li40ODUxOTM0NmQ2ODJhNDJkMmMyZDU0NTdiNjkyNjlj
YjNkYTFjZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMjUgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBOZXcgWE1MIHRva2VuaXplcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdG9rZW5p
emVyIGZvciBYTUwgYW5kIHRlc3RzIGluIE5ld1hNTERvY3VtZW50UGFyc2VyIGZvciBwcmludGlu
ZyByZXN1bHRzIG9mIHRva2VuaXphdGlvbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB4bWwvcGFyc2VyL05ld1hNTERv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ld1hNTERvY3VtZW50UGFyc2Vy
OjpOZXdYTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpOZXdYTUxEb2N1bWVu
dFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFy
c2VyLmg6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxUb2tlbi5oOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tl
bml6ZXI6OlhNTFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjo6OnNob3VsZFNraXBOdWxs
Q2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6Om5leHRUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmJ1ZmZlckNoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnBhcnNlRXJyb3IpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5p
emVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjpnb3RFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnNob3VsZFNraXBOdWxsQ2hhcmFjdGVy
cyk6CisKIDIwMTEtMDYtMDcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQ1NGI5ZDNjYTZjM2ZkNjc0ZGE1NGRiZGE0ZWVjOTVm
ZDQ5MmMxMjMuLjFiYjY3Yjc2Y2JjNzk5MmUxNTI1YmM5NmY2ZmZkMDg5OWMyZWE4NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzgxOCw2ICszODE4LDkgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL0RPTVBh
cnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDM5OWJkZTZkMDI0Y2I4YWM0MzRiZWY3Mzg2MzNhODA3YjMzNzczNzUuLjBkOWE5MDgzYjYwNTJi
MTdkNDlmOTM0NmE1NDczNDEwYTY0MmU0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxMjYsMTIg
KzYxMjYsMTcgQEAKICAgICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oJywK
ICAgICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCcsCiAgICAgICAg
ICAgICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgnLAorICAgICAg
ICAgICAgJ3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKKyAgICAgICAgICAg
ICd4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlclF0LmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclNj
b3BlLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclNjb3Bl
LmgnLAorICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmNwcCcsCisgICAgICAg
ICAgICAneG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaCcsCisgICAgICAgICAgICAneG1sL3BhcnNl
ci9YTUxUb2tlbi5oJywKICAgICAgICAgICAgICd4bWwvRE9NUGFyc2VyLmNwcCcsCiAgICAgICAg
ICAgICAneG1sL0RPTVBhcnNlci5oJywKICAgICAgICAgICAgICd4bWwvTmF0aXZlWFBhdGhOU1Jl
c29sdmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDcxN2JhM2Q4ZmViYTZhODY1MjdlZTY2OGU0
YWZjNDg2NTMxMmE0MTkuLjg2NTQ4OGU4ZGMyMDc4NDRkOTgyMDA5MDhhYzIxYTFmZGVmM2E1OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0xMTk5LDcgKzExOTksOSBAQCBTT1VSQ0VTICs9IFwKICAgICB4
bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwIFwKICAgICB4bWwvWE1MRXJyb3JzLmNwcCBcCiAg
ICAgeG1sL1hNTFNlcmlhbGl6ZXIuY3BwIFwKLSAgICB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcCAKKyAgICB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCisgICAg
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgXAorICAgIHhtbC9wYXJzZXIvWE1MVG9r
ZW5pemVyLmNwcAogCiBIRUFERVJTICs9IFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZENlbGwuaCBcCkBAIC0yNTAzLDcgKzI1MDUsMTAgQEAgSEVBREVSUyArPSBcCiAg
ICAgeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAgICAgeG1sL3BhcnNlci9NYXJrdXBU
b2tlbml6ZXJCYXNlLmggXAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0
aG9kcy5oIFwKKyAgICB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmggXAogICAgIHht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBcCisgICAgeG1sL3BhcnNlci9YTUxUb2tlbml6
ZXIuaCBcCisgICAgeG1sL3BhcnNlci9YTUxUb2tlbi5oIFwKICAgICB4bWwvRE9NUGFyc2VyLmgg
XAogICAgIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBcCiAgICAgeG1sL1hNTEh0dHBSZXF1
ZXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCAxMzJjN2E2NjA1MDc0NDdlMjQ1ZTY3YWRiZDhlMjFiY2ViYTJjMTg2Li5iMTIxMmQ1NzU5
ZmZhMWZhZTc4YjQzMjZmMTU1NjA0ZjJhYjAzOTljIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI3NDgsNiArNDI3NDgsMTQgQEAKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxw
YXJzZXJcWE1MVG9rZW5pemVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXFhNTFRva2VuLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CiAJCQk8L0ZpbHRlcj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYWE3OGMy
N2JiOWY3OTJlMWFiYjdkNGZmYmIwM2UwNjUzN2MyMDg1Li5iNTM4NjA5MDIwMGU3Y2JmNzM0OWFl
ZWE2YjMzMzNkZDM0MGVjOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Nyw2ICs0Nyw4IEBACiAvKiBCZWdpbiBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCQkwMDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLzsgfTsKIAkJMDAwMkVDNTgxM0MzRjY3
RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLzsg
fTsKKwkJMDAwMkVDNTkxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1NjEzQzNGNjdE
MDAwNDBENDcgLyogWE1MVG9rZW5pemVyLmNwcCAqLzsgfTsKKwkJMDAwMkVDNUExM0MzRjY3RDAw
MDQwRDQ3IC8qIFhNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDAwMkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5o
ICovOyB9OwogCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYy
ODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAx
NDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIw
REIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLzsgfTsKIAkJMDAzRjFGRUExMUU2QUI0MzAwODI1
OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5
cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTY0NTcsNiArNjQ1OSw4IEBACiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklu
bGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDAwMkVDNTYxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUb2tlbml6ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwMDAyRUM1NzEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTFRva2VuaXplci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIg
LyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gT3JpZ2luQWNjZXNzRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAzRjFGRTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250
ZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4MTAsNiArMTI4MTQsOCBA
QAogCQkJCTAwQjkzMTg1MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3Bl
LmNwcCAqLywKIAkJCQkwMEI5MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5oICovLAogCQkJCTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5o
ICovLAorCQkJCTAwMDJFQzU2MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuY3BwICov
LAorCQkJCTAwMDJFQzU3MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIz
MjI3LDYgKzIzMjMzLDcgQEAKIAkJCQlFMTVBMzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhN
TFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwMDJFQzU4MTNDM0Y2N0QwMDA0MEQ0
NyAvKiBYTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDAwMkVDNUExM0MzRjY3RDAwMDQw
RDQ3IC8qIFhNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkwNUFEQzAxMzAyRjND
RTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzY5
MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2MERBNUIwRDJBMzFGNzAwQjk5MThGIC8qIFhQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTI2MDEzLDYgKzI2MDIwLDcgQEAKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQg
LyogWE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1QTM2RDkxMTA0NTcyNzAwQjdC
NjM5IC8qIFhNTE5TTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzRUEwQThEMThF
NzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDAwMkVD
NTkxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RkM2ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhw
cmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggY2MzMDU0Y2RlMGFkNDIxMmYzOTlj
NGY1NjkwOWFjNTMxMTFmMmIyYi4uZTgwY2ZlZGY2MzI1MDE0ZDgyOGExNzU5OGI2Y2IwNjA4NmVj
MmZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHAKQEAgLTI2LDEwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk5ld1hNTERvY3VtZW50UGFyc2VyLmgiCiAKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJp
bmcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOZXdYTUxEb2N1bWVudFBhcnNlcjo6TmV3
WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgICwgbV90b2tlbml6ZXIoWE1MVG9rZW5pemVyOjpj
cmVhdGUoKSkKIHsKIH0KIApAQCAtNDksOCArNTIsMjEgQEAgdm9pZCBOZXdYTUxEb2N1bWVudFBh
cnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdt
ZW50ZWRTdHJpbmcmKQordm9pZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc3RyaW5nKQogeworICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dCA9IHN0
cmluZzsKKyAgICB3aGlsZSAoIWlucHV0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fdG9r
ZW5pemVyLT5uZXh0VG9rZW4oaW5wdXQsIG1fdG9rZW4pKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgbV90b2tlbi5wcmludCgpOworCisgICAgICAgIGlmIChtX3Rva2VuLnR5cGUo
KSA9PSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBtX3Rva2VuLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChtX3Rva2VuLmlzVW5pbml0aWFs
aXplZCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmgK
aW5kZXggN2I0M2IyNGYwOGQ0NmNiNjdlY2UzZTE0ODMwZDgzZWU0ZDg2ZDE5NC4uMzU3NTc1NGRk
YTNmOWE0YjUxMjhmZjQ4Y2I0MDY4MDc5MTMzZjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMjgsNiArMjgsOSBAQAogCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tlbi5oIgorI2luY2x1ZGUgIlhNTFRva2Vu
aXplci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw2ICs2Nyw5IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKworICAgIE93blB0cjxYTUxUb2tlbml6
ZXI+IG1fdG9rZW5pemVyOworICAgIFhNTFRva2VuIG1fdG9rZW47CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKaW5kZXggN2Q0NzM3NmZmYWNkZTRlYjdlZTZjMGVjODg0
MzBkNGYxYjQ2OWZkNS4uYWIxNjViNzI1NzBmNTI4ODM3ZjBjMWE2M2EwZGZlMzNmMzEzZWNkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApAQCAtNTIsOCArNTIsNiBAQCBwdWJs
aWM6CiB9OwogCiBjbGFzcyBYTUxUb2tlbiA6IHB1YmxpYyBNYXJrdXBUb2tlbkJhc2U8WE1MVG9r
ZW5UeXBlcz4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTFRva2VuKTsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQog
ICAgIHsKQEAgLTMwNCw3ICszMDIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gTkRFQlVHCiAKIHBy
aXZhdGU6Ci0gICAgdHlwZWRlZiBCYXNlRG9jdHlwZURhdGEgRG9jdHlwZURhdGE7CisgICAgdHlw
ZWRlZiBEb2N0eXBlRGF0YUJhc2UgRG9jdHlwZURhdGE7CiAKICAgICBjbGFzcyBYTUxEZWNsYXJh
dGlvbkRhdGEgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxEZWNsYXJhdGlvbkRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2OWI4ZjVkNDA0YzRhOGQ0NmJmYmU1ZjhjOGFjMzUwZjUwZjkzNGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAKQEAgLTAs
MCArMSwxMDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4g
aHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWE1MVG9rZW5p
emVyLmgiCisKKyNpbmNsdWRlICJNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tlbi5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBib29sIGlzTnVtZXJpYyhVQ2hhciBjYykK
K3sKKyAgICByZXR1cm4gY2MgPj0gJzAnICYmIGNjIDw9ICc5JzsKK30KKworaW5saW5lIGJvb2wg
aXNMZXR0ZXIoVUNoYXIgY2MpCit7CisgICAgcmV0dXJuIChjYyA+PSAnQScgJiYgY2MgPD0gJ1on
KSB8fCAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jyk7Cit9CisKK2lubGluZSBib29sIGlzQWxwaGFO
dW1lcmljKFVDaGFyIGNjKQoreworICAgIHJldHVybiBpc0xldHRlcihjYykgfHwgaXNOdW1lcmlj
KGNjKTsKK30KKworaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVTdGFydChVQ2hhciBjYykKK3sKKyAg
ICBpZiAoY2MgPD0gMHg0MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAw
eDVBKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPT0gMHg1RikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKGNjIDw9IDB4NjApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoY2MgPD0gMHg3QSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjIDwg
MHhDMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweEQ2KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPT0gMHhEOCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChjYyA8PSAweEY2KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2Mg
PT0gMHhGNykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweDJGRikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjIDwgMHgzNzApCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoY2MgPD0gMHgzN0QpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChjYyA9PSAweDM3RSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweDFG
RkYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4MjAwQykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweDIwMEQpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChjYyA8IDB4MjA3MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChj
YyA8PSAweDIxOEYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4MkMwMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweDJGRUYpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4MzAwMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChjYyA8PSAweEQ3RkYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8
IDB4RjkwMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweEZEQ0YpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4RkRGMCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChjYyA8PSAweEZGRkQpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgLy8gRklYTUU6IHN1cHBvcnQgbm9uLUJNUCBwbGFuZXMKKworICAgIHJldHVybiBmYWxzZTsK
K30KKworaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVDaGFyKFVDaGFyIGNjKQoreworICAgIGlmIChp
c1ZhbGlkTmFtZVN0YXJ0KGNjKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjID09
ICctJyB8fCBjYyA9PSAnLicpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4
MzApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPCAweDNCKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDAzMDApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoY2MgPD0gMHgwMzZGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2Mg
PCAweDIwM0YpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHgyMDQwKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIGJv
b2wgaXNWYWxpZExpdGVyYWxDaGFyKFVDaGFyIGNjKQoreworICAgIGlmIChjYyA9PSAweEQgfHwg
Y2MgPT0gMHhBKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDIwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnJicpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPCAweDNDKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoY2MgPT0gJzwnIHx8IGNjID09ICc+JykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChjYyA8IDB4NUIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA9
PSAnXycpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8PSAweDYwKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDwgMHg3QikKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KKworI2RlZmluZSBYTUxfQkVHSU5fU1RBVEUo
c3RhdGVOYW1lKSBCRUdJTl9TVEFURShYTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQorI2Rl
ZmluZSBYTUxfQURWQU5DRV9UTyhzdGF0ZU5hbWUpIEFEVkFOQ0VfVE8oWE1MVG9rZW5pemVyU3Rh
dGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgWE1MX1NXSVRDSF9UTyhzdGF0ZU5hbWUpIFNXSVRDSF9U
TyhYTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQorCisjZGVmaW5lIEVRX1NUQVRFKEN1cnJl
bnRTdGF0ZSwgTmV4dFN0YXRlKSBcCisgICAgWE1MX0JFR0lOX1NUQVRFKEN1cnJlbnRTdGF0ZSkg
eyAgICAgICBcCisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSAgICBcCisg
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDdXJyZW50U3RhdGUpOyBcCisgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc9JykgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhOZXh0U3RhdGUpOyAgICBcCisgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBwYXJzZUVycm9yKCk7ICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOyBcCisgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgRU5EX1NUQVRFKCkKKworI2RlZmluZSBFUV9CRUZPUkVfVkFM
VUVfU1RBVEVTKEVxdWFsc1N0YXRlLCBCZWZvcmVWYWx1ZVN0YXRlLCBWYWx1ZVN0YXRlKSBcCisg
ICAgRVFfU1RBVEUoRXF1YWxzU3RhdGUsIEJlZm9yZVZhbHVlU3RhdGUpICAgIFwKKyAgICBYTUxf
QkVHSU5fU1RBVEUoQmVmb3JlVmFsdWVTdGF0ZSkgeyAgICAgICAgXAorICAgICAgICBpZiAoaXNU
b2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgICAgICAgICBcCisgICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhCZWZvcmVWYWx1ZVN0YXRlKTsgIFwKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8
IGNjID09ICdcJycpIHsgICAgXAorICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJh
Y3RlciA9IGNjOyBcCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhWYWx1ZVN0YXRlKTsgICAg
ICAgIFwKKyAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOyAgICAgIFwKKyAgICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRU5EX1NUQVRFKCkKKworWE1MVG9rZW5p
emVyOjpYTUxUb2tlbml6ZXIoKQoreworICAgIHJlc2V0KCk7Cit9CisKK3RlbXBsYXRlPD4KK2lu
bGluZSBib29sIE1hcmt1cFRva2VuaXplckJhc2U8WE1MVG9rZW4sIFhNTFRva2VuaXplclN0YXRl
Pjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgWE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIFhNTFRva2VuJiB0b2tlbikKK3sKKyAgICAvLyBJZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJv
Z3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8gYmUgY2FsbGVkIGJhY2sKKyAgICAvLyB3aXRo
IHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5pc2ggaXQuCisgICAgQVNTRVJUKCFtX3Rva2Vu
IHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpV
bmluaXRpYWxpemVkKTsKKyAgICBtX3Rva2VuID0gJnRva2VuOworCisgICAgaWYgKHNvdXJjZS5p
c0VtcHR5KCkgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IucGVlayhzb3VyY2UsIG1fbGlu
ZU51bWJlcikpCisgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwor
ICAgIFVDaGFyIGNjID0gbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0
ZXIoKTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIFhNTF9CRUdJTl9TVEFURShEYXRh
U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcmJykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKENoYXJhY3RlclJlZmVyZW5jZVN0YXJ0U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9
PSAnPCcpIHsKKyAgICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gWE1MVG9rZW5UeXBl
czo6Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNo
YXJhY3RlciB0b2tlbnMgcXVldWVkIHVwIHRoYXQgd2UKKyAgICAgICAgICAgICAgICAvLyBhcmUg
ZW1pdHRpbmcgbGF6aWx5IGhlcmUuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhUYWdPcGVuU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVN
YXJrZXIpCisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFU
RSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSkg
eworICAgICAgICBpZiAoY2MgPT0gJyMnKSB7CisgICAgICAgICAgICBib29sIG5vdEVub3VnaENo
YXJhY3RlcnMgPSBmYWxzZTsKKyAgICAgICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+IGRlY29kZWRD
aGFyYWN0ZXI7CisgICAgICAgICAgICBpZiAoY29uc3VtZVhNTENoYXJhY3RlclJlZmVyZW5jZShz
b3VyY2UsIGRlY29kZWRDaGFyYWN0ZXIsIG5vdEVub3VnaENoYXJhY3RlcnMpKSB7CisgICAgICAg
ICAgICAgICAgVmVjdG9yPFVDaGFyLCAxNj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBkZWNvZGVk
Q2hhcmFjdGVyLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZGVjb2Rl
ZENoYXJhY3Rlci5lbmQoKTsgKytpdGVyKQorICAgICAgICAgICAgICAgICAgICBidWZmZXJDaGFy
YWN0ZXIoKml0ZXIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oRGF0YVN0YXRlKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNl
IGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgeworICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5
cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpDaGFyYWN0ZXJS
ZWZlcmVuY2VTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRW50aXR5KGNj
KTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVudGl0eVJlZmVyZW5jZVN0YXRlKTsKKyAg
ICAgICAgfQorICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RB
VEUoRW50aXR5UmVmZXJlbmNlU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVmFsaWROYW1lQ2hhcihj
YykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7CisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhFbnRpdHlSZWZlcmVuY2VTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJzsnKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9T
VEFURShUYWdPcGVuU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICchJykKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKKyAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnT3BlblN0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luU3RhcnRUYWcoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPycpCisgICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGFydFN0YXRl
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAg
ICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoRW5kVGFnT3BlblN0YXRlKSB7CisgICAg
ICAgIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YmVn
aW5FbmRUYWcoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnTmFtZVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
RU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAn
LycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAg
IGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvTmFtZShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEVuZFRhZ05hbWVTdGF0ZSkgeworICAg
ICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKEVuZFRhZ1NwYWNlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsK
KyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7CisgICAgICAgICAgICBYTUxf
QURWQU5DRV9UTyhFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NU
QVRFKEVuZFRhZ1NwYWNlU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFj
ZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdTcGFjZVN0YXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5k
T2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IFhNTF9CRUdJTl9TVEFURShCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYg
KGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhC
ZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisg
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGlzVmFsaWROYW1lU3RhcnQoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdB
dHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlTmFtZShzb3Vy
Y2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0
cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShBdHRyaWJ1
dGVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsK
KyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hh
cmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRy
aWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc9JykgeworICAgICAg
ICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJz
Q29uc3VtZWQoKSk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVW
YWx1ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOworICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJp
YnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgRVFfU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUsIEJlZm9y
ZUF0dHJpYnV0ZVZhbHVlU3RhdGUpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmli
dXRlVmFsdWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkK
KyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJykgeworICAgICAgICAgICAg
bV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29u
c3VtZWQoKSArIDEpOworICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9
IGNjOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVRdW90ZWRT
dGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rlcikg
eworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9m
Q2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJB
dHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnJicp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0
ZVZhbHVlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VF
cnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlVmFsdWUoc291cmNlLm51
bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRP
ZkZpbGUoc291cmNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0
cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRF
KCkKKworICAgIFhNTF9CRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZh
bHVlU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcjJykgeworICAgICAgICAgICAgYm9vbCBu
b3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7CisgICAgICAgICAgICBWZWN0b3I8VUNoYXIsIDE2
PiBkZWNvZGVkQ2hhcmFjdGVyOworICAgICAgICAgICAgc291cmNlLnB1c2goY2MpOworICAgICAg
ICAgICAgaWYgKGNvbnN1bWVYTUxDaGFyYWN0ZXJSZWZlcmVuY2Uoc291cmNlLCBkZWNvZGVkQ2hh
cmFjdGVyLCBub3RFbm91Z2hDaGFyYWN0ZXJzKSkgeworICAgICAgICAgICAgICAgIFZlY3RvcjxV
Q2hhciwgMTY+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gZGVjb2RlZENoYXJhY3Rlci5iZWdpbigp
OworICAgICAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGRlY29kZWRDaGFyYWN0ZXIuZW5kKCk7
ICsraXRlcikKKyAgICAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVW
YWx1ZSgqaXRlcik7CisgICAgICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFs
dWVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vdEVub3VnaENoYXJhY3Rl
cnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRl
VmFsdWUoJyYnKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUo
Y2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9T
VEFURShBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVB
dHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUo
c291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JF
R0lOX1NUQVRFKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0g
Jz4nKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTZWxmQ2xvc2luZygpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOworICAgICAgICB9CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhN
TF9CRUdJTl9TVEFURShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGFydFN0YXRlKSB7Cisg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxTdHJpbmcsICgieG1sICIpKTsK
KyAgICAgICAgaWYgKGNjID09ICd4JyB8fCBjYyA9PSAnWCcpIHsKKyAgICAgICAgICAgIFNlZ21l
bnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25v
cmluZ0Nhc2UoeG1sU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NF
UlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAieG1sICIpOworICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luWE1MRGVjbGFyYXRpb24oKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhN
TERlY2xCZWZvcmVWZXJzaW9uTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbiAmJiBpc1ZhbGlkTmFtZUNoYXIoY2MpKQorICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQoY2MpOworICAgICAgICBlbHNlIGlmIChp
c1ZhbGlkTmFtZVN0YXJ0KGNjKSkKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKGNjKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9
CisgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXRl
KTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNs
QmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgdmVyc2lvblN0cmluZywgKCJ2ZXJzaW9uIikpOworICAgICAgICBpZiAoaXNUb2tlbml6
ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZv
cmVWZXJzaW9uTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKHZlcnNp
b25TdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRp
ZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2Us
ICJ2ZXJzaW9uIik7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0ZXJW
ZXJzaW9uTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4g
aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfQorICAgICAgICBwYXJzZUVy
cm9yKCk7CisgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBFUV9CRUZPUkVfVkFMVUVfU1RBVEVTKFhNTERlY2xBZnRlclZl
cnNpb25OYW1lU3RhdGUsIFhNTERlY2xCZWZvcmVWZXJzaW9uVmFsdWVTdGF0ZSwgWE1MRGVjbEJl
Zm9yZVZlcnNpb25PbmVQb2ludFN0YXRlKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xC
ZWZvcmVWZXJzaW9uT25lUG9pbnRTdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgb25lUG9pbnRTdHJpbmcsICgiMS4iKSk7CisgICAgICAgIFNlZ21lbnRlZFN0cmlu
Zzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQob25lUG9pbnRTdHJp
bmcpOworICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsK
KyAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCcxJyk7CisgICAgICAgICAgICBz
b3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLicpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9YTUxWZXJzaW9uKCcxJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1hNTFZlcnNp
b24oJy4nKTsKKyAgICAgICAgICAgIGlmIChpc051bWVyaWMoKnNvdXJjZSkpCisgICAgICAgICAg
ICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsVmVyc2lvblZhbHVlUXVvdGVkU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCisgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsK
KyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3Vy
Y2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERl
Y2xWZXJzaW9uVmFsdWVRdW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gbV9hZGRpdGlv
bmFsQWxsb3dlZENoYXJhY3RlcikgeworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVj
bEFmdGVyVmVyc2lvblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc051bWVyaWMoY2MpKSB7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1hNTFZlcnNpb24oY2MpOworICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbFZlcnNpb25WYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVy
biBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRF
KCkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsQWZ0ZXJWZXJzaW9uU3RhdGUpIHsKKyAg
ICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhYTUxEZWNsQmVmb3JlRW5jb2RpbmdOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQ2xvc2VTdGF0
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xCZWZvcmVFbmNvZGluZ05h
bWVTdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZW5jb2RpbmdT
dHJpbmcsICgiZW5jb2RpbmciKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBzdGFuZGFsb25lU3RyaW5nLCAoInN0YW5kYWxvbmUiKSk7CisgICAgICAgIGlmIChpc1Rva2Vu
aXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJl
Zm9yZUVuY29kaW5nTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJ2UnKSB7Cisg
ICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3Vy
Y2UubG9va0FoZWFkKGVuY29kaW5nU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
U2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJp
bmdBbmRBU1NFUlQoc291cmNlLCAiZW5jb2RpbmciKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJ
VENIX1RPKFhNTERlY2xBZnRlckVuY29kaW5nTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAncycpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6
TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoc3RhbmRhbG9uZVN0cmlu
Zyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gp
IHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInN0YW5k
YWxvbmUiKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5k
YWxvbmVOYW1lU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBo
YXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/
JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKKyAgICAg
ICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwor
ICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhYTUxE
ZWNsQWZ0ZXJFbmNvZGluZ05hbWVTdGF0ZSwgWE1MRGVjbEJlZm9yZUVuY29kaW5nVmFsdWVTdGF0
ZSwgWE1MRGVjbEVuY29kaW5nVmFsdWVTdGFydFF1b3RlZFN0YXRlKQorCisgICAgWE1MX0JFR0lO
X1NUQVRFKFhNTERlY2xFbmNvZGluZ1ZhbHVlU3RhcnRRdW90ZWRTdGF0ZSkgeworICAgICAgICBp
ZiAoaXNMZXR0ZXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblhNTEVuY29kaW5n
KGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xFbmNvZGluZ1ZhbHVlUXVv
dGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IFhNTF9CRUdJTl9TVEFURShYTUxEZWNsRW5jb2RpbmdWYWx1ZVF1b3RlZFN0YXRlKSB7CisgICAg
ICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKSB7CisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQWZ0ZXJFbmNvZGluZ1N0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChpc0FscGhhTnVtZXJpYyhjYykgfHwgY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb1hNTEVuY29kaW5nKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKFhNTERlY2xFbmNvZGluZ1ZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1M
X0JFR0lOX1NUQVRFKFhNTERlY2xBZnRlckVuY29kaW5nU3RhdGUpIHsKKyAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxE
ZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc/
JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUp
IHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0YW5kYWxvbmVTdHJpbmcs
ICgic3RhbmRhbG9uZSIpKTsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdzJykgeworICAgICAgICAgICAgU2VnbWVu
dGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChzdGFu
ZGFsb25lU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5n
OjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQoc291
cmNlLCAic3RhbmRhbG9uZSIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oWE1MRGVj
bEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbENsb3NlU3Rh
dGUpOworICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxl
KHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBFUV9CRUZPUkVfVkFMVUVf
U1RBVEVTKFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1lU3RhdGUsIFhNTERlY2xCZWZvcmVTdGFu
ZGFsb25lVmFsdWVTdGF0ZSwgWE1MRGVjbFN0YW5kYWxvbmVWYWx1ZVF1b3RlZFN0YXRlKQorCisg
ICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xTdGFuZGFsb25lVmFsdWVRdW90ZWRTdGF0ZSkgewor
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeWVzU3RyaW5nLCAoInllc1wiIikp
OworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbm9TdHJpbmcsICgibm9cIiIp
KTsKKyAgICAgICAgaWYgKGNjID09ICd5JykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5n
OjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZCh5ZXNTdHJpbmcpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJ5ZXNcIiIpOwor
ICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFhNTFN0YW5kYWxvbmUodHJ1ZSk7CisgICAgICAg
ICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lU3RhdGUpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hD
aGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICduJykgeworICAgICAgICAgICAgU2Vn
bWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChu
b1N0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlk
TWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwg
Im5vXCIiKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRYTUxTdGFuZGFsb25lKGZhbHNl
KTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVT
dGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6
Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJl
ZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VFcnJvcigpOworICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUo
KQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSkgewor
ICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSk7CisgICAgICAgIGlmIChjYyA9
PSAnPycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQ2xvc2VTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xDbG9zZVN0YXRlKSB7CisgICAgICAg
IGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIHBhcnNlRXJyb3IoKTsK
KyAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRT
dGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgeworICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZE5hbWVDaGFyKGNjKSkgeworICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQoY2MpOworICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0U3RhdGUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkFm
dGVyVGFyZ2V0U3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRh
cmdldFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2xvc2VTdGF0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
KyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0YXRlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVj
dGlvbkRhdGFTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2xvc2VTdGF0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
KyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0YXRlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVj
dGlvbkNsb3NlU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRl
KTsKKyAgICAgICAgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVN
YXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhKCc/Jyk7CisgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShjYyk7CisgICAgICAgIFhNTF9BRFZBTkNFX1RP
KFByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGFTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpIHsKKyAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAoIi0tIikp
OworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0cmluZywgKCJk
b2N0eXBlIikpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY2RhdGFTdHJp
bmcsICgiW0NEQVRBWyIpKTsKKyAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAg
U2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVh
ZChkYXNoRGFzaFN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0
cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VS
VCgnLScpOworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7Cisg
ICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5Db21tZW50KCk7CisgICAgICAgICAgICAgICAg
WE1MX1NXSVRDSF9UTyhDb21tZW50U3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAg
ICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmlu
Zzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uo
ZG9jdHlwZVN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdu
b3JpbmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENI
X1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAg
ICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICdbJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRS
ZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChjZGF0YVN0cmluZyk7CisgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAg
ICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgIltDREFUQVsiKTsKKyAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkNEQVRBKCk7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRD
SF9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9
PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0KKyAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAg
IH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKENvbW1lbnRTdGF0ZSkg
eworICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29t
bWVudERhc2hTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAg
WE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRf
U1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKENvbW1lbnREYXNoU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjpl
bmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDb21tZW50
U3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVH
SU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnPicpCisgICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29u
c3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0
ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NU
WVBFKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRf
U1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicp
CisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7CisgICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNv
dXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJ
Tl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVO
YW1lU3RhdGUpOworICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAg
ICAgICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikg
eworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRP
ZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHN5c3RlbVN0cmluZywgKCJzeXN0ZW0iKSk7CisgICAgICAgIGlmIChjYyA9
PSAnUCcgfHwgY2MgPT0gJ3AnKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tB
aGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0
cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0
Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNl
KHNvdXJjZSwgInB1YmxpYyIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oQWZ0ZXJE
T0NUWVBFUHVibGljS2V5d29yZFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6
Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHN5
c3RlbVN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3Jp
bmdDYXNlKHNvdXJjZSwgInN5c3RlbSIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8o
QWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnWycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NU
WVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFy
c2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEFm
dGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShCZWZv
cmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQ
RVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICciJyB8fCBj
YyA9PSAnXCcnKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9F
bXB0eVN0cmluZygpOworICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9
IGNjOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJR
dW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9Cisg
ICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJRdW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gbV9hZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlcikKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQ
RVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIo
Y2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJR
dW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhN
TF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9m
RmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBY
TUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKSB7CisgICAgICAg
IGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1M
X0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBtX2FkZGl0aW9uYWxB
bGxvd2VkQ2hhcmFjdGVyID0gY2M7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhET0NUWVBF
U3lzdGVtSWRlbnRpZmllclF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9T
VEFURShET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChj
YyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKQorICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoaXNWYWxpZExpdGVyYWxDaGFyKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKERPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lO
X1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAo
aXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFm
dGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09
ICc+JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tl
bml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJ1snKQorICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5E
X1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShCZWZvcmVET0NUWVBFSW50ZXJuYWxTdWJz
ZXRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ10nKQorICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oQWZ0ZXJET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IGludGVybmFsIHN1YnNldAorICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NU
QVRFKEFmdGVyRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRP
Q1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQor
ICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0
YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShDREFUQVNlY3Rp
b25TdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY2xvc2VTdHJp
bmcsICgiXV0+IikpOworICAgICAgICBpZiAoY2MgPT0gJ10nKSB7CisgICAgICAgICAgICBTZWdt
ZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGNs
b3NlU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpE
aWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQoc291cmNl
LCAiXV0+Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3Vy
Y2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRP
ZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9DREFUQShjYyk7CisgICAgICAgIFhNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlvblN0
YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIHZvaWQgWE1MVG9rZW5p
emVyOjpidWZmZXJDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQoreworICAgIEFTU0VSVChjaGFy
YWN0ZXIgIT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcik7CisgICAg
bV90b2tlbi0+ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigpOworICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q2hhcmFjdGVyKGNoYXJhY3Rlcik7Cit9CisKK2lubGluZSB2b2lkIFhNTFRva2VuaXplcjo6cGFy
c2VFcnJvcigpCit7CisgICAgbV9wYXJzZUVycm9yID0gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJkOWNhZjczMDFmNTAw
ZWZmNDhmZTIwODUzYzZiMmFiNzM4Y2M2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBYTUxUb2tlbml6
ZXJfaAorI2RlZmluZSBYTUxUb2tlbml6ZXJfaAorCisjaW5jbHVkZSAiTWFya3VwVG9rZW5pemVy
QmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFhNTFRva2VuOworCitjbGFz
cyBYTUxUb2tlbml6ZXJTdGF0ZSB7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSB7CisgICAgICAg
IERhdGFTdGF0ZSwKKyAgICAgICAgQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSwKKyAgICAg
ICAgRW50aXR5UmVmZXJlbmNlU3RhdGUsCisgICAgICAgIFRhZ09wZW5TdGF0ZSwKKyAgICAgICAg
RW5kVGFnT3BlblN0YXRlLAorICAgICAgICBUYWdOYW1lU3RhdGUsCisgICAgICAgIEVuZFRhZ05h
bWVTdGF0ZSwKKyAgICAgICAgRW5kVGFnU3BhY2VTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9y
ZVZlcnNpb25OYW1lU3RhdGUsCisgICAgICAgIFhNTERlY2xBZnRlclZlcnNpb25OYW1lU3RhdGUs
CisgICAgICAgIFhNTERlY2xCZWZvcmVWZXJzaW9uVmFsdWVTdGF0ZSwKKyAgICAgICAgWE1MRGVj
bEJlZm9yZVZlcnNpb25PbmVQb2ludFN0YXRlLAorICAgICAgICBYTUxEZWNsVmVyc2lvblZhbHVl
UXVvdGVkU3RhdGUsCisgICAgICAgIFhNTERlY2xBZnRlclZlcnNpb25TdGF0ZSwKKyAgICAgICAg
WE1MRGVjbEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlLAorICAgICAgICBYTUxEZWNsQWZ0ZXJFbmNv
ZGluZ05hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZUVuY29kaW5nVmFsdWVTdGF0ZSwK
KyAgICAgICAgWE1MRGVjbEVuY29kaW5nVmFsdWVTdGFydFF1b3RlZFN0YXRlLAorICAgICAgICBY
TUxEZWNsRW5jb2RpbmdWYWx1ZVF1b3RlZFN0YXRlLAorICAgICAgICBYTUxEZWNsQWZ0ZXJFbmNv
ZGluZ1N0YXRlLAorICAgICAgICBYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSwKKyAg
ICAgICAgWE1MRGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJl
Zm9yZVN0YW5kYWxvbmVWYWx1ZVN0YXRlLAorICAgICAgICBYTUxEZWNsU3RhbmRhbG9uZVZhbHVl
UXVvdGVkU3RhdGUsCisgICAgICAgIFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSwKKyAgICAg
ICAgWE1MRGVjbENsb3NlU3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdl
dFN0YXJ0U3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXRlLAor
ICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRhcmdldFN0YXRlLAorICAgICAgICBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhU3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbkNsb3NlU3RhdGUsCisgICAgICAgIE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlLAorICAg
ICAgICBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUsCisgICAgICAgIEF0dHJpYnV0ZU5hbWVTdGF0
ZSwKKyAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUsCisgICAgICAgIEJlZm9yZUF0dHJp
YnV0ZVZhbHVlU3RhdGUsCisgICAgICAgIEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUsCisgICAg
ICAgIENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSwKKyAgICAgICAgQWZ0
ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAorICAgICAgICBTZWxmQ2xvc2luZ1N0YXJ0VGFn
U3RhdGUsCisgICAgICAgIENvbW1lbnRTdGF0ZSwKKyAgICAgICAgQ29tbWVudERhc2hTdGF0ZSwK
KyAgICAgICAgQ29tbWVudEVuZFN0YXRlLAorICAgICAgICBCZWZvcmVET0NUWVBFTmFtZVN0YXRl
LAorICAgICAgICBET0NUWVBFTmFtZVN0YXRlLAorICAgICAgICBBZnRlckRPQ1RZUEVOYW1lU3Rh
dGUsCisgICAgICAgIEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSwKKyAgICAgICAgQmVm
b3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSwKKyAgICAgICAgRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJRdW90ZWRTdGF0ZSwKKyAgICAgICAgQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmll
clN0YXRlLAorICAgICAgICBBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUsCisgICAgICAg
IEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUsCisgICAgICAgIERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyUXVvdGVkU3RhdGUsCisgICAgICAgIEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJTdGF0ZSwKKyAgICAgICAgQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUsCisg
ICAgICAgIEFmdGVyRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUsCisgICAgICAgIENEQVRBU2Vj
dGlvblN0YXRlLAorICAgIH07Cit9OworCitjbGFzcyBYTUxUb2tlbml6ZXIgOiBNYXJrdXBUb2tl
bml6ZXJCYXNlPFhNTFRva2VuLCBYTUxUb2tlbml6ZXJTdGF0ZT4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFhNTFRva2VuaXplcik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8WE1MVG9rZW5pemVyPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgWE1MVG9rZW5pemVyKTsgfQorCisgICAgLy8gVGhpcyBmdW5jdGlv
biByZXR1cm5zIHRydWUgaWYgaXQgZW1pdHMgYSB0b2tlbi4gT3RoZXJ3aXNlLCBjYWxsZXJzCisg
ICAgLy8gbXVzdCBwcm92aWRlIHRoZSBzYW1lIChpbiBwcm9ncmVzcykgdG9rZW4gb24gdGhlIG5l
eHQgY2FsbCAodW5sZXNzCisgICAgLy8gdGhleSBjYWxsIHJlc2V0KCkgZmlyc3QpLgorICAgIGJv
b2wgbmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYsIFhNTFRva2VuJik7CisKKyAgICBib29sIGdv
dEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZUVycm9yOyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwor
cHJpdmF0ZToKKyAgICBYTUxUb2tlbml6ZXIoKTsKKworICAgIGlubGluZSB2b2lkIHBhcnNlRXJy
b3IoKTsKKyAgICBpbmxpbmUgdm9pZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIpOworCisgICAgYm9v
bCBtX3BhcnNlRXJyb3I7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101957</attachid>
            <date>2011-07-25 18:19:39 -0700</date>
            <delta_ts>2011-07-26 10:59:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64566-20110725181938.patch</filename>
            <type>text/plain</type>
            <size>53582</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTU4OTBjMzk0YTk3NjQz
MjM0MzY4MjllZDkxNDFiM2I3NDg4ZWE3Li40ODUxOTM0NmQ2ODJhNDJkMmMyZDU0NTdiNjkyNjlj
YjNkYTFjZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMjUgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBOZXcgWE1MIHRva2VuaXplcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdG9rZW5p
emVyIGZvciBYTUwgYW5kIHRlc3RzIGluIE5ld1hNTERvY3VtZW50UGFyc2VyIGZvciBwcmludGlu
ZyByZXN1bHRzIG9mIHRva2VuaXphdGlvbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB4bWwvcGFyc2VyL05ld1hNTERv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ld1hNTERvY3VtZW50UGFyc2Vy
OjpOZXdYTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpOZXdYTUxEb2N1bWVu
dFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFy
c2VyLmg6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxUb2tlbi5oOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tl
bml6ZXI6OlhNTFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjo6OnNob3VsZFNraXBOdWxs
Q2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6Om5leHRUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmJ1ZmZlckNoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnBhcnNlRXJyb3IpOgorICAgICAgICAqIHhtbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5p
emVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjpnb3RFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnNob3VsZFNraXBOdWxsQ2hhcmFjdGVy
cyk6CisKIDIwMTEtMDYtMDcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQ1NGI5ZDNjYTZjM2ZkNjc0ZGE1NGRiZGE0ZWVjOTVm
ZDQ5MmMxMjMuLjFiYjY3Yjc2Y2JjNzk5MmUxNTI1YmM5NmY2ZmZkMDg5OWMyZWE4NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzgxOCw2ICszODE4LDkgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL0RPTVBh
cnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDM5OWJkZTZkMDI0Y2I4YWM0MzRiZWY3Mzg2MzNhODA3YjMzNzczNzUuLjBkOWE5MDgzYjYwNTJi
MTdkNDlmOTM0NmE1NDczNDEwYTY0MmU0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxMjYsMTIg
KzYxMjYsMTcgQEAKICAgICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oJywK
ICAgICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCcsCiAgICAgICAg
ICAgICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgnLAorICAgICAg
ICAgICAgJ3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKKyAgICAgICAgICAg
ICd4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlclF0LmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclNj
b3BlLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclNjb3Bl
LmgnLAorICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmNwcCcsCisgICAgICAg
ICAgICAneG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaCcsCisgICAgICAgICAgICAneG1sL3BhcnNl
ci9YTUxUb2tlbi5oJywKICAgICAgICAgICAgICd4bWwvRE9NUGFyc2VyLmNwcCcsCiAgICAgICAg
ICAgICAneG1sL0RPTVBhcnNlci5oJywKICAgICAgICAgICAgICd4bWwvTmF0aXZlWFBhdGhOU1Jl
c29sdmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDcxN2JhM2Q4ZmViYTZhODY1MjdlZTY2OGU0
YWZjNDg2NTMxMmE0MTkuLjg2NTQ4OGU4ZGMyMDc4NDRkOTgyMDA5MDhhYzIxYTFmZGVmM2E1OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0xMTk5LDcgKzExOTksOSBAQCBTT1VSQ0VTICs9IFwKICAgICB4
bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwIFwKICAgICB4bWwvWE1MRXJyb3JzLmNwcCBcCiAg
ICAgeG1sL1hNTFNlcmlhbGl6ZXIuY3BwIFwKLSAgICB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcCAKKyAgICB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCisgICAg
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgXAorICAgIHhtbC9wYXJzZXIvWE1MVG9r
ZW5pemVyLmNwcAogCiBIRUFERVJTICs9IFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZENlbGwuaCBcCkBAIC0yNTAzLDcgKzI1MDUsMTAgQEAgSEVBREVSUyArPSBcCiAg
ICAgeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAgICAgeG1sL3BhcnNlci9NYXJrdXBU
b2tlbml6ZXJCYXNlLmggXAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0
aG9kcy5oIFwKKyAgICB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmggXAogICAgIHht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaCBcCisgICAgeG1sL3BhcnNlci9YTUxUb2tlbml6
ZXIuaCBcCisgICAgeG1sL3BhcnNlci9YTUxUb2tlbi5oIFwKICAgICB4bWwvRE9NUGFyc2VyLmgg
XAogICAgIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBcCiAgICAgeG1sL1hNTEh0dHBSZXF1
ZXN0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCAxMzJjN2E2NjA1MDc0NDdlMjQ1ZTY3YWRiZDhlMjFiY2ViYTJjMTg2Li5iMTIxMmQ1NzU5
ZmZhMWZhZTc4YjQzMjZmMTU1NjA0ZjJhYjAzOTljIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI3NDgsNiArNDI3NDgsMTQgQEAKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxw
YXJzZXJcWE1MVG9rZW5pemVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXFhNTFRva2VuLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CiAJCQk8L0ZpbHRlcj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYWE3OGMy
N2JiOWY3OTJlMWFiYjdkNGZmYmIwM2UwNjUzN2MyMDg1Li5iNTM4NjA5MDIwMGU3Y2JmNzM0OWFl
ZWE2YjMzMzNkZDM0MGVjOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Nyw2ICs0Nyw4IEBACiAvKiBCZWdpbiBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCQkwMDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLzsgfTsKIAkJMDAwMkVDNTgxM0MzRjY3
RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLzsg
fTsKKwkJMDAwMkVDNTkxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1NjEzQzNGNjdE
MDAwNDBENDcgLyogWE1MVG9rZW5pemVyLmNwcCAqLzsgfTsKKwkJMDAwMkVDNUExM0MzRjY3RDAw
MDQwRDQ3IC8qIFhNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDAwMkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5o
ICovOyB9OwogCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYy
ODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAx
NDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIw
REIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLzsgfTsKIAkJMDAzRjFGRUExMUU2QUI0MzAwODI1
OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5
cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTY0NTcsNiArNjQ1OSw4IEBACiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklu
bGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDAwMkVDNTYxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUb2tlbml6ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwMDAyRUM1NzEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTFRva2VuaXplci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIg
LyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gT3JpZ2luQWNjZXNzRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAzRjFGRTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250
ZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4MTAsNiArMTI4MTQsOCBA
QAogCQkJCTAwQjkzMTg1MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3Bl
LmNwcCAqLywKIAkJCQkwMEI5MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZS5oICovLAogCQkJCTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5o
ICovLAorCQkJCTAwMDJFQzU2MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuY3BwICov
LAorCQkJCTAwMDJFQzU3MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gcGFyc2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIz
MjI3LDYgKzIzMjMzLDcgQEAKIAkJCQlFMTVBMzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhN
TFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwMDJFQzU4MTNDM0Y2N0QwMDA0MEQ0
NyAvKiBYTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDAwMkVDNUExM0MzRjY3RDAwMDQw
RDQ3IC8qIFhNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkwNUFEQzAxMzAyRjND
RTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzY5
MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2MERBNUIwRDJBMzFGNzAwQjk5MThGIC8qIFhQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTI2MDEzLDYgKzI2MDIwLDcgQEAKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQg
LyogWE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1QTM2RDkxMTA0NTcyNzAwQjdC
NjM5IC8qIFhNTE5TTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzRUEwQThEMThF
NzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDAwMkVD
NTkxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RkM2ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhw
cmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggY2MzMDU0Y2RlMGFkNDIxMmYzOTlj
NGY1NjkwOWFjNTMxMTFmMmIyYi4uMmZhYzI3MTk0YWU5MGZkZTcxNzc1ZmI5Zjk2YzU3M2M5ZGYy
MGVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHAKQEAgLTI2LDEwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk5ld1hNTERvY3VtZW50UGFyc2VyLmgiCiAKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJp
bmcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOZXdYTUxEb2N1bWVudFBhcnNlcjo6TmV3
WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKGRvY3VtZW50KQorICAgICwgbV90b2tlbml6ZXIoWE1MVG9rZW5pemVyOjpj
cmVhdGUoKSkKIHsKIH0KIApAQCAtNDksOCArNTIsMjMgQEAgdm9pZCBOZXdYTUxEb2N1bWVudFBh
cnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdt
ZW50ZWRTdHJpbmcmKQordm9pZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc3RyaW5nKQogeworICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dCA9IHN0
cmluZzsKKyAgICB3aGlsZSAoIWlucHV0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fdG9r
ZW5pemVyLT5uZXh0VG9rZW4oaW5wdXQsIG1fdG9rZW4pKQorICAgICAgICAgICAgY29udGludWU7
CisKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fdG9rZW4ucHJpbnQoKTsKKyNlbmRpZgorCisg
ICAgICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CisgICAgICAgIEFT
U0VSVChtX3Rva2VuLmlzVW5pbml0aWFsaXplZCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV3WE1M
RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L05ld1hNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggN2I0M2IyNGYwOGQ0NmNiNjdlY2UzZTE0ODMw
ZDgzZWU0ZDg2ZDE5NC4uMzU3NTc1NGRkYTNmOWE0YjUxMjhmZjQ4Y2I0MDY4MDc5MTMzZjEwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIu
aApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tl
bi5oIgorI2luY2x1ZGUgIlhNTFRva2VuaXplci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
NCw2ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlw
dHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsK
KworICAgIE93blB0cjxYTUxUb2tlbml6ZXI+IG1fdG9rZW5pemVyOworICAgIFhNTFRva2VuIG1f
dG9rZW47CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKaW5kZXggN2Q0
NzM3NmZmYWNkZTRlYjdlZTZjMGVjODg0MzBkNGYxYjQ2OWZkNS4uYWIxNjViNzI1NzBmNTI4ODM3
ZjBjMWE2M2EwZGZlMzNmMzEzZWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4u
aApAQCAtNTIsOCArNTIsNiBAQCBwdWJsaWM6CiB9OwogCiBjbGFzcyBYTUxUb2tlbiA6IHB1Ymxp
YyBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcz4gewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFhNTFRva2VuKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQogICAgIHsKQEAgLTMwNCw3ICszMDIsNyBAQCBwdWJsaWM6
CiAjZW5kaWYgLy8gTkRFQlVHCiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBCYXNlRG9jdHlwZURh
dGEgRG9jdHlwZURhdGE7CisgICAgdHlwZWRlZiBEb2N0eXBlRGF0YUJhc2UgRG9jdHlwZURhdGE7
CiAKICAgICBjbGFzcyBYTUxEZWNsYXJhdGlvbkRhdGEgewogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShYTUxEZWNsYXJhdGlvbkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxUb2tlbml6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2OWI4ZjVkNDA0YzRhOGQ0NmJmYmU1ZjhjOGFj
MzUwZjUwZjkzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTFRva2VuaXplci5jcHAKQEAgLTAsMCArMSwxMDMxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiCisKKyNpbmNsdWRlICJNYXJrdXBUb2tlbml6
ZXJJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tlbi5oIgor
I2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBi
b29sIGlzTnVtZXJpYyhVQ2hhciBjYykKK3sKKyAgICByZXR1cm4gY2MgPj0gJzAnICYmIGNjIDw9
ICc5JzsKK30KKworaW5saW5lIGJvb2wgaXNMZXR0ZXIoVUNoYXIgY2MpCit7CisgICAgcmV0dXJu
IChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB8fCAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jyk7Cit9
CisKK2lubGluZSBib29sIGlzQWxwaGFOdW1lcmljKFVDaGFyIGNjKQoreworICAgIHJldHVybiBp
c0xldHRlcihjYykgfHwgaXNOdW1lcmljKGNjKTsKK30KKworaW5saW5lIGJvb2wgaXNWYWxpZE5h
bWVTdGFydChVQ2hhciBjYykKK3sKKyAgICBpZiAoY2MgPD0gMHg0MCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChjYyA8PSAweDVBKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAoY2MgPT0gMHg1RikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjIDw9IDB4NjAp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHg3QSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKGNjIDwgMHhDMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChjYyA8PSAweEQ2KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPT0gMHhE
OCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweEY2KQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPT0gMHhGNykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChjYyA8PSAweDJGRikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjIDwg
MHgzNzApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHgzN0QpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA9PSAweDM3RSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChjYyA8PSAweDFGRkYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChjYyA8IDB4MjAwQykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweDIw
MEQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4MjA3MCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweDIxOEYpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChjYyA8IDB4MkMwMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChj
YyA8PSAweDJGRUYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4MzAwMSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweEQ3RkYpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4RjkwMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChjYyA8PSAweEZEQ0YpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8
IDB4RkRGMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8PSAweEZGRkQpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRklYTUU6IHN1cHBvcnQgbm9uLUJNUCBwbGFu
ZXMKKworICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVDaGFy
KFVDaGFyIGNjKQoreworICAgIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKGNjID09ICctJyB8fCBjYyA9PSAnLicpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChjYyA8IDB4MzApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoY2MgPCAweDNCKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDAzMDAp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHgwMzZGKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDIwM0YpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoY2MgPD0gMHgyMDQwKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVy
biBmYWxzZTsKK30KKworaW5saW5lIGJvb2wgaXNWYWxpZExpdGVyYWxDaGFyKFVDaGFyIGNjKQor
eworICAgIGlmIChjYyA9PSAweEQgfHwgY2MgPT0gMHhBKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoY2MgPCAweDIwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjID09
ICciJyB8fCBjYyA9PSAnJicpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPCAw
eDNDKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPT0gJzwnIHx8IGNjID09ICc+
JykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8IDB4NUIpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChjYyA9PSAnXycpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChjYyA8PSAweDYwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDwgMHg3
QikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KKwor
I2RlZmluZSBYTUxfQkVHSU5fU1RBVEUoc3RhdGVOYW1lKSBCRUdJTl9TVEFURShYTUxUb2tlbml6
ZXJTdGF0ZSwgc3RhdGVOYW1lKQorI2RlZmluZSBYTUxfQURWQU5DRV9UTyhzdGF0ZU5hbWUpIEFE
VkFOQ0VfVE8oWE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgWE1MX1NXSVRD
SF9UTyhzdGF0ZU5hbWUpIFNXSVRDSF9UTyhYTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQor
CisjZGVmaW5lIEVRX1NUQVRFKEN1cnJlbnRTdGF0ZSwgTmV4dFN0YXRlKSBcCisgICAgWE1MX0JF
R0lOX1NUQVRFKEN1cnJlbnRTdGF0ZSkgeyAgICAgICBcCisgICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2MpKSAgICBcCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDdXJyZW50
U3RhdGUpOyBcCisgICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhOZXh0U3RhdGUpOyAgICBcCisgICAgICAgIGVsc2Ug
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYXJzZUVycm9yKCk7
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3Vy
Y2UpOyBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRU5EX1NUQVRFKCkK
KworI2RlZmluZSBFUV9CRUZPUkVfVkFMVUVfU1RBVEVTKEVxdWFsc1N0YXRlLCBCZWZvcmVWYWx1
ZVN0YXRlLCBWYWx1ZVN0YXRlKSBcCisgICAgRVFfU1RBVEUoRXF1YWxzU3RhdGUsIEJlZm9yZVZh
bHVlU3RhdGUpICAgIFwKKyAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlVmFsdWVTdGF0ZSkgeyAg
ICAgICAgXAorICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgICAgICAgICBc
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVWYWx1ZVN0YXRlKTsgIFwKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsgICAgXAorICAgICAgICAgICAg
bV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IGNjOyBcCisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhWYWx1ZVN0YXRlKTsgICAgICAgIFwKKyAgICAgICAgfSBlbHNlIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGFyc2VFcnJvcigpOyAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2Up
OyAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
RU5EX1NUQVRFKCkKKworWE1MVG9rZW5pemVyOjpYTUxUb2tlbml6ZXIoKQoreworICAgIHJlc2V0
KCk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIE1hcmt1cFRva2VuaXplckJhc2U8WE1M
VG9rZW4sIFhNTFRva2VuaXplclN0YXRlPjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgWE1MVG9rZW5pemVyOjpuZXh0VG9r
ZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFhNTFRva2VuJiB0b2tlbikKK3sKKyAgICAvLyBJ
ZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8gYmUg
Y2FsbGVkIGJhY2sKKyAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5pc2gg
aXQuCisgICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5
cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICBtX3Rva2VuID0gJnRv
a2VuOworCisgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51bWJlcikpCisgICAgICAgIHJldHVybiBoYXZlQnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgIFVDaGFyIGNjID0gbV9pbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgewor
ICAgIFhNTF9CRUdJTl9TVEFURShEYXRhU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcmJykK
KyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZVN0YXJ0U3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpIHsKKyAgICAgICAgICAgIGlmIChtX3Rva2Vu
LT50eXBlKCkgPT0gWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICAgICAg
Ly8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3RlciB0b2tlbnMgcXVldWVkIHVwIHRoYXQgd2UK
KyAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhlcmUuCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhUYWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisgICAgICAgICAgICByZXR1cm4gZW1pdEVu
ZE9mRmlsZShzb3VyY2UpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlckNoYXJh
Y3RlcihjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAg
ICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQ2hhcmFj
dGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJyMnKSB7CisgICAg
ICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKKyAgICAgICAgICAgIFZl
Y3RvcjxVQ2hhciwgMTY+IGRlY29kZWRDaGFyYWN0ZXI7CisgICAgICAgICAgICBpZiAoY29uc3Vt
ZVhNTENoYXJhY3RlclJlZmVyZW5jZShzb3VyY2UsIGRlY29kZWRDaGFyYWN0ZXIsIG5vdEVub3Vn
aENoYXJhY3RlcnMpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPFVDaGFyLCAxNj46OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBkZWNvZGVkQ2hhcmFjdGVyLmJlZ2luKCk7CisgICAgICAgICAgICAg
ICAgZm9yICg7IGl0ZXIgIT0gZGVjb2RlZENoYXJhY3Rlci5lbmQoKTsgKytpdGVyKQorICAgICAg
ICAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoKml0ZXIpOworICAgICAgICAgICAgICAgIFhN
TF9TV0lUQ0hfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm90RW5vdWdo
Q2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVy
VG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgeworICAg
ICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIFhNTFRv
a2VuaXplclN0YXRlOjpDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydFN0YXRlKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luRW50aXR5KGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVu
dGl0eVJlZmVyZW5jZVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICBwYXJzZUVycm9yKCk7Cisg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFU
RSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoRW50aXR5UmVmZXJlbmNlU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvTmFtZShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbnRpdHlSZWZlcmVuY2VT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzsnKQorICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShUYWdPcGVuU3RhdGUpIHsKKyAgICAgICAgaWYg
KGNjID09ICchJykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9u
T3BlblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5h
bWVTdGFydChjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luU3RhcnRUYWcoY2MpOwor
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25UYXJnZXRTdGFydFN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBw
YXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwor
ICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUo
RW5kVGFnT3BlblN0YXRlKSB7CisgICAgICAgIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewor
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcoY2MpOworICAgICAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFU
RShUYWdOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhT
ZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsK
KyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7CisgICAgICAgICAgICBYTUxf
QURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRF
KEVuZFRhZ05hbWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNj
KSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVuZFRhZ1NwYWNlU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
KHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYg
KGlzVmFsaWROYW1lQ2hhcihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFt
ZShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdOYW1lU3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEVuZFRhZ1NwYWNlU3RhdGUpIHsKKyAgICAgICAg
aWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhFbmRUYWdTcGFjZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhTZWxmQ2xv
c2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lU3RhcnQoY2MpKSB7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOworICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5k
T2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IFhNTF9CRUdJTl9TVEFURShBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0
ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAg
WE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc9JykgeworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShz
b3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChp
c1ZhbGlkTmFtZUNoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJp
YnV0ZU5hbWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVy
c0NvbnN1bWVkKCkpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgRVFfU1RBVEUoQWZ0ZXJB
dHRyaWJ1dGVOYW1lU3RhdGUsIEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpCisKKyAgICBYTUxf
QkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNU
b2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9y
ZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicgfHwgY2Mg
PT0gJ1wnJykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVWYWx1ZShzb3Vy
Y2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSArIDEpOworICAgICAgICAgICAgbV9hZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IGNjOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
QXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2Up
OworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RB
VEUoQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gbV9hZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlcikgeworICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmli
dXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnJicpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDaGFy
YWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChj
YyA9PSAnPCcgfHwgY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtl
cikgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+ZW5k
QXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShDaGFyYWN0
ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcj
JykgeworICAgICAgICAgICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7CisgICAg
ICAgICAgICBWZWN0b3I8VUNoYXIsIDE2PiBkZWNvZGVkQ2hhcmFjdGVyOworICAgICAgICAgICAg
c291cmNlLnB1c2goY2MpOworICAgICAgICAgICAgaWYgKGNvbnN1bWVYTUxDaGFyYWN0ZXJSZWZl
cmVuY2Uoc291cmNlLCBkZWNvZGVkQ2hhcmFjdGVyLCBub3RFbm91Z2hDaGFyYWN0ZXJzKSkgewor
ICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
ZGVjb2RlZENoYXJhY3Rlci5iZWdpbigpOworICAgICAgICAgICAgICAgIGZvciAoOyBpdGVyICE9
IGRlY29kZWRDaGFyYWN0ZXIuZW5kKCk7ICsraXRlcikKKyAgICAgICAgICAgICAgICAgICAgbV90
b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSgqaXRlcik7CisgICAgICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKG5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVC
dWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUo
c291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoJyYnKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
QXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3Rh
dGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNl
IGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0
YXJ0VGFnU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0
ZSkgeworICAgICAgICBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRT
ZWxmQ2xvc2luZygpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICB9CisgICAgICAgIHBhcnNl
RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25UYXJnZXRTdGFydFN0YXRlKSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCB4bWxTdHJpbmcsICgieG1sICIpKTsKKyAgICAgICAgaWYgKGNjID09ICd4JyB8fCBjYyA9PSAn
WCcpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3Vs
dCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoeG1sU3RyaW5nKTsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAg
ICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAieG1sICIpOwor
ICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luWE1MRGVjbGFyYXRpb24oKTsKKyAgICAgICAg
ICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xCZWZvcmVWZXJzaW9uTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdo
Q2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVy
VG9rZW4oKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IFhNTFRv
a2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAmJiBpc1ZhbGlkTmFtZUNoYXIoY2MpKQor
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQo
Y2MpOworICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkKKyAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNjKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9m
RmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3Np
bmdJbnN0cnVjdGlvblRhcmdldFN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IFhNTF9CRUdJTl9TVEFURShYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSkgeworICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmVyc2lvblN0cmluZywgKCJ2ZXJzaW9uIikp
OworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVWZXJzaW9uTmFtZVN0YXRlKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQg
PSBzb3VyY2UubG9va0FoZWFkKHZlcnNpb25TdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgYWR2YW5j
ZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJ2ZXJzaW9uIik7CisgICAgICAgICAgICAgICAgWE1M
X1NXSVRDSF9UTyhYTUxEZWNsQWZ0ZXJWZXJzaW9uTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykK
KyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAg
ICAgICAgfQorICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBFUV9CRUZPUkVfVkFM
VUVfU1RBVEVTKFhNTERlY2xBZnRlclZlcnNpb25OYW1lU3RhdGUsIFhNTERlY2xCZWZvcmVWZXJz
aW9uVmFsdWVTdGF0ZSwgWE1MRGVjbEJlZm9yZVZlcnNpb25PbmVQb2ludFN0YXRlKQorCisgICAg
WE1MX0JFR0lOX1NUQVRFKFhNTERlY2xCZWZvcmVWZXJzaW9uT25lUG9pbnRTdGF0ZSkgeworICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb25lUG9pbnRTdHJpbmcsICgiMS4iKSk7
CisgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJj
ZS5sb29rQWhlYWQob25lUG9pbnRTdHJpbmcpOworICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNT
RVJUKCcxJyk7CisgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLicpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9YTUxWZXJzaW9uKCcxJyk7CisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb1hNTFZlcnNpb24oJy4nKTsKKyAgICAgICAgICAgIGlmIChpc051bWVy
aWMoKnNvdXJjZSkpCisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsVmVyc2lv
blZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50
ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1
ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICBy
ZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xWZXJzaW9uVmFsdWVRdW90ZWRTdGF0ZSkgeworICAg
ICAgICBpZiAoY2MgPT0gbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcikgeworICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEFmdGVyVmVyc2lvblN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChpc051bWVyaWMoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1hN
TFZlcnNpb24oY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbFZlcnNpb25W
YWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNs
QWZ0ZXJWZXJzaW9uU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShj
YykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQmVmb3JlRW5jb2RpbmdOYW1l
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhYTUxEZWNsQ2xvc2VTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRF
KFhNTERlY2xCZWZvcmVFbmNvZGluZ05hbWVTdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgZW5jb2RpbmdTdHJpbmcsICgiZW5jb2RpbmciKSk7CisgICAgICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzdGFuZGFsb25lU3RyaW5nLCAoInN0YW5kYWxvbmUi
KSk7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAg
WE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJ2UnKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tB
aGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGVuY29kaW5nU3RyaW5nKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAg
ICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAiZW5jb2RpbmciKTsK
KyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlckVuY29kaW5nTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAncycpIHsKKyAgICAg
ICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5s
b29rQWhlYWQoc3RhbmRhbG9uZVN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNl
Z21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5n
QW5kQVNTRVJUKHNvdXJjZSwgInN0YW5kYWxvbmUiKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJ
VENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1lU3RhdGUpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQor
ICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhN
TERlY2xDbG9zZVN0YXRlKTsKKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgRVFf
QkVGT1JFX1ZBTFVFX1NUQVRFUyhYTUxEZWNsQWZ0ZXJFbmNvZGluZ05hbWVTdGF0ZSwgWE1MRGVj
bEJlZm9yZUVuY29kaW5nVmFsdWVTdGF0ZSwgWE1MRGVjbEVuY29kaW5nVmFsdWVTdGFydFF1b3Rl
ZFN0YXRlKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xFbmNvZGluZ1ZhbHVlU3RhcnRR
dW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoaXNMZXR0ZXIoY2MpKSB7CisgICAgICAgICAgICBt
X3Rva2VuLT5iZWdpblhNTEVuY29kaW5nKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RP
KFhNTERlY2xFbmNvZGluZ1ZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIHBh
cnNlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9
CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsRW5jb2RpbmdW
YWx1ZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQWZ0ZXJFbmNv
ZGluZ1N0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0FscGhhTnVtZXJpYyhjYykgfHwgY2Mg
PT0gJy0nKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1hNTEVuY29kaW5nKGNjKTsK
KyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xFbmNvZGluZ1ZhbHVlUXVvdGVkU3Rh
dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xBZnRlckVuY29kaW5n
U3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc/JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhN
TERlY2xDbG9zZVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9
CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJl
Zm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHN0YW5kYWxvbmVTdHJpbmcsICgic3RhbmRhbG9uZSIpKTsKKyAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxE
ZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdz
JykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0
ID0gc291cmNlLmxvb2tBaGVhZChzdGFuZGFsb25lU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFk
dmFuY2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAic3RhbmRhbG9uZSIpOworICAgICAgICAgICAg
ICAgIFhNTF9TV0lUQ0hfVE8oWE1MRGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSk7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENo
YXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRv
a2VuKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oWE1MRGVjbENsb3NlU3RhdGUpOworICAgICAgICBwYXJzZUVycm9yKCk7CisgICAg
ICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBFUV9CRUZPUkVfVkFMVUVfU1RBVEVTKFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1l
U3RhdGUsIFhNTERlY2xCZWZvcmVTdGFuZGFsb25lVmFsdWVTdGF0ZSwgWE1MRGVjbFN0YW5kYWxv
bmVWYWx1ZVF1b3RlZFN0YXRlKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xTdGFuZGFs
b25lVmFsdWVRdW90ZWRTdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgeWVzU3RyaW5nLCAoInllc1wiIikpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgbm9TdHJpbmcsICgibm9cIiIpKTsKKyAgICAgICAgaWYgKGNjID09ICd5JykgeworICAg
ICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNl
Lmxvb2tBaGVhZCh5ZXNTdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50
ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFT
U0VSVChzb3VyY2UsICJ5ZXNcIiIpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFhNTFN0
YW5kYWxvbmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0
ZXJTdGFuZGFsb25lU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2Vn
bWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVy
biBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICduJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVz
dWx0ID0gc291cmNlLmxvb2tBaGVhZChub1N0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNl
U3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgIm5vXCIiKTsKKyAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRYTUxTdGFuZGFsb25lKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RP
KFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2Up
OworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xB
ZnRlclN0YW5kYWxvbmVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNl
KGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVT
dGF0ZSk7CisgICAgICAgIGlmIChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhYTUxEZWNsQ2xvc2VTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VF
cnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERl
Y2xDbG9zZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkgeworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0lu
c3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZE5h
bWVDaGFyKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25UYXJnZXQoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2lu
Z0luc3RydWN0aW9uVGFyZ2V0U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRF
KFByb2Nlc3NpbmdJbnN0cnVjdGlvbkFmdGVyVGFyZ2V0U3RhdGUpIHsKKyAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRhcmdldFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9u
Q2xvc2VTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoY2Mp
OworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0
YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lO
X1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGFTdGF0ZSkgeworICAgICAgICBpZiAoY2Mg
PT0gJz8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9u
Q2xvc2VTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoY2Mp
OworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0
YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lO
X1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNsb3NlU3RhdGUpIHsKKyAgICAgICAgaWYgKGNj
ID09ICc+JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0K
KyAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhKCc/Jyk7
CisgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShjYyk7
CisgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGFTdGF0ZSk7
CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoTWFya3VwRGVj
bGFyYXRpb25PcGVuU3RhdGUpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRhc2hEYXNoU3RyaW5nLCAoIi0tIikpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgZG9jdHlwZVN0cmluZywgKCJkb2N0eXBlIikpOworICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgY2RhdGFTdHJpbmcsICgiW0NEQVRBWyIpKTsKKyAgICAgICAgaWYgKGNj
ID09ICctJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQg
cmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChkYXNoRGFzaFN0cmluZyk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAg
ICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOworICAgICAgICAgICAgICAgIHNvdXJjZS5h
ZHZhbmNlQW5kQVNTRVJUKCctJyk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5Db21t
ZW50KCk7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhDb21tZW50U3RhdGUpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hD
aGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsKKyAg
ICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJj
ZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBh
ZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsKKyAg
ICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAg
ICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hD
aGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdbJykgeworICAgICAgICAgICAgU2Vn
bWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChj
ZGF0YVN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJj
ZSwgIltDREFUQVsiKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNEQVRBKCk7Cisg
ICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1p
dEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JF
R0lOX1NUQVRFKENvbW1lbnRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudERhc2hTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYg
KGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNv
dXJjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKENv
bW1lbnREYXNoU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0n
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7CisgICAg
ICAgIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGlmIChjYyA9PSAn
LScpIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VFcnJvcigpOworICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RB
VEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1l
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgeworICAgICAg
ICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFy
c2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKERP
Q1RZUEVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3Vt
ZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
TmFtZShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5E
X1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpIHsK
KyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxf
QURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICBpZiAoY2MgPT0gJz4n
KQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXpl
clN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsK
KyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN5c3RlbVN0cmluZywgKCJzeXN0
ZW0iKSk7CisgICAgICAgIGlmIChjYyA9PSAnUCcgfHwgY2MgPT0gJ3AnKSB7CisgICAgICAgICAg
ICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0Fo
ZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlU3Ry
aW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInB1YmxpYyIpOworICAgICAgICAgICAg
ICAgIFhNTF9TV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hh
cmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9r
ZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7CisgICAg
ICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2Uu
bG9va0FoZWFkSWdub3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVz
dWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBhZHZh
bmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInN5c3RlbSIpOworICAgICAg
ICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5v
dWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFj
dGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnWycpCisgICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSkgewor
ICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0
RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKwor
ICAgIFhNTF9CRUdJTl9TVEFURShCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7
CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAg
IGVsc2UgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgbV9hZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IGNjOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
RE9DVFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmls
ZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxf
QkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSkgeworICAgICAg
ICBpZiAoY2MgPT0gbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcikKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAg
IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIp
IHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5k
T2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
RE9DVFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQor
ICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVt
S2V5d29yZFN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQor
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
dGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Cisg
ICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gY2M7CisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1b3Rl
ZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
KQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoaXNWYWxpZExpdGVyYWxDaGFyKGNjKSkgeworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKKyAgICAgICAg
ICAgIFhNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyUXVvdGVkU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRf
U1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7
CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJ1snKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9D
VFlQRUludGVybmFsU3Vic2V0U3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShC
ZWZvcmVET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ10n
KQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFSW50ZXJuYWxTdWJzZXRT
dGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IGlu
dGVybmFsIHN1YnNldAorICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRUludGVybmFsU3Vic2V0U3Rh
dGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJ
bihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhN
TF9CRUdJTl9TVEFURShDREFUQVNlY3Rpb25TdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgY2xvc2VTdHJpbmcsICgiXV0+IikpOworICAgICAgICBpZiAoY2MgPT0g
J10nKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1
bHQgPSBzb3VyY2UubG9va0FoZWFkKGNsb3NlU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFu
Y2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAiXV0+Iik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJp
bmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNjID09IElucHV0
U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DREFUQShjYyk7CisgICAgICAgIFhNTF9B
RFZBTkNFX1RPKENEQVRBU2VjdGlvblN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworaW5saW5lIHZvaWQgWE1MVG9rZW5pemVyOjpidWZmZXJDaGFyYWN0ZXIoVUNoYXIgY2hhcmFj
dGVyKQoreworICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6
OmVuZE9mRmlsZU1hcmtlcik7CisgICAgbV90b2tlbi0+ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigp
OworICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Cit9CisKK2lubGlu
ZSB2b2lkIFhNTFRva2VuaXplcjo6cGFyc2VFcnJvcigpCit7CisgICAgbV9wYXJzZUVycm9yID0g
dHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxU
b2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWJkOWNhZjczMDFmNTAwZWZmNDhmZTIwODUzYzZiMmFiNzM4Y2M2NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmgKQEAg
LTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBYTUxUb2tlbml6ZXJfaAorI2RlZmluZSBYTUxUb2tlbml6ZXJfaAorCisj
aW5jbHVkZSAiTWFya3VwVG9rZW5pemVyQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFhNTFRva2VuOworCitjbGFzcyBYTUxUb2tlbml6ZXJTdGF0ZSB7CitwdWJsaWM6Cisg
ICAgZW51bSBTdGF0ZSB7CisgICAgICAgIERhdGFTdGF0ZSwKKyAgICAgICAgQ2hhcmFjdGVyUmVm
ZXJlbmNlU3RhcnRTdGF0ZSwKKyAgICAgICAgRW50aXR5UmVmZXJlbmNlU3RhdGUsCisgICAgICAg
IFRhZ09wZW5TdGF0ZSwKKyAgICAgICAgRW5kVGFnT3BlblN0YXRlLAorICAgICAgICBUYWdOYW1l
U3RhdGUsCisgICAgICAgIEVuZFRhZ05hbWVTdGF0ZSwKKyAgICAgICAgRW5kVGFnU3BhY2VTdGF0
ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZVZlcnNpb25OYW1lU3RhdGUsCisgICAgICAgIFhNTERl
Y2xBZnRlclZlcnNpb25OYW1lU3RhdGUsCisgICAgICAgIFhNTERlY2xCZWZvcmVWZXJzaW9uVmFs
dWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZVZlcnNpb25PbmVQb2ludFN0YXRlLAorICAg
ICAgICBYTUxEZWNsVmVyc2lvblZhbHVlUXVvdGVkU3RhdGUsCisgICAgICAgIFhNTERlY2xBZnRl
clZlcnNpb25TdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlLAor
ICAgICAgICBYTUxEZWNsQWZ0ZXJFbmNvZGluZ05hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJl
Zm9yZUVuY29kaW5nVmFsdWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEVuY29kaW5nVmFsdWVTdGFy
dFF1b3RlZFN0YXRlLAorICAgICAgICBYTUxEZWNsRW5jb2RpbmdWYWx1ZVF1b3RlZFN0YXRlLAor
ICAgICAgICBYTUxEZWNsQWZ0ZXJFbmNvZGluZ1N0YXRlLAorICAgICAgICBYTUxEZWNsQmVmb3Jl
U3RhbmRhbG9uZU5hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVT
dGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVWYWx1ZVN0YXRlLAorICAgICAg
ICBYTUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUsCisgICAgICAgIFhNTERlY2xBZnRl
clN0YW5kYWxvbmVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbENsb3NlU3RhdGUsCisgICAgICAgIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXJ0U3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvblRhcmdldFN0YXRlLAorICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRl
clRhcmdldFN0YXRlLAorICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhU3RhdGUsCisg
ICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNsb3NlU3RhdGUsCisgICAgICAgIE1hcmt1cERl
Y2xhcmF0aW9uT3BlblN0YXRlLAorICAgICAgICBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUsCisg
ICAgICAgIEF0dHJpYnV0ZU5hbWVTdGF0ZSwKKyAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVOYW1lU3Rh
dGUsCisgICAgICAgIEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUsCisgICAgICAgIEF0dHJpYnV0
ZVZhbHVlUXVvdGVkU3RhdGUsCisgICAgICAgIENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRl
VmFsdWVTdGF0ZSwKKyAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAorICAg
ICAgICBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUsCisgICAgICAgIENvbW1lbnRTdGF0ZSwKKyAg
ICAgICAgQ29tbWVudERhc2hTdGF0ZSwKKyAgICAgICAgQ29tbWVudEVuZFN0YXRlLAorICAgICAg
ICBCZWZvcmVET0NUWVBFTmFtZVN0YXRlLAorICAgICAgICBET0NUWVBFTmFtZVN0YXRlLAorICAg
ICAgICBBZnRlckRPQ1RZUEVOYW1lU3RhdGUsCisgICAgICAgIEFmdGVyRE9DVFlQRVB1YmxpY0tl
eXdvcmRTdGF0ZSwKKyAgICAgICAgQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSwK
KyAgICAgICAgRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSwKKyAgICAgICAgQWZ0
ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlLAorICAgICAgICBBZnRlckRPQ1RZUEVTeXN0
ZW1LZXl3b3JkU3RhdGUsCisgICAgICAgIEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3Rh
dGUsCisgICAgICAgIERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyUXVvdGVkU3RhdGUsCisgICAgICAg
IEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSwKKyAgICAgICAgQmVmb3JlRE9DVFlQ
RUludGVybmFsU3Vic2V0U3RhdGUsCisgICAgICAgIEFmdGVyRE9DVFlQRUludGVybmFsU3Vic2V0
U3RhdGUsCisgICAgICAgIENEQVRBU2VjdGlvblN0YXRlLAorICAgIH07Cit9OworCitjbGFzcyBY
TUxUb2tlbml6ZXIgOiBNYXJrdXBUb2tlbml6ZXJCYXNlPFhNTFRva2VuLCBYTUxUb2tlbml6ZXJT
dGF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTFRva2VuaXplcik7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8WE1M
VG9rZW5pemVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgWE1MVG9rZW5pemVyKTsg
fQorCisgICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgaXQgZW1pdHMgYSB0b2tl
bi4gT3RoZXJ3aXNlLCBjYWxsZXJzCisgICAgLy8gbXVzdCBwcm92aWRlIHRoZSBzYW1lIChpbiBw
cm9ncmVzcykgdG9rZW4gb24gdGhlIG5leHQgY2FsbCAodW5sZXNzCisgICAgLy8gdGhleSBjYWxs
IHJlc2V0KCkgZmlyc3QpLgorICAgIGJvb2wgbmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYsIFhN
TFRva2VuJik7CisKKyAgICBib29sIGdvdEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZUVy
cm9yOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJpdmF0ZToKKyAgICBYTUxUb2tlbml6ZXIoKTsKKwor
ICAgIGlubGluZSB2b2lkIHBhcnNlRXJyb3IoKTsKKyAgICBpbmxpbmUgdm9pZCBidWZmZXJDaGFy
YWN0ZXIoVUNoYXIpOworCisgICAgYm9vbCBtX3BhcnNlRXJyb3I7Cit9OworCit9CisKKyNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102024</attachid>
            <date>2011-07-26 10:59:14 -0700</date>
            <delta_ts>2011-07-26 16:54:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64566-20110726105913.patch</filename>
            <type>text/plain</type>
            <size>54809</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTU4OTBjMzk0YTk3NjQz
MjM0MzY4MjllZDkxNDFiM2I3NDg4ZWE3Li43MWU4N2VmN2VmNmQ2NTg1Mzc2YWY2YzUwYzhlMTJm
OGI1ZjE1MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMjUgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBOZXcgWE1MIHRva2VuaXplcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCB0b2tlbml6ZXIg
Zm9yIFhNTCBhbmQgdGVzdHMgaW4gTmV3WE1MRG9jdW1lbnRQYXJzZXIgZm9yIHByaW50aW5nIHJl
c3VsdHMgb2YgdG9rZW5pemF0aW9uLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHhtbC9wYXJzZXIvTmV3WE1MRG9jdW1l
bnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV3WE1MRG9jdW1lbnRQYXJzZXI6Ok5l
d1hNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ld1hNTERvY3VtZW50UGFy
c2VyOjphcHBlbmQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIu
aDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTFRva2VuLmg6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxUb2tlbml6ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXpl
cjo6WE1MVG9rZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6c2hvdWxkU2tpcE51bGxDaGFy
YWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6YnVmZmVyQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTFRva2VuaXplcjo6cGFyc2VFcnJvcik6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmdvdEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKToK
KwogMjAxMS0wNi0wNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggZDU0YjlkM2NhNmMzZmQ2NzRkYTU0ZGJkYTRlZWM5NWZkNDky
YzEyMy4uYTdiYzQyNDk1YmZlODVjZjZkYWNmZjJlMmY5MDJmNTY4MzY5M2FiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zODA4LDE2ICszODA4LDIyIEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCBcCiAJU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
TWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9OZXdYTUxEb2N1bWVudFBhcnNlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlclNjb3BlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlclNjb3BlLmggXAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9r
ZW5pemVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaCBc
CisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS94bWwvRE9NUGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMzk5YmRlNmQwMjRjYjhhYzQzNGJlZjczODYzM2E4MDdiMzM3NzM3NS4uYjc1
MjBmMDk2N2U5YjBjYjM5ZTkyMmM0NDNiZjQ0ZTM0NjI5ODY0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNjEyMywxNSArNjEyMywyMyBAQAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCcsCisgICAgICAgICAg
ICAneG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmgnLAog
ICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgnLAogICAgICAgICAgICAg
J3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFy
c2VyL01hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCcsCisgICAgICAgICAgICAneG1sL3Bh
cnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAnLAorICAgICAgICAgICAgJ3htbC9wYXJzZXIv
TmV3WE1MRG9jdW1lbnRQYXJzZXIuaCcsCisgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTENo
YXJhY3RlclJlZmVyZW5jZVBhcnNlci5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAn
LAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAnLAog
ICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oJywKKyAgICAg
ICAgICAgICd4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAnLAorICAgICAgICAgICAgJ3htbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmgnLAorICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVG9rZW4u
aCcsCiAgICAgICAgICAgICAneG1sL0RPTVBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ3htbC9E
T01QYXJzZXIuaCcsCiAgICAgICAgICAgICAneG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCA3MTdiYTNkOGZlYmE2YTg2NTI3ZWU2NjhlNGFmYzQ4NjUzMTJh
NDE5Li4yZDVjMWY1YjU1NWE1MTk3YzM0NDhlNjEwYTE0MjUzM2RmYmFlZjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtMTE5OSw3ICsxMTk5LDEwIEBAIFNPVVJDRVMgKz0gXAogICAgIHhtbC9YTUxIdHRw
UmVxdWVzdFVwbG9hZC5jcHAgXAogICAgIHhtbC9YTUxFcnJvcnMuY3BwIFwKICAgICB4bWwvWE1M
U2VyaWFsaXplci5jcHAgXAotICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIAor
ICAgIHhtbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKKyAgICB4bWwvcGFyc2Vy
L1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgXAorICAgIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwIFwKKyAgICB4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAKIAogSEVB
REVSUyArPSBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgg
XApAQCAtMjUwMCwxMCArMjUwMywxNSBAQCBIRUFERVJTICs9IFwKICAgICB3b3JrZXJzL1dvcmtl
clJ1bkxvb3AuaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBcCiAgICAgd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaCBcCisgICAgeG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXJJbmxpbmVNZXRob2RzLmggXAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgg
XAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIFwKICAgICB4bWwvcGFyc2Vy
L01hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCBcCisgICAgeG1sL3BhcnNlci9OZXdYTUxE
b2N1bWVudFBhcnNlci5oIFwKKyAgICB4bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBh
cnNlci5oIFwKICAgICB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmggXAorICAgIHhtbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmggXAorICAgIHhtbC9wYXJzZXIvWE1MVG9rZW4uaCBcCiAgICAg
eG1sL0RPTVBhcnNlci5oIFwKICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggXAogICAg
IHhtbC9YTUxIdHRwUmVxdWVzdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggMTMyYzdhNjYwNTA3NDQ3ZTI0NWU2N2FkYmQ4ZTIxYmNlYmEy
YzE4Ni4uYTc5ZGFmZDdmMDE5NjNmYTg1Y2NjNDBkZWMzMzYyZTZjZjJmZmQwNyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQyNjczLDYgKzQy
NjczLDEwIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxDaGFyYWN0ZXJSZWZlcmVuY2VJ
bmxpbmVNZXRob2RzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuQmFzZS5oIgogCQkJCQk+CiAJCQkJ
PC9GaWxlPgpAQCAtNDI3NDgsNiArNDI3NTIsMTQgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4
bWxccGFyc2VyXFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcWE1MVG9rZW5pemVy
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
Llx4bWxccGFyc2VyXFhNTFRva2VuLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CiAJCQk8L0ZpbHRl
cj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYWE3OGMyN2JiOWY3OTJlMWFiYjdkNGZm
YmIwM2UwNjUzN2MyMDg1Li5iNTM4NjA5MDIwMGU3Y2JmNzM0OWFlZWE2YjMzMzNkZDM0MGVjOGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00Nyw2ICs0Nyw4IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwog
CQkwMDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5s
aW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklu
bGluZU1ldGhvZHMuaCAqLzsgfTsKIAkJMDAwMkVDNTgxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRv
a2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAy
RUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLzsgfTsKKwkJMDAwMkVDNTkxM0Mz
RjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1NjEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW5pemVyLmNwcCAqLzsgfTsKKwkJMDAwMkVDNUExM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2Vu
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAw
MkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5oICovOyB9OwogCQkwMDE0NjI4
QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFERTAwMEIyMERC
IC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDNDRDFERTAwMEIy
MERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNz
RW50cnkuaCAqLzsgfTsKIAkJMDAzRjFGRUExMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50
VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAw
M0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY0NTcsNiArNjQ1OSw4IEBA
CiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NFMUJC
QTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5s
aW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDAyRUM1NTEzQzNG
NjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDAwMkVDNTYxM0Mz
RjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYTUxUb2tlbml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwMDAyRUM1NzEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW5pemVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTFRva2VuaXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luQWNjZXNz
RW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4OTEwM0NEMURF
MDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDAzRjFGRTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRUeXBlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTI4MTAsNiArMTI4MTQsOCBAQAogCQkJCTAwQjkzMTg1MTNC
QTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCAqLywKIAkJCQkwMEI5
MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oICovLAogCQkJ
CTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5oICovLAorCQkJCTAwMDJFQzU2
MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuY3BwICovLAorCQkJCTAwMDJFQzU3MTND
M0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFy
c2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMjI3LDYgKzIzMjMzLDcgQEAK
IAkJCQlFMTVBMzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwMDJFQzU4MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDAwMkVDNUExM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXpl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRy
ZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzY5MEE4QjkyRUMwMEQ5RDM3QiAv
KiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MERBNUIwRDJBMzFGNzAw
Qjk5MThGIC8qIFhQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDEzLDYgKzI2
MDIwLDcgQEAKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE1QTM2RDkxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzRUEwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNl
cmlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDAwMkVDNTkxM0MzRjY3RDAwMDQwRDQ3
IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OTA1QURCRjEzMDJGM0NF
MDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM2
ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9j
dW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggY2MzMDU0Y2RlMGFkNDIxMmYzOTljNGY1NjkwOWFjNTMxMTFmMmIy
Yi4uMmZhYzI3MTk0YWU5MGZkZTcxNzc1ZmI5Zjk2YzU3M2M5ZGYyMGVhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI2
LDEwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ld1hNTERvY3Vt
ZW50UGFyc2VyLmgiCiAKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBOZXdYTUxEb2N1bWVudFBhcnNlcjo6TmV3WE1MRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3Vt
ZW50KQorICAgICwgbV90b2tlbml6ZXIoWE1MVG9rZW5pemVyOjpjcmVhdGUoKSkKIHsKIH0KIApA
QCAtNDksOCArNTIsMjMgQEAgdm9pZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
TmV3WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKQordm9p
ZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc3Ry
aW5nKQogeworICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dCA9IHN0cmluZzsKKyAgICB3aGlsZSAo
IWlucHV0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4o
aW5wdXQsIG1fdG9rZW4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIG1fdG9rZW4ucHJpbnQoKTsKKyNlbmRpZgorCisgICAgICAgIGlmIChtX3Rva2Vu
LnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpCisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChtX3Rva2VuLmlzVW5p
bml0aWFsaXplZCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmZp
bmlzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3Vt
ZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFy
c2VyLmgKaW5kZXggN2I0M2IyNGYwOGQ0NmNiNjdlY2UzZTE0ODMwZDgzZWU0ZDg2ZDE5NC4uMzU3
NTc1NGRkYTNmOWE0YjUxMjhmZjQ4Y2I0MDY4MDc5MTMzZjEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMjgsNiArMjgsOSBA
QAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tlbi5oIgorI2luY2x1ZGUgIlhN
TFRva2VuaXplci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw2ICs2Nyw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKworICAgIE93blB0cjxYTUxU
b2tlbml6ZXI+IG1fdG9rZW5pemVyOworICAgIFhNTFRva2VuIG1fdG9rZW47CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmggYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKaW5kZXggN2Q0NzM3NmZmYWNkZTRlYjdlZTZj
MGVjODg0MzBkNGYxYjQ2OWZkNS4uYWIxNjViNzI1NzBmNTI4ODM3ZjBjMWE2M2EwZGZlMzNmMzEz
ZWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApAQCAtNTIsOCArNTIsNiBA
QCBwdWJsaWM6CiB9OwogCiBjbGFzcyBYTUxUb2tlbiA6IHB1YmxpYyBNYXJrdXBUb2tlbkJhc2U8
WE1MVG9rZW5UeXBlcz4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTFRva2VuKTsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXIoKQogICAgIHsKQEAgLTMwNCw3ICszMDIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gTkRFQlVH
CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBCYXNlRG9jdHlwZURhdGEgRG9jdHlwZURhdGE7Cisg
ICAgdHlwZWRlZiBEb2N0eXBlRGF0YUJhc2UgRG9jdHlwZURhdGE7CiAKICAgICBjbGFzcyBYTUxE
ZWNsYXJhdGlvbkRhdGEgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxEZWNsYXJh
dGlvbkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tl
bml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNkNTg2YzZjOGMyMGM3NDQwMTFmZmYwZjhmNmYyNGQwODI4NjljNDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAK
QEAgLTAsMCArMSwxMDE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUs
IEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWE1M
VG9rZW5pemVyLmgiCisKKyNpbmNsdWRlICJNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJYTUxDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tlbi5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Vu
dXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBib29sIGlzVmFsaWROYW1lU3Rh
cnQoVUNoYXIgY2MpCit7CisgICAgaWYgKGNjIDw9IDB4NDApCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoY2MgPD0gMHg1QSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNj
ID09IDB4NUYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8PSAweDYwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDw9IDB4N0EpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChjYyA8IDB4QzApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
Y2MgPD0gMHhENikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjID09IDB4RDgpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHhGNikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKGNjID09IDB4RjcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoY2MgPD0gMHgyRkYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4Mzcw
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDw9IDB4MzdEKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPT0gMHgzN0UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoY2MgPD0gMHgxRkZGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2Mg
PCAweDIwMEMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHgyMDBEKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDIwNzApCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHgyMThGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoY2MgPCAweDJDMDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0g
MHgyRkVGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDMwMDEpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHhEN0ZGKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY2MgPCAweEY5MDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoY2MgPD0gMHhGRENGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweEZE
RjApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHhGRkZEKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBzdXBwb3J0IG5vbi1CTVAgcGxhbmVzCisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWROYW1lQ2hhcihVQ2hh
ciBjYykKK3sKKyAgICBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChjYyA9PSAnLScgfHwgY2MgPT0gJy4nKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoY2MgPCAweDMwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNj
IDwgMHgzQikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjIDwgMHgwMzAwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDw9IDB4MDM2RikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKGNjIDwgMHgyMDNGKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGNjIDw9IDB4MjA0MCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRMaXRlcmFsQ2hhcihVQ2hhciBjYykKK3sKKyAg
ICBpZiAoY2MgPT0gMHhEIHx8IGNjID09IDB4QSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKGNjIDwgMHgyMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA9PSAnIicg
fHwgY2MgPT0gJyYnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDwgMHgzQykK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPicpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPCAweDVCKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY2MgPT0gJ18nKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
Y2MgPD0gMHg2MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8IDB4N0IpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CisKKyNkZWZp
bmUgWE1MX0JFR0lOX1NUQVRFKHN0YXRlTmFtZSkgQkVHSU5fU1RBVEUoWE1MVG9rZW5pemVyU3Rh
dGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgWE1MX0FEVkFOQ0VfVE8oc3RhdGVOYW1lKSBBRFZBTkNF
X1RPKFhNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUpCisjZGVmaW5lIFhNTF9TV0lUQ0hfVE8o
c3RhdGVOYW1lKSBTV0lUQ0hfVE8oWE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKKworI2Rl
ZmluZSBFUV9TVEFURShDdXJyZW50U3RhdGUsIE5leHRTdGF0ZSkgXAorICAgIFhNTF9CRUdJTl9T
VEFURShDdXJyZW50U3RhdGUpIHsgICAgICAgXAorICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkgICAgXAorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ3VycmVudFN0YXRl
KTsgXAorICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oTmV4dFN0YXRlKTsgICAgXAorICAgICAgICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGFyc2VFcnJvcigpOyAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsg
XAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVORF9TVEFURSgpCisKKyNk
ZWZpbmUgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhFcXVhbHNTdGF0ZSwgQmVmb3JlVmFsdWVTdGF0
ZSwgVmFsdWVTdGF0ZSkgXAorICAgIEVRX1NUQVRFKEVxdWFsc1N0YXRlLCBCZWZvcmVWYWx1ZVN0
YXRlKSAgICBcCisgICAgWE1MX0JFR0lOX1NUQVRFKEJlZm9yZVZhbHVlU3RhdGUpIHsgICAgICAg
IFwKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpICAgICAgICAgXAorICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlVmFsdWVTdGF0ZSk7ICBcCisgICAgICAgIGVs
c2UgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnKSB7ICAgIFwKKyAgICAgICAgICAgIG1fYWRk
aXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSBjYzsgXAorICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oVmFsdWVTdGF0ZSk7ICAgICAgICBcCisgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsgICAg
ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVORF9T
VEFURSgpCisKK1hNTFRva2VuaXplcjo6WE1MVG9rZW5pemVyKCkKK3sKKyAgICByZXNldCgpOwor
fQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBNYXJrdXBUb2tlbml6ZXJCYXNlPFhNTFRva2Vu
LCBYTUxUb2tlbml6ZXJTdGF0ZT46OnNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFhNTFRva2VuaXplcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBYTUxUb2tlbiYgdG9rZW4pCit7CisgICAgLy8gSWYgd2Ug
aGF2ZSBhIHRva2VuIGluIHByb2dyZXNzLCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxl
ZCBiYWNrCisgICAgLy8gd2l0aCB0aGUgc2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0Lgor
ICAgIEFTU0VSVCghbV90b2tlbiB8fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkg
PT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgbV90b2tlbiA9ICZ0b2tlbjsK
KworICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29y
LnBlZWsoc291cmNlLCBtX2xpbmVOdW1iZXIpKQorICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oKTsKKyAgICBVQ2hhciBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3IubmV4dElucHV0Q2hhcmFjdGVyKCk7CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBY
TUxfQkVHSU5fU1RBVEUoRGF0YVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnJicpCisgICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydFN0YXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBpZiAobV90b2tlbi0+dHlw
ZSgpID09IFhNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgIC8vIFdl
IGhhdmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCisgICAg
ICAgICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
VGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIo
Y2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJl
ZmVyZW5jZVN0YXJ0U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcjJykgeworICAgICAgICAg
ICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7CisgICAgICAgICAgICBWZWN0b3I8
VUNoYXIsIDE2PiBkZWNvZGVkQ2hhcmFjdGVyOworICAgICAgICAgICAgaWYgKGNvbnN1bWVYTUxD
aGFyYWN0ZXJSZWZlcmVuY2Uoc291cmNlLCBkZWNvZGVkQ2hhcmFjdGVyLCBub3RFbm91Z2hDaGFy
YWN0ZXJzKSkgeworICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gZGVjb2RlZENoYXJhY3Rlci5iZWdpbigpOworICAgICAgICAgICAgICAgIGZv
ciAoOyBpdGVyICE9IGRlY29kZWRDaGFyYWN0ZXIuZW5kKCk7ICsraXRlcikKKyAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCppdGVyKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJ
VENIX1RPKERhdGFTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vdEVub3VnaENoYXJh
Y3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpIHsKKyAgICAgICAg
ICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAg
ICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBYTUxUb2tlbml6
ZXJTdGF0ZTo6Q2hhcmFjdGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSk7CisgICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpbkVudGl0eShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbnRpdHlS
ZWZlcmVuY2VTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAg
ICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgWE1MX0JFR0lOX1NUQVRFKEVudGl0eVJlZmVyZW5jZVN0YXRlKSB7CisgICAgICAgIGlm
IChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05h
bWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW50aXR5UmVmZXJlbmNlU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc7JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoVGFnT3BlblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9
PSAnIScpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9wZW5T
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKEVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lU3Rh
cnQoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKGNjKTsKKyAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0
aW9uVGFyZ2V0U3RhcnRTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VF
cnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEVuZFRh
Z09wZW5TdGF0ZSkgeworICAgICAgICBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpIHsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAg
ICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoVGFn
TmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNs
b3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShFbmRU
YWdOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisg
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdTcGFjZVN0YXRlKTsKKyAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3Vy
Y2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChpc1Zh
bGlkTmFtZUNoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2Mp
OworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkK
KworICAgIFhNTF9CRUdJTl9TVEFURShFbmRUYWdTcGFjZVN0YXRlKSB7CisgICAgICAgIGlmIChp
c1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5k
VGFnU3BhY2VTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlTmFtZVN0
YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdT
dGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgeworICAgICAgICAg
ICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdp
bkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmls
ZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxf
QkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1l
KHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPScpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUoc291cmNl
Lm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxp
ZE5hbWVDaGFyKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVO
YW1lKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAg
ICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25z
dW1lZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEVRX1NUQVRFKEFmdGVyQXR0cmli
dXRlTmFtZVN0YXRlLCBCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKQorCisgICAgWE1MX0JFR0lO
X1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5p
emVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRy
aWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdc
JycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51
bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkgKyAxKTsKKyAgICAgICAgICAgIG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIgPSBjYzsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJp
YnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFy
c2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEF0
dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZh
bHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJyYnKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVy
UmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0g
JzwnIHx8IGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
KyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJp
YnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9Cisg
ICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVm
ZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnIycpIHsK
KyAgICAgICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOworICAgICAgICAg
ICAgVmVjdG9yPFVDaGFyLCAxNj4gZGVjb2RlZENoYXJhY3RlcjsKKyAgICAgICAgICAgIHNvdXJj
ZS5wdXNoKGNjKTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lWE1MQ2hhcmFjdGVyUmVmZXJlbmNl
KHNvdXJjZSwgZGVjb2RlZENoYXJhY3Rlciwgbm90RW5vdWdoQ2hhcmFjdGVycykpIHsKKyAgICAg
ICAgICAgICAgICBWZWN0b3I8VUNoYXIsIDE2Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGRlY29k
ZWRDaGFyYWN0ZXIuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBkZWNv
ZGVkQ2hhcmFjdGVyLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoKml0ZXIpOworICAgICAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChub3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKCcmJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJp
YnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKSB7
CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJy8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRh
Z1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpIHsK
KyAgICAgICAgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0U2VsZkNs
b3NpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFy
Z2V0U3RhcnRTdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeG1s
U3RyaW5nLCAoInhtbCAiKSk7CisgICAgICAgIGlmIChjYyA9PSAneCcgfHwgY2MgPT0gJ1gnKSB7
CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBz
b3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHhtbFN0cmluZyk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBh
ZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInhtbCAiKTsKKyAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpblhNTERlY2xhcmF0aW9uKCk7CisgICAgICAgICAgICAg
ICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBYTUxUb2tlblR5
cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gJiYgaXNWYWxpZE5hbWVDaGFyKGNjKSkKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0KGNjKTsK
KyAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpCisgICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbihjYyk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUo
c291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25UYXJnZXRTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxf
QkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZVZlcnNpb25OYW1lU3RhdGUpIHsKKyAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHZlcnNpb25TdHJpbmcsICgidmVyc2lvbiIpKTsKKyAg
ICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291
cmNlLmxvb2tBaGVhZCh2ZXJzaW9uU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
U2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJp
bmdBbmRBU1NFUlQoc291cmNlLCAidmVyc2lvbiIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lU
Q0hfVE8oWE1MRGVjbEFmdGVyVmVyc2lvbk5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAg
IH0KKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgRVFfQkVGT1JFX1ZBTFVFX1NU
QVRFUyhYTUxEZWNsQWZ0ZXJWZXJzaW9uTmFtZVN0YXRlLCBYTUxEZWNsQmVmb3JlVmVyc2lvblZh
bHVlU3RhdGUsIFhNTERlY2xCZWZvcmVWZXJzaW9uT25lUG9pbnRTdGF0ZSkKKworICAgIFhNTF9C
RUdJTl9TVEFURShYTUxEZWNsQmVmb3JlVmVyc2lvbk9uZVBvaW50U3RhdGUpIHsKKyAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG9uZVBvaW50U3RyaW5nLCAoIjEuIikpOworICAg
ICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9v
a0FoZWFkKG9uZVBvaW50U3RyaW5nKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgn
MScpOworICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy4nKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvWE1MVmVyc2lvbignMScpOworICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9YTUxWZXJzaW9uKCcuJyk7CisgICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0
KCpzb3VyY2UpKQorICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oWE1MRGVjbFZlcnNpb25W
YWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IFhNTF9CRUdJTl9TVEFURShYTUxEZWNsVmVyc2lvblZhbHVlUXVvdGVkU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGNjID09IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKFhNTERlY2xBZnRlclZlcnNpb25TdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoaXNBU0NJSURpZ2l0KGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Y
TUxWZXJzaW9uKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xWZXJzaW9u
VmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAg
ICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVj
bEFmdGVyVmVyc2lvblN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2Uo
Y2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZUVuY29kaW5nTmFt
ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oWE1MRGVjbENsb3NlU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFU
RShYTUxEZWNsQmVmb3JlRW5jb2RpbmdOYW1lU3RhdGUpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGVuY29kaW5nU3RyaW5nLCAoImVuY29kaW5nIikpOworICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3RhbmRhbG9uZVN0cmluZywgKCJzdGFuZGFsb25l
IikpOworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVFbmNvZGluZ05hbWVTdGF0ZSk7CisgICAgICAg
IGVsc2UgaWYgKGNjID09ICdlJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29r
QWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChlbmNvZGluZ1N0cmluZyk7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgImVuY29kaW5nIik7
CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0ZXJFbmNvZGluZ05hbWVT
dGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6
Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJl
ZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ3MnKSB7CisgICAg
ICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2Uu
bG9va0FoZWFkKHN0YW5kYWxvbmVTdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBT
ZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmlu
Z0FuZEFTU0VSVChzb3VyY2UsICJzdGFuZGFsb25lIik7CisgICAgICAgICAgICAgICAgWE1MX1NX
SVRDSF9UTyhYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykK
KyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhY
TUxEZWNsQ2xvc2VTdGF0ZSk7CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEVR
X0JFRk9SRV9WQUxVRV9TVEFURVMoWE1MRGVjbEFmdGVyRW5jb2RpbmdOYW1lU3RhdGUsIFhNTERl
Y2xCZWZvcmVFbmNvZGluZ1ZhbHVlU3RhdGUsIFhNTERlY2xFbmNvZGluZ1ZhbHVlU3RhcnRRdW90
ZWRTdGF0ZSkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsRW5jb2RpbmdWYWx1ZVN0YXJ0
UXVvdGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYShjYykpIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luWE1MRW5jb2RpbmcoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oWE1MRGVjbEVuY29kaW5nVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwor
ICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xFbmNv
ZGluZ1ZhbHVlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25hbEFs
bG93ZWRDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xBZnRl
ckVuY29kaW5nU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMo
Y2MpIHx8IGNjID09ICctJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9YTUxFbmNv
ZGluZyhjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsRW5jb2RpbmdWYWx1
ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsQWZ0
ZXJFbmNvZGluZ1N0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2Mp
KQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1l
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhYTUxEZWNsQ2xvc2VTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRF
KFhNTERlY2xCZWZvcmVTdGFuZGFsb25lTmFtZVN0YXRlKSB7CisgICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBzdGFuZGFsb25lU3RyaW5nLCAoInN0YW5kYWxvbmUiKSk7CisgICAg
ICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChjYyA9PSAncycpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVz
dWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoc3RhbmRhbG9uZVN0cmluZyk7CisgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAg
ICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInN0YW5kYWxvbmUiKTsKKyAg
ICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1lU3Rh
dGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpO
b3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRD
aGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykKKyAgICAgICAg
ICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKKyAgICAgICAgcGFyc2VFcnJv
cigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhYTUxEZWNsQWZ0ZXJTdGFu
ZGFsb25lTmFtZVN0YXRlLCBYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZVZhbHVlU3RhdGUsIFhNTERl
Y2xTdGFuZGFsb25lVmFsdWVRdW90ZWRTdGF0ZSkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxE
ZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHllc1N0cmluZywgKCJ5ZXNcIiIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIG5vU3RyaW5nLCAoIm5vXCIiKSk7CisgICAgICAgIGlmIChjYyA9PSAn
eScpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3Vs
dCA9IHNvdXJjZS5sb29rQWhlYWQoeWVzU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VT
dHJpbmdBbmRBU1NFUlQoc291cmNlLCAieWVzXCIiKTsKKyAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRYTUxTdGFuZGFsb25lKHRydWUpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8o
WE1MRGVjbEFmdGVyU3RhbmRhbG9uZVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnbicpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFk
UmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQobm9TdHJpbmcpOworICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAg
ICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJub1wiIik7CisgICAgICAgICAgICAg
ICAgbV90b2tlbi0+c2V0WE1MU3RhbmRhbG9uZShmYWxzZSk7CisgICAgICAgICAgICAgICAgWE1M
X1NXSVRDSF9UTyhYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lU3RhdGUpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQor
ICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAg
ICAgICB9CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFU
RShYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQWZ0ZXJT
dGFuZGFsb25lU3RhdGUpOworICAgICAgICBpZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oWE1MRGVjbENsb3NlU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9T
VEFURShYTUxEZWNsQ2xvc2VTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOworICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgIHJldHVybiBlbWl0RW5k
T2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5f
U1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0U3RhdGUpIHsKKyAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpIHsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbkFmdGVyVGFyZ2V0U3RhdGUpOworICAgICAgICB9IGVsc2UgaWYg
KGlzVmFsaWROYW1lQ2hhcihjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJv
Y2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0KGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RP
KFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxl
KHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9C
RUdJTl9TVEFURShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRhcmdldFN0YXRlKSB7CisgICAg
ICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGNjID09ICc/JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbkNsb3NlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25EYXRhKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0cnVj
dGlvbkRhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IFhNTF9CRUdJTl9TVEFURShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGNjID09ICc/JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbkNsb3NlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25EYXRhKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0cnVj
dGlvbkRhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IFhNTF9CRUdJTl9TVEFURShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DbG9zZVN0YXRlKSB7CisgICAg
ICAgIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGlmIChjYyA9PSBJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBw
YXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwor
ICAgICAgICB9CisgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9u
RGF0YSgnPycpOworICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bkRhdGEoY2MpOworICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25E
YXRhU3RhdGUpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRF
KE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBkYXNoRGFzaFN0cmluZywgKCItLSIpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGRvY3R5cGVTdHJpbmcsICgiZG9jdHlwZSIpKTsKKyAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNkYXRhU3RyaW5nLCAoIltDREFUQVsiKSk7CisgICAg
ICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0Fo
ZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoZGFzaERhc2hTdHJpbmcpOworICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAg
ICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKKyAgICAgICAgICAgICAg
ICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOworICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luQ29tbWVudCgpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oQ29tbWVudFN0
YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnRCcgfHwgY2MgPT0g
J2QnKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1
bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKGRvY3R5cGVTdHJpbmcpOworICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAg
ICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJkb2N0
eXBlIik7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhCZWZvcmVET0NUWVBFTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnWycpIHsKKyAgICAg
ICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5s
b29rQWhlYWQoY2RhdGFTdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50
ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFT
U0VSVChzb3VyY2UsICJbQ0RBVEFbIik7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5D
REFUQSgpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oQ0RBVEFTZWN0aW9uU3RhdGUp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RF
bm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFy
YWN0ZXJUb2tlbigpOworICAgICAgICB9CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAg
cmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKwor
ICAgIFhNTF9CRUdJTl9TVEFURShDb21tZW50U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICct
JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENvbW1lbnREYXNoU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2Vy
KSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVu
ZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENvbW1lbnRT
dGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJ
Tl9TVEFURShDb21tZW50RGFzaFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwor
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKENvbW1lbnRFbmRTdGF0
ZSkgeworICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBp
ZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgICAgIHBhcnNlRXJy
b3IoKTsKKyAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIFhNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1M
X0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9r
ZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVE
T0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRShjYyk7CisgICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNv
dXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJ
Tl9TVEFURShET0NUWVBFTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb05hbWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRU5h
bWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAg
fQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFTmFt
ZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgaWYg
KGNjID09ICc+JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBY
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAg
IH0KKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB1YmxpY1N0cmluZywgKCJw
dWJsaWMiKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzeXN0ZW1TdHJp
bmcsICgic3lzdGVtIikpOworICAgICAgICBpZiAoY2MgPT0gJ1AnIHx8IGNjID09ICdwJykgewor
ICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291
cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJpbmcpOworICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAg
YWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKKyAg
ICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0
ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5v
dEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENo
YXJhY3RlclRva2VuKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1MnIHx8IGNjID09ICdz
JykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0
ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShzeXN0ZW1TdHJpbmcpOworICAgICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAg
ICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJzeXN0ZW0i
KTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdv
cmRTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJp
bmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1snKQorICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5E
X1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3Jk
U3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9T
VEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZp
ZXJTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJykgeworICAgICAgICAg
ICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAg
ICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSBjYzsKKyAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVvdGVkU3RhdGUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVt
aXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgWE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVvdGVkU3RhdGUp
IHsKKyAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCisgICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1
cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKKyAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVvdGVkU3RhdGUpOworICAgICAgICB9
CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NU
WVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJv
cigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9D
VFlQRVN5c3RlbUtleXdvcmRTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNw
YWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShCZWZvcmVET0NU
WVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICciJyB8fCBjYyA9PSAn
XCcnKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0
cmluZygpOworICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IGNjOwor
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJRdW90ZWRT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQor
ICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJRdW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gbV9hZGRpdGlvbmFsQWxsb3dl
ZENoYXJhY3RlcikKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWRMaXRlcmFsQ2hhcihj
YykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShj
YykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdbJykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RP
KEJlZm9yZURPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVH
SU5fU1RBVEUoQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUpIHsKKyAgICAgICAgaWYg
KGNjID09ICddJykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRUludGVy
bmFsU3Vic2V0U3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIGlt
cGxlbWVudCBpbnRlcm5hbCBzdWJzZXQKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVJbnRlcm5h
bFN1YnNldFN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQor
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0
ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3RhdGUpIHsKKyAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNsb3NlU3RyaW5nLCAoIl1dPiIpKTsKKyAgICAgICAg
aWYgKGNjID09ICddJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRS
ZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChjbG9zZVN0cmluZyk7CisgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAg
ICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgIl1dPiIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6
RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2Vn
bWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVy
biBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9CisgICAgICAgIGlmIChj
YyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3Vy
Y2UpOworICAgICAgICB9CisgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ0RBVEEoY2MpOworICAg
ICAgICBYTUxfQURWQU5DRV9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7CisgICAgfQorICAgIEVORF9T
VEFURSgpCisKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2lubGluZSB2b2lkIFhNTFRva2VuaXplcjo6YnVmZmVyQ2hhcmFjdGVyKFVD
aGFyIGNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoY2hhcmFjdGVyICE9IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpOworICAgIG1fdG9rZW4tPmVuc3VyZUlzQ2hhcmFj
dGVyVG9rZW4oKTsKKyAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihjaGFyYWN0ZXIpOwor
fQorCitpbmxpbmUgdm9pZCBYTUxUb2tlbml6ZXI6OnBhcnNlRXJyb3IoKQoreworICAgIG1fZXJy
b3JEdXJpbmdQYXJzaW5nID0gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MVG9rZW5pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMzZDEwODc2MDZiZGFlMDhkNGM3NWQwM2JmZWEw
MDlkZjJlODZhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MVG9rZW5pemVyLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBYTUxUb2tlbml6ZXJfaAorI2RlZmluZSBY
TUxUb2tlbml6ZXJfaAorCisjaW5jbHVkZSAiTWFya3VwVG9rZW5pemVyQmFzZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFhNTFRva2VuOworCitjbGFzcyBYTUxUb2tlbml6ZXJT
dGF0ZSB7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIERhdGFTdGF0ZSwKKyAg
ICAgICAgQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSwKKyAgICAgICAgRW50aXR5UmVmZXJl
bmNlU3RhdGUsCisgICAgICAgIFRhZ09wZW5TdGF0ZSwKKyAgICAgICAgRW5kVGFnT3BlblN0YXRl
LAorICAgICAgICBUYWdOYW1lU3RhdGUsCisgICAgICAgIEVuZFRhZ05hbWVTdGF0ZSwKKyAgICAg
ICAgRW5kVGFnU3BhY2VTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZVZlcnNpb25OYW1lU3Rh
dGUsCisgICAgICAgIFhNTERlY2xBZnRlclZlcnNpb25OYW1lU3RhdGUsCisgICAgICAgIFhNTERl
Y2xCZWZvcmVWZXJzaW9uVmFsdWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZVZlcnNpb25P
bmVQb2ludFN0YXRlLAorICAgICAgICBYTUxEZWNsVmVyc2lvblZhbHVlUXVvdGVkU3RhdGUsCisg
ICAgICAgIFhNTERlY2xBZnRlclZlcnNpb25TdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZUVu
Y29kaW5nTmFtZVN0YXRlLAorICAgICAgICBYTUxEZWNsQWZ0ZXJFbmNvZGluZ05hbWVTdGF0ZSwK
KyAgICAgICAgWE1MRGVjbEJlZm9yZUVuY29kaW5nVmFsdWVTdGF0ZSwKKyAgICAgICAgWE1MRGVj
bEVuY29kaW5nVmFsdWVTdGFydFF1b3RlZFN0YXRlLAorICAgICAgICBYTUxEZWNsRW5jb2RpbmdW
YWx1ZVF1b3RlZFN0YXRlLAorICAgICAgICBYTUxEZWNsQWZ0ZXJFbmNvZGluZ1N0YXRlLAorICAg
ICAgICBYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEFm
dGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVW
YWx1ZVN0YXRlLAorICAgICAgICBYTUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUsCisg
ICAgICAgIFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbENsb3Nl
U3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXJ0U3RhdGUsCisg
ICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXRlLAorICAgICAgICBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb25BZnRlclRhcmdldFN0YXRlLAorICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25EYXRhU3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNsb3NlU3RhdGUs
CisgICAgICAgIE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlLAorICAgICAgICBCZWZvcmVBdHRy
aWJ1dGVOYW1lU3RhdGUsCisgICAgICAgIEF0dHJpYnV0ZU5hbWVTdGF0ZSwKKyAgICAgICAgQWZ0
ZXJBdHRyaWJ1dGVOYW1lU3RhdGUsCisgICAgICAgIEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUs
CisgICAgICAgIEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUsCisgICAgICAgIENoYXJhY3RlclJl
ZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSwKKyAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVWYWx1
ZVF1b3RlZFN0YXRlLAorICAgICAgICBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUsCisgICAgICAg
IENvbW1lbnRTdGF0ZSwKKyAgICAgICAgQ29tbWVudERhc2hTdGF0ZSwKKyAgICAgICAgQ29tbWVu
dEVuZFN0YXRlLAorICAgICAgICBCZWZvcmVET0NUWVBFTmFtZVN0YXRlLAorICAgICAgICBET0NU
WVBFTmFtZVN0YXRlLAorICAgICAgICBBZnRlckRPQ1RZUEVOYW1lU3RhdGUsCisgICAgICAgIEFm
dGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSwKKyAgICAgICAgQmVmb3JlRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJTdGF0ZSwKKyAgICAgICAgRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRT
dGF0ZSwKKyAgICAgICAgQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlLAorICAgICAg
ICBBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUsCisgICAgICAgIEJlZm9yZURPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU3RhdGUsCisgICAgICAgIERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyUXVv
dGVkU3RhdGUsCisgICAgICAgIEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSwKKyAg
ICAgICAgQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUsCisgICAgICAgIEFmdGVyRE9D
VFlQRUludGVybmFsU3Vic2V0U3RhdGUsCisgICAgICAgIENEQVRBU2VjdGlvblN0YXRlLAorICAg
IH07Cit9OworCitjbGFzcyBYTUxUb2tlbml6ZXIgOiBNYXJrdXBUb2tlbml6ZXJCYXNlPFhNTFRv
a2VuLCBYTUxUb2tlbml6ZXJTdGF0ZT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTFRv
a2VuaXplcik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8WE1MVG9rZW5pemVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgWE1MVG9rZW5pemVyKTsgfQorCisgICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUg
aWYgaXQgZW1pdHMgYSB0b2tlbi4gT3RoZXJ3aXNlLCBjYWxsZXJzCisgICAgLy8gbXVzdCBwcm92
aWRlIHRoZSBzYW1lIChpbiBwcm9ncmVzcykgdG9rZW4gb24gdGhlIG5leHQgY2FsbCAodW5sZXNz
CisgICAgLy8gdGhleSBjYWxsIHJlc2V0KCkgZmlyc3QpLgorICAgIGJvb2wgbmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYsIFhNTFRva2VuJik7CisKKyAgICBib29sIGVycm9yRHVyaW5nUGFyc2lu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JEdXJpbmdQYXJzaW5nOyB9CisKK3ByaXZhdGU6Cisg
ICAgWE1MVG9rZW5pemVyKCk7CisKKyAgICBpbmxpbmUgdm9pZCBwYXJzZUVycm9yKCk7CisgICAg
aW5saW5lIHZvaWQgYnVmZmVyQ2hhcmFjdGVyKFVDaGFyKTsKKworICAgIGJvb2wgbV9lcnJvckR1
cmluZ1BhcnNpbmc7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102074</attachid>
            <date>2011-07-26 16:54:54 -0700</date>
            <delta_ts>2011-07-26 19:25:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-64566-20110726165453.patch</filename>
            <type>text/plain</type>
            <size>55531</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0OTU4OTBjMzk0YTk3NjQz
MjM0MzY4MjllZDkxNDFiM2I3NDg4ZWE3Li4xNGRhNDZmMWI5ZTk4OGM1MDBjZjg5ODU3NzRkYTY0
MjdhNWQ5Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMjYgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBOZXcgWE1MIHRva2VuaXplcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCB0b2tlbml6ZXIg
Zm9yIFhNTCBhbmQgdGVzdHMgaW4gTmV3WE1MRG9jdW1lbnRQYXJzZXIgZm9yIHByaW50aW5nIHJl
c3VsdHMgb2YgdG9rZW5pemF0aW9uLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHhtbC9wYXJzZXIvTmV3WE1MRG9jdW1l
bnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV3WE1MRG9jdW1lbnRQYXJzZXI6Ok5l
d1hNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ld1hNTERvY3VtZW50UGFy
c2VyOjphcHBlbmQpOgorICAgICAgICAqIHhtbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIu
aDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTFRva2VuLmg6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxUb2tlbml6ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXpl
cjo6WE1MVG9rZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6c2hvdWxkU2tpcE51bGxDaGFy
YWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6YnVmZmVyQ2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTFRva2VuaXplcjo6cGFyc2VFcnJvcik6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxUb2tlbml6ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmdvdEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKToK
KwogMjAxMS0wNi0wNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggZDU0YjlkM2NhNmMzZmQ2NzRkYTU0ZGJkYTRlZWM5NWZkNDky
YzEyMy4uYTdiYzQyNDk1YmZlODVjZjZkYWNmZjJlMmY5MDJmNTY4MzY5M2FiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zODA4LDE2ICszODA4LDIyIEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCBcCiAJU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
TWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9OZXdYTUxEb2N1bWVudFBhcnNlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlclNjb3BlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlclNjb3BlLmggXAorCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9r
ZW5pemVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaCBc
CisJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS94bWwvRE9NUGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMzk5YmRlNmQwMjRjYjhhYzQzNGJlZjczODYzM2E4MDdiMzM3NzM3NS4uYjc1
MjBmMDk2N2U5YjBjYjM5ZTkyMmM0NDNiZjQ0ZTM0NjI5ODY0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtNjEyMywxNSArNjEyMywyMyBAQAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCcsCisgICAgICAgICAg
ICAneG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmgnLAog
ICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgnLAogICAgICAgICAgICAg
J3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFy
c2VyL01hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCcsCisgICAgICAgICAgICAneG1sL3Bh
cnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAnLAorICAgICAgICAgICAgJ3htbC9wYXJzZXIv
TmV3WE1MRG9jdW1lbnRQYXJzZXIuaCcsCisgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTENo
YXJhY3RlclJlZmVyZW5jZVBhcnNlci5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJRdC5jcHAn
LAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAnLAog
ICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oJywKKyAgICAg
ICAgICAgICd4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAnLAorICAgICAgICAgICAgJ3htbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmgnLAorICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVG9rZW4u
aCcsCiAgICAgICAgICAgICAneG1sL0RPTVBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ3htbC9E
T01QYXJzZXIuaCcsCiAgICAgICAgICAgICAneG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCA3MTdiYTNkOGZlYmE2YTg2NTI3ZWU2NjhlNGFmYzQ4NjUzMTJh
NDE5Li4yZDVjMWY1YjU1NWE1MTk3YzM0NDhlNjEwYTE0MjUzM2RmYmFlZjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtMTE5OSw3ICsxMTk5LDEwIEBAIFNPVVJDRVMgKz0gXAogICAgIHhtbC9YTUxIdHRw
UmVxdWVzdFVwbG9hZC5jcHAgXAogICAgIHhtbC9YTUxFcnJvcnMuY3BwIFwKICAgICB4bWwvWE1M
U2VyaWFsaXplci5jcHAgXAotICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIAor
ICAgIHhtbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKKyAgICB4bWwvcGFyc2Vy
L1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgXAorICAgIHhtbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwIFwKKyAgICB4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAKIAogSEVB
REVSUyArPSBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgg
XApAQCAtMjUwMCwxMCArMjUwMywxNSBAQCBIRUFERVJTICs9IFwKICAgICB3b3JrZXJzL1dvcmtl
clJ1bkxvb3AuaCBcCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBcCiAgICAgd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaCBcCisgICAgeG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXJJbmxpbmVNZXRob2RzLmggXAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgg
XAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIFwKICAgICB4bWwvcGFyc2Vy
L01hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCBcCisgICAgeG1sL3BhcnNlci9OZXdYTUxE
b2N1bWVudFBhcnNlci5oIFwKKyAgICB4bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBh
cnNlci5oIFwKICAgICB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmggXAorICAgIHhtbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmggXAorICAgIHhtbC9wYXJzZXIvWE1MVG9rZW4uaCBcCiAgICAg
eG1sL0RPTVBhcnNlci5oIFwKICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggXAogICAg
IHhtbC9YTUxIdHRwUmVxdWVzdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggMTMyYzdhNjYwNTA3NDQ3ZTI0NWU2N2FkYmQ4ZTIxYmNlYmEy
YzE4Ni4uYTc5ZGFmZDdmMDE5NjNmYTg1Y2NjNDBkZWMzMzYyZTZjZjJmZmQwNyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQyNjczLDYgKzQy
NjczLDEwIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxDaGFyYWN0ZXJSZWZlcmVuY2VJ
bmxpbmVNZXRob2RzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuQmFzZS5oIgogCQkJCQk+CiAJCQkJ
PC9GaWxlPgpAQCAtNDI3NDgsNiArNDI3NTIsMTQgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4
bWxccGFyc2VyXFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcWE1MVG9rZW5pemVy
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
Llx4bWxccGFyc2VyXFhNTFRva2VuLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CiAJCQk8L0ZpbHRl
cj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYWE3OGMyN2JiOWY3OTJlMWFiYjdkNGZm
YmIwM2UwNjUzN2MyMDg1Li5iNTM4NjA5MDIwMGU3Y2JmNzM0OWFlZWE2YjMzMzNkZDM0MGVjOGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00Nyw2ICs0Nyw4IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwog
CQkwMDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5s
aW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklu
bGluZU1ldGhvZHMuaCAqLzsgfTsKIAkJMDAwMkVDNTgxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRv
a2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAy
RUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLzsgfTsKKwkJMDAwMkVDNTkxM0Mz
RjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1NjEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW5pemVyLmNwcCAqLzsgfTsKKwkJMDAwMkVDNUExM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2Vu
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAw
MkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5oICovOyB9OwogCQkwMDE0NjI4
QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFERTAwMEIyMERC
IC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDNDRDFERTAwMEIy
MERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNz
RW50cnkuaCAqLzsgfTsKIAkJMDAzRjFGRUExMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50
VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAw
M0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY0NTcsNiArNjQ1OSw4IEBA
CiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NFMUJC
QTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5s
aW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDAyRUM1NTEzQzNG
NjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gWE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDAwMkVDNTYxM0Mz
RjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBYTUxUb2tlbml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwMDAyRUM1NzEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW5pemVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTFRva2VuaXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luQWNjZXNz
RW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4OTEwM0NEMURF
MDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDAzRjFGRTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRUeXBlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTI4MTAsNiArMTI4MTQsOCBAQAogCQkJCTAwQjkzMTg1MTNC
QTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCAqLywKIAkJCQkwMEI5
MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oICovLAogCQkJ
CTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5oICovLAorCQkJCTAwMDJFQzU2
MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuY3BwICovLAorCQkJCTAwMDJFQzU3MTND
M0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFy
c2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMjI3LDYgKzIzMjMzLDcgQEAK
IAkJCQlFMTVBMzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwMDJFQzU4MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDAwMkVDNUExM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXpl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRy
ZWVWaWV3ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdGQzY5MEE4QjkyRUMwMEQ5RDM3QiAv
KiBYUGF0aEV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MERBNUIwRDJBMzFGNzAw
Qjk5MThGIC8qIFhQYXRoRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDEzLDYgKzI2
MDIwLDcgQEAKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE1QTM2RDkxMTA0NTcyNzAwQjdCNjM5IC8qIFhNTE5TTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRTUzRUEwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNl
cmlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDAwMkVDNTkxM0MzRjY3RDAwMDQwRDQ3
IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OTA1QURCRjEzMDJGM0NF
MDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM2
ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9j
dW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggY2MzMDU0Y2RlMGFkNDIxMmYzOTljNGY1NjkwOWFjNTMxMTFmMmIy
Yi4uMmZhYzI3MTk0YWU5MGZkZTcxNzc1ZmI5Zjk2YzU3M2M5ZGYyMGVhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI2
LDEwICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5ld1hNTERvY3Vt
ZW50UGFyc2VyLmgiCiAKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBOZXdYTUxEb2N1bWVudFBhcnNlcjo6TmV3WE1MRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3Vt
ZW50KQorICAgICwgbV90b2tlbml6ZXIoWE1MVG9rZW5pemVyOjpjcmVhdGUoKSkKIHsKIH0KIApA
QCAtNDksOCArNTIsMjMgQEAgdm9pZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
TmV3WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKQordm9p
ZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc3Ry
aW5nKQogeworICAgIFNlZ21lbnRlZFN0cmluZyBpbnB1dCA9IHN0cmluZzsKKyAgICB3aGlsZSAo
IWlucHV0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4o
aW5wdXQsIG1fdG9rZW4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIG1fdG9rZW4ucHJpbnQoKTsKKyNlbmRpZgorCisgICAgICAgIGlmIChtX3Rva2Vu
LnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGUpCisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChtX3Rva2VuLmlzVW5p
bml0aWFsaXplZCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmZp
bmlzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3Vt
ZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFy
c2VyLmgKaW5kZXggN2I0M2IyNGYwOGQ0NmNiNjdlY2UzZTE0ODMwZDgzZWU0ZDg2ZDE5NC4uMzU3
NTc1NGRkYTNmOWE0YjUxMjhmZjQ4Y2I0MDY4MDc5MTMzZjEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMjgsNiArMjgsOSBA
QAogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tlbi5oIgorI2luY2x1ZGUgIlhN
TFRva2VuaXplci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw2ICs2Nyw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKKworICAgIE93blB0cjxYTUxU
b2tlbml6ZXI+IG1fdG9rZW5pemVyOworICAgIFhNTFRva2VuIG1fdG9rZW47CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmggYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKaW5kZXggN2Q0NzM3NmZmYWNkZTRlYjdlZTZj
MGVjODg0MzBkNGYxYjQ2OWZkNS4uYWIxNjViNzI1NzBmNTI4ODM3ZjBjMWE2M2EwZGZlMzNmMzEz
ZWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApAQCAtNTIsOCArNTIsNiBA
QCBwdWJsaWM6CiB9OwogCiBjbGFzcyBYTUxUb2tlbiA6IHB1YmxpYyBNYXJrdXBUb2tlbkJhc2U8
WE1MVG9rZW5UeXBlcz4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTFRva2VuKTsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXIoKQogICAgIHsKQEAgLTMwNCw3ICszMDIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gTkRFQlVH
CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBCYXNlRG9jdHlwZURhdGEgRG9jdHlwZURhdGE7Cisg
ICAgdHlwZWRlZiBEb2N0eXBlRGF0YUJhc2UgRG9jdHlwZURhdGE7CiAKICAgICBjbGFzcyBYTUxE
ZWNsYXJhdGlvbkRhdGEgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxEZWNsYXJh
dGlvbkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tl
bml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFlOTg1N2IwYTVjZWIyYzYxY2I2OTliNTEzNWZjY2RmNzQ2MzQ3NDcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAK
QEAgLTAsMCArMSwxMDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUs
IEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWE1M
VG9rZW5pemVyLmgiCisKKyNpbmNsdWRlICJNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJYTUxDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXIuaCIKKyNpbmNsdWRlICJYTUxUb2tlbi5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Vu
dXNlZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBib29sIGlzVmFsaWROYW1lU3Rh
cnQoVUNoYXIgY2MpCit7CisgICAgaWYgKGNjIDw9IDB4NDApCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoY2MgPD0gMHg1QSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNj
ID09IDB4NUYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8PSAweDYwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDw9IDB4N0EpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChjYyA8IDB4QzApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
Y2MgPD0gMHhENikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjID09IDB4RDgpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHhGNikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKGNjID09IDB4RjcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoY2MgPD0gMHgyRkYpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjYyA8IDB4Mzcw
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDw9IDB4MzdEKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPT0gMHgzN0UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoY2MgPD0gMHgxRkZGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2Mg
PCAweDIwMEMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHgyMDBEKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDIwNzApCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHgyMThGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoY2MgPCAweDJDMDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0g
MHgyRkVGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweDMwMDEpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHhEN0ZGKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY2MgPCAweEY5MDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoY2MgPD0gMHhGRENGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY2MgPCAweEZE
RjApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPD0gMHhGRkZEKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBzdXBwb3J0IG5vbi1CTVAgcGxhbmVzCisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWROYW1lQ2hhcihVQ2hh
ciBjYykKK3sKKyAgICBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChjYyA9PSAnLScgfHwgY2MgPT0gJy4nKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoY2MgPCAweDMwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNj
IDwgMHgzQikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjIDwgMHgwMzAwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDw9IDB4MDM2RikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgaWYgKGNjIDwgMHgyMDNGKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGNjIDw9IDB4MjA0MCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2lubGluZSBib29sIGlzVmFsaWRMaXRlcmFsQ2hhcihVQ2hhciBjYykKK3sKKyAg
ICBpZiAoY2MgPT0gMHhEIHx8IGNjID09IDB4QSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKGNjIDwgMHgyMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA9PSAnIicg
fHwgY2MgPT0gJyYnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNjIDwgMHgzQykK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPicpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2MgPCAweDVCKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY2MgPT0gJ18nKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
Y2MgPD0gMHg2MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYyA8IDB4N0IpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CisKKyNkZWZp
bmUgWE1MX0JFR0lOX1NUQVRFKHN0YXRlTmFtZSkgQkVHSU5fU1RBVEUoWE1MVG9rZW5pemVyU3Rh
dGUsIHN0YXRlTmFtZSkKKyNkZWZpbmUgWE1MX0FEVkFOQ0VfVE8oc3RhdGVOYW1lKSBBRFZBTkNF
X1RPKFhNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUpCisjZGVmaW5lIFhNTF9TV0lUQ0hfVE8o
c3RhdGVOYW1lKSBTV0lUQ0hfVE8oWE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKKworI2Rl
ZmluZSBFUV9TVEFURShDdXJyZW50U3RhdGUsIE5leHRTdGF0ZSkgXAorICAgIFhNTF9CRUdJTl9T
VEFURShDdXJyZW50U3RhdGUpIHsgICAgICAgXAorICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkgICAgXAorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ3VycmVudFN0YXRl
KTsgXAorICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oTmV4dFN0YXRlKTsgICAgXAorICAgICAgICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGFyc2VFcnJvcigpOyAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsg
XAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVORF9TVEFURSgpCisKKyNk
ZWZpbmUgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhFcXVhbHNTdGF0ZSwgQmVmb3JlVmFsdWVTdGF0
ZSwgVmFsdWVTdGF0ZSkgXAorICAgIEVRX1NUQVRFKEVxdWFsc1N0YXRlLCBCZWZvcmVWYWx1ZVN0
YXRlKSAgICBcCisgICAgWE1MX0JFR0lOX1NUQVRFKEJlZm9yZVZhbHVlU3RhdGUpIHsgICAgICAg
IFwKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpICAgICAgICAgXAorICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlVmFsdWVTdGF0ZSk7ICBcCisgICAgICAgIGVs
c2UgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnKSB7ICAgIFwKKyAgICAgICAgICAgIG1fYWRk
aXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSBjYzsgXAorICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oVmFsdWVTdGF0ZSk7ICAgICAgICBcCisgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsgICAg
ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVORF9T
VEFURSgpCisKK1hNTFRva2VuaXplcjo6WE1MVG9rZW5pemVyKCkKK3sKKyAgICByZXNldCgpOwor
fQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBNYXJrdXBUb2tlbml6ZXJCYXNlPFhNTFRva2Vu
LCBYTUxUb2tlbml6ZXJTdGF0ZT46OnNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFhNTFRva2VuaXplcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBYTUxUb2tlbiYgdG9rZW4pCit7CisgICAgLy8gSWYgd2Ug
aGF2ZSBhIHRva2VuIGluIHByb2dyZXNzLCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxl
ZCBiYWNrCisgICAgLy8gd2l0aCB0aGUgc2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0Lgor
ICAgIEFTU0VSVCghbV90b2tlbiB8fCBtX3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkg
PT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgbV90b2tlbiA9ICZ0b2tlbjsK
KworICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29y
LnBlZWsoc291cmNlLCBtX2xpbmVOdW1iZXIpKQorICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVk
Q2hhcmFjdGVyVG9rZW4oKTsKKyAgICBVQ2hhciBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3IubmV4dElucHV0Q2hhcmFjdGVyKCk7CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBY
TUxfQkVHSU5fU1RBVEUoRGF0YVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnJicpCisgICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydFN0YXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBpZiAobV90b2tlbi0+dHlw
ZSgpID09IFhNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgIC8vIFdl
IGhhdmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCisgICAg
ICAgICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
VGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXBy
b2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIo
Y2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJl
ZmVyZW5jZVN0YXJ0U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcjJykgeworICAgICAgICAg
ICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7CisgICAgICAgICAgICBWZWN0b3I8
VUNoYXIsIDE2PiBkZWNvZGVkQ2hhcmFjdGVyOworICAgICAgICAgICAgaWYgKGNvbnN1bWVYTUxD
aGFyYWN0ZXJSZWZlcmVuY2Uoc291cmNlLCBkZWNvZGVkQ2hhcmFjdGVyLCBub3RFbm91Z2hDaGFy
YWN0ZXJzKSkgeworICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hhciwgMTY+Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gZGVjb2RlZENoYXJhY3Rlci5iZWdpbigpOworICAgICAgICAgICAgICAgIGZv
ciAoOyBpdGVyICE9IGRlY29kZWRDaGFyYWN0ZXIuZW5kKCk7ICsraXRlcikKKyAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKCppdGVyKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJ
VENIX1RPKERhdGFTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vdEVub3VnaENoYXJh
Y3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpIHsKKyAgICAgICAg
ICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKQorICAg
ICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBYTUxUb2tlbml6
ZXJTdGF0ZTo6Q2hhcmFjdGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSk7CisgICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpbkVudGl0eShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbnRpdHlS
ZWZlcmVuY2VTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAg
ICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgWE1MX0JFR0lOX1NUQVRFKEVudGl0eVJlZmVyZW5jZVN0YXRlKSB7CisgICAgICAgIGlm
IChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05h
bWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW50aXR5UmVmZXJlbmNlU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc7JykKKyAgICAgICAgICAgIHJldHVybiBlbWl0
QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoVGFnT3BlblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9
PSAnIScpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9wZW5T
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKEVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lU3Rh
cnQoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKGNjKTsKKyAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0
aW9uVGFyZ2V0U3RhcnRTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VF
cnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEVuZFRh
Z09wZW5TdGF0ZSkgeworICAgICAgICBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpIHsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAg
ICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoVGFn
TmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNs
b3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShFbmRU
YWdOYW1lU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisg
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdTcGFjZVN0YXRlKTsKKyAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3Vy
Y2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChpc1Zh
bGlkTmFtZUNoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2Mp
OworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkK
KworICAgIFhNTF9CRUdJTl9TVEFURShFbmRUYWdTcGFjZVN0YXRlKSB7CisgICAgICAgIGlmIChp
c1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5k
VGFnU3BhY2VTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlTmFtZVN0
YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdT
dGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgeworICAgICAgICAg
ICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdp
bkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmls
ZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxf
QkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXpl
cldoaXRlc3BhY2UoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1l
KHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPScpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5hbWUoc291cmNl
Lm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWYWxp
ZE5hbWVDaGFyKGNjKSkgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVO
YW1lKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAg
ICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25z
dW1lZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEVRX1NUQVRFKEFmdGVyQXR0cmli
dXRlTmFtZVN0YXRlLCBCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKQorCisgICAgWE1MX0JFR0lO
X1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5p
emVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRy
aWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdc
JycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51
bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkgKyAxKTsKKyAgICAgICAgICAgIG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIgPSBjYzsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJp
YnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFy
c2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEF0
dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZh
bHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJyYnKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVy
UmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0g
JzwnIHx8IGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
KyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJp
YnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9Cisg
ICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVm
ZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnIycpIHsK
KyAgICAgICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOworICAgICAgICAg
ICAgVmVjdG9yPFVDaGFyLCAxNj4gZGVjb2RlZENoYXJhY3RlcjsKKyAgICAgICAgICAgIHNvdXJj
ZS5wdXNoKGNjKTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lWE1MQ2hhcmFjdGVyUmVmZXJlbmNl
KHNvdXJjZSwgZGVjb2RlZENoYXJhY3Rlciwgbm90RW5vdWdoQ2hhcmFjdGVycykpIHsKKyAgICAg
ICAgICAgICAgICBWZWN0b3I8VUNoYXIsIDE2Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGRlY29k
ZWRDaGFyYWN0ZXIuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBkZWNv
ZGVkQ2hhcmFjdGVyLmVuZCgpOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoKml0ZXIpOworICAgICAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChub3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKCcmJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJp
YnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKSB7
CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJy8nKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRh
Z1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpIHsK
KyAgICAgICAgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0U2VsZkNs
b3NpbmcoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFy
Z2V0U3RhcnRTdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeG1s
U3RyaW5nLCAoInhtbCIpKTsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgcHJvYmFibHkgc2hvdWxk
bid0IGJlIGNhc2UtaW5zZW5zaXRpdmUsIGJ1dCBJIGRvbid0IGtub3cgaWYgcGVvcGxlIHRyeSBj
YXBpdGFsaXppbmcgaXQgZXZlci4KKyAgICAgICAgaWYgKGNjID09ICd4JyB8fCBjYyA9PSAnWCcp
IHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9
IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoeG1sU3RyaW5nKTsKKyAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAg
IGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAieG1sIik7CisgICAg
ICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0ZXJYTUxTdGF0ZSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBYTUxUb2tlblR5
cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gJiYgaXNWYWxpZE5hbWVDaGFyKGNjKSkKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0KGNjKTsK
KyAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpCisgICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbihjYyk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUo
c291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25UYXJnZXRTdGF0ZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxf
QkVHSU5fU1RBVEUoWE1MRGVjbEFmdGVyWE1MU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5p
emVyV2hpdGVzcGFjZShjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luWE1MRGVjbGFy
YXRpb24oKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVWZXJzaW9u
TmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbigneCcpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQoJ20n
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFy
Z2V0KCdsJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVj
dGlvblRhcmdldChjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25UYXJnZXRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3Vy
Y2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5f
U1RBVEUoWE1MRGVjbEJlZm9yZVZlcnNpb25OYW1lU3RhdGUpIHsKKyAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHZlcnNpb25TdHJpbmcsICgidmVyc2lvbiIpKTsKKyAgICAgICAg
aWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxv
b2tBaGVhZCh2ZXJzaW9uU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRB
U1NFUlQoc291cmNlLCAidmVyc2lvbiIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8o
WE1MRGVjbEFmdGVyVmVyc2lvbk5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2Up
OworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhY
TUxEZWNsQWZ0ZXJWZXJzaW9uTmFtZVN0YXRlLCBYTUxEZWNsQmVmb3JlVmVyc2lvblZhbHVlU3Rh
dGUsIFhNTERlY2xCZWZvcmVWZXJzaW9uT25lUG9pbnRTdGF0ZSkKKworICAgIFhNTF9CRUdJTl9T
VEFURShYTUxEZWNsQmVmb3JlVmVyc2lvbk9uZVBvaW50U3RhdGUpIHsKKyAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIG9uZVBvaW50U3RyaW5nLCAoIjEuIikpOworICAgICAgICBT
ZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFk
KG9uZVBvaW50U3RyaW5nKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6
OkRpZE1hdGNoKSB7CisgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnMScpOwor
ICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy4nKTsKKyAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvWE1MVmVyc2lvbignMScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9YTUxWZXJzaW9uKCcuJyk7CisgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xW
ZXJzaW9uVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNl
Z21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgIHJldHVybiBo
YXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICBwYXJzZUVycm9yKCk7CisgICAg
ICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbFZlcnNpb25WYWx1ZVF1b3RlZFN0YXRlKSB7
CisgICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKSB7CisgICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQWZ0ZXJWZXJzaW9uU3RhdGUpOworICAgICAg
ICB9IGVsc2UgaWYgKGlzQVNDSUlEaWdpdChjYykpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvWE1MVmVyc2lvbihjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNs
VmVyc2lvblZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRF
KFhNTERlY2xBZnRlclZlcnNpb25TdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVFbmNv
ZGluZ05hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc/JykKKyAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVH
SU5fU1RBVEUoWE1MRGVjbEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlKSB7CisgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBlbmNvZGluZ1N0cmluZywgKCJlbmNvZGluZyIpKTsKKyAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0YW5kYWxvbmVTdHJpbmcsICgic3Rh
bmRhbG9uZSIpKTsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCisgICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQmVmb3JlRW5jb2RpbmdOYW1lU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnZScpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmlu
Zzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoZW5jb2RpbmdTdHJp
bmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNo
KSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJlbmNv
ZGluZyIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oWE1MRGVjbEFmdGVyRW5jb2Rp
bmdOYW1lU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZl
QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdzJykg
eworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0g
c291cmNlLmxvb2tBaGVhZChzdGFuZGFsb25lU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFu
Y2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAic3RhbmRhbG9uZSIpOworICAgICAgICAgICAgICAg
IFhNTF9TV0lUQ0hfVE8oWE1MRGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSk7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oWE1MRGVjbENsb3NlU3RhdGUpOworICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisK
KyAgICBFUV9CRUZPUkVfVkFMVUVfU1RBVEVTKFhNTERlY2xBZnRlckVuY29kaW5nTmFtZVN0YXRl
LCBYTUxEZWNsQmVmb3JlRW5jb2RpbmdWYWx1ZVN0YXRlLCBYTUxEZWNsRW5jb2RpbmdWYWx1ZVN0
YXJ0UXVvdGVkU3RhdGUpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEVuY29kaW5nVmFs
dWVTdGFydFF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoY2MpKSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpblhNTEVuY29kaW5nKGNjKTsKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKFhNTERlY2xFbmNvZGluZ1ZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICB9
CisgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShYTUxE
ZWNsRW5jb2RpbmdWYWx1ZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSBtX2FkZGl0
aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxE
ZWNsQWZ0ZXJFbmNvZGluZ1N0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJQWxwaGFu
dW1lcmljKGNjKSB8fCBjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
WE1MRW5jb2RpbmcoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEVuY29k
aW5nVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAg
ICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoWE1M
RGVjbEFmdGVyRW5jb2RpbmdTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNw
YWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVTdGFuZGFs
b25lTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz8nKQorICAgICAgICAgICAg
WE1MX0FEVkFOQ0VfVE8oWE1MRGVjbENsb3NlU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNv
dXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJ
Tl9TVEFURShYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSkgeworICAgICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3RhbmRhbG9uZVN0cmluZywgKCJzdGFuZGFsb25lIikp
OworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVTdGFuZGFsb25lTmFtZVN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJ3MnKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tB
aGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKHN0YW5kYWxvbmVTdHJpbmcpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Cisg
ICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJzdGFuZGFsb25l
Iik7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0ZXJTdGFuZGFsb25l
TmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0
cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1
ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPycpCisg
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQ2xvc2VTdGF0ZSk7CisgICAgICAgIHBh
cnNlRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICB9
CisgICAgRU5EX1NUQVRFKCkKKworICAgIEVRX0JFRk9SRV9WQUxVRV9TVEFURVMoWE1MRGVjbEFm
dGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSwgWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVWYWx1ZVN0YXRl
LCBYTUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUpCisKKyAgICBYTUxfQkVHSU5fU1RB
VEUoWE1MRGVjbFN0YW5kYWxvbmVWYWx1ZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCB5ZXNTdHJpbmcsICgieWVzXCIiKSk7CisgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBub1N0cmluZywgKCJub1wiIikpOworICAgICAgICBpZiAo
Y2MgPT0gJ3knKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3Vs
dCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKHllc1N0cmluZyk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBh
ZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInllc1wiIik7CisgICAgICAgICAgICAgICAg
bV90b2tlbi0+c2V0WE1MU3RhbmRhbG9uZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJ
VENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJ24nKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxv
b2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKG5vU3RyaW5nKTsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAg
ICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAibm9cIiIpOworICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFhNTFN0YW5kYWxvbmUoZmFsc2UpOworICAgICAgICAgICAg
ICAgIFhNTF9TV0lUQ0hfVE8oWE1MRGVjbEFmdGVyU3RhbmRhbG9uZVN0YXRlKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFj
dGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KTsKKyAgICAgICAgfQorICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgIHJldHVybiBlbWl0
RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVH
SU5fU1RBVEUoWE1MRGVjbEFmdGVyU3RhbmRhbG9uZVN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rv
a2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVj
bEFmdGVyU3RhbmRhbG9uZVN0YXRlKTsKKyAgICAgICAgaWYgKGNjID09ICc/JykKKyAgICAgICAg
ICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmls
ZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxf
QkVHSU5fU1RBVEUoWE1MRGVjbENsb3NlU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc+JykK
KyAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJT
dGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1M
X0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXRlKSB7CisgICAgICAg
IGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7CisgICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRhcmdldFN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldChjYyk7CisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVu
ZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAg
ICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSkg
eworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkFmdGVyVGFyZ2V0U3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25DbG9zZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFy
c2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0lu
c3RydWN0aW9uRGF0YShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25EYXRhU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0YXRlKSB7
CisgICAgICAgIGlmIChjYyA9PSAnPycpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25DbG9zZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFy
c2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0lu
c3RydWN0aW9uRGF0YShjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25EYXRhU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgp
CisKKyAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2xvc2VTdGF0ZSkg
eworICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1
bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOworICAgICAgICBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKKyAgICAgICAgfQorICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbkRhdGEoJz8nKTsKKyAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25EYXRhKGNjKTsKKyAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uRGF0YVN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJ
Tl9TVEFURShNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSkgeworICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgZGFzaERhc2hTdHJpbmcsICgiLS0iKSk7CisgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoImRvY3R5cGUiKSk7CisgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjZGF0YVN0cmluZywgKCJbQ0RBVEFbIikp
OworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6
Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGRhc2hEYXNoU3RyaW5n
KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkg
eworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7CisgICAgICAg
ICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKKyAgICAgICAgICAgICAgICBt
X3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKENv
bW1lbnRTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVC
dWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8
IGNjID09ICdkJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1
bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShkb2N0eXBlU3RyaW5nKTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewor
ICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNl
LCAiZG9jdHlwZSIpOworICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oQmVmb3JlRE9DVFlQ
RU5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVC
dWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1snKSB7
CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBz
b3VyY2UubG9va0FoZWFkKGNkYXRhU3RyaW5nKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
U2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJp
bmdBbmRBU1NFUlQoc291cmNlLCAiW0NEQVRBWyIpOworICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luQ0RBVEEoKTsKKyAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKENEQVRBU2VjdGlv
blN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfQorICAgICAgICBwYXJzZUVycm9yKCk7Cisg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgfQorICAgIEVORF9TVEFU
RSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQ29tbWVudFN0YXRlKSB7CisgICAgICAgIGlmIChj
YyA9PSAnLScpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDb21tZW50RGFzaFN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhD
b21tZW50U3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBY
TUxfQkVHSU5fU1RBVEUoQ29tbWVudERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0n
KQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikg
eworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRP
ZkZpbGUoc291cmNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShDb21tZW50
RW5kU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAg
ICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBw
YXJzZUVycm9yKCk7CisgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBY
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKwor
ICAgIFhNTF9CRUdJTl9TVEFURShCZWZvcmVET0NUWVBFTmFtZVN0YXRlKSB7CisgICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
QmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lU3Rh
cnQoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2MpOworICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9m
RmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBY
TUxfQkVHSU5fU1RBVEUoRE9DVFlQRU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6
ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQ
RU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRl
KTsKKyAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVDaGFyKGNjKSkgeworICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKERP
Q1RZUEVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJv
cigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9D
VFlQRU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkK
KyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAg
ICAgIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNv
dXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgIGlmIChjYyA9PSBJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgICAgICBw
YXJzZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwor
ICAgICAgICB9CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwdWJsaWNTdHJp
bmcsICgicHVibGljIikpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lz
dGVtU3RyaW5nLCAoInN5c3RlbSIpKTsKKyAgICAgICAgaWYgKGNjID09ICdQJyB8fCBjYyA9PSAn
cCcpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3Vs
dCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UocHVibGljU3RyaW5nKTsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAg
ICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAicHVibGlj
Iik7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhBZnRlckRPQ1RZUEVQdWJsaWNLZXl3
b3JkU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdTJyB8fCBj
YyA9PSAncycpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0
IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAg
ICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAi
c3lzdGVtIik7CisgICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhBZnRlckRPQ1RZUEVTeXN0
ZW1LZXl3b3JkU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgIHJldHVybiBo
YXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdb
JykKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVJbnRlcm5hbFN1YnNl
dFN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9CisgICAgfQor
ICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGlj
S2V5d29yZFN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQor
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJT
dGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykp
CisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Cisg
ICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gY2M7CisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllclF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShET0NUWVBFUHVibGljSWRlbnRpZmllclF1b3Rl
ZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
KQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6
OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihjYyk7CisgICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllclF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKEFm
dGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6
ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIFhNTF9CRUdJTl9TVEFURShB
ZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpIHsKKyAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjYykpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBF
U3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAg
ICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQmVm
b3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6
ZXJXaGl0ZXNwYWNlKGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicgfHwg
Y2MgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIg
PSBjYzsKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
UXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigp
OworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyUXVvdGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTGl0ZXJh
bENoYXIoY2MpKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50aWZp
ZXIoY2MpOworICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9
CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NU
WVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7CisgICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQorICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVt
SWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAg
ICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnWycpCisgICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhCZWZvcmVET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRP
ZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAg
WE1MX0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKSB7CisgICAg
ICAgIGlmIChjYyA9PSAnXScpCisgICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZ
UEVJbnRlcm5hbFN1YnNldFN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBG
SVhNRSBpbXBsZW1lbnQgaW50ZXJuYWwgc3Vic2V0CisgICAgICAgICAgICBwYXJzZUVycm9yKCk7
CisgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOworICAgICAgICB9Cisg
ICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBF
SW50ZXJuYWxTdWJzZXRTdGF0ZSkgeworICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNl
KGNjKSkKKyAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRUludGVybmFsU3Vi
c2V0U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAg
cmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRf
U1RBVEUoKQorCisgICAgWE1MX0JFR0lOX1NUQVRFKENEQVRBU2VjdGlvblN0YXRlKSB7CisgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjbG9zZVN0cmluZywgKCJdXT4iKSk7Cisg
ICAgICAgIGlmIChjYyA9PSAnXScpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9v
a0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoY2xvc2VTdHJpbmcpOworICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAg
ICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJdXT4iKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewor
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NEQVRBKGNj
KTsKKyAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAgIH0KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgdm9pZCBYTUxUb2tlbml6ZXI6OmJ1ZmZlckNoYXJh
Y3RlcihVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgQVNTRVJUKGNoYXJhY3RlciAhPSBJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKTsKKyAgICBtX3Rva2VuLT5lbnN1cmVJ
c0NoYXJhY3RlclRva2VuKCk7CisgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIoY2hhcmFj
dGVyKTsKK30KKworaW5saW5lIHZvaWQgWE1MVG9rZW5pemVyOjpwYXJzZUVycm9yKCkKK3sKKyAg
ICBtX2Vycm9yRHVyaW5nUGFyc2luZyA9IHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTFRva2VuaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjZjg4M2IyN2QyNGNmYzQ4MTNlNmM1
NGU4NTJmY2U0NzVhYTYxOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTFRva2VuaXplci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgWE1MVG9rZW5pemVyX2gKKyNk
ZWZpbmUgWE1MVG9rZW5pemVyX2gKKworI2luY2x1ZGUgIk1hcmt1cFRva2VuaXplckJhc2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBYTUxUb2tlbjsKKworY2xhc3MgWE1MVG9r
ZW5pemVyU3RhdGUgeworcHVibGljOgorICAgIGVudW0gU3RhdGUgeworICAgICAgICBEYXRhU3Rh
dGUsCisgICAgICAgIENoYXJhY3RlclJlZmVyZW5jZVN0YXJ0U3RhdGUsCisgICAgICAgIEVudGl0
eVJlZmVyZW5jZVN0YXRlLAorICAgICAgICBUYWdPcGVuU3RhdGUsCisgICAgICAgIEVuZFRhZ09w
ZW5TdGF0ZSwKKyAgICAgICAgVGFnTmFtZVN0YXRlLAorICAgICAgICBFbmRUYWdOYW1lU3RhdGUs
CisgICAgICAgIEVuZFRhZ1NwYWNlU3RhdGUsCisgICAgICAgIFhNTERlY2xBZnRlclhNTFN0YXRl
LAorICAgICAgICBYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVj
bEFmdGVyVmVyc2lvbk5hbWVTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEJlZm9yZVZlcnNpb25WYWx1
ZVN0YXRlLAorICAgICAgICBYTUxEZWNsQmVmb3JlVmVyc2lvbk9uZVBvaW50U3RhdGUsCisgICAg
ICAgIFhNTERlY2xWZXJzaW9uVmFsdWVRdW90ZWRTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEFmdGVy
VmVyc2lvblN0YXRlLAorICAgICAgICBYTUxEZWNsQmVmb3JlRW5jb2RpbmdOYW1lU3RhdGUsCisg
ICAgICAgIFhNTERlY2xBZnRlckVuY29kaW5nTmFtZVN0YXRlLAorICAgICAgICBYTUxEZWNsQmVm
b3JlRW5jb2RpbmdWYWx1ZVN0YXRlLAorICAgICAgICBYTUxEZWNsRW5jb2RpbmdWYWx1ZVN0YXJ0
UXVvdGVkU3RhdGUsCisgICAgICAgIFhNTERlY2xFbmNvZGluZ1ZhbHVlUXVvdGVkU3RhdGUsCisg
ICAgICAgIFhNTERlY2xBZnRlckVuY29kaW5nU3RhdGUsCisgICAgICAgIFhNTERlY2xCZWZvcmVT
dGFuZGFsb25lTmFtZVN0YXRlLAorICAgICAgICBYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lTmFtZVN0
YXRlLAorICAgICAgICBYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZVZhbHVlU3RhdGUsCisgICAgICAg
IFhNTERlY2xTdGFuZGFsb25lVmFsdWVRdW90ZWRTdGF0ZSwKKyAgICAgICAgWE1MRGVjbEFmdGVy
U3RhbmRhbG9uZVN0YXRlLAorICAgICAgICBYTUxEZWNsQ2xvc2VTdGF0ZSwKKyAgICAgICAgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0U3RhcnRTdGF0ZSwKKyAgICAgICAgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uVGFyZ2V0U3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbkFmdGVy
VGFyZ2V0U3RhdGUsCisgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGFTdGF0ZSwKKyAg
ICAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2xvc2VTdGF0ZSwKKyAgICAgICAgTWFya3VwRGVj
bGFyYXRpb25PcGVuU3RhdGUsCisgICAgICAgIEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSwKKyAg
ICAgICAgQXR0cmlidXRlTmFtZVN0YXRlLAorICAgICAgICBBZnRlckF0dHJpYnV0ZU5hbWVTdGF0
ZSwKKyAgICAgICAgQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSwKKyAgICAgICAgQXR0cmlidXRl
VmFsdWVRdW90ZWRTdGF0ZSwKKyAgICAgICAgQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVW
YWx1ZVN0YXRlLAorICAgICAgICBBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUsCisgICAg
ICAgIFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSwKKyAgICAgICAgQ29tbWVudFN0YXRlLAorICAg
ICAgICBDb21tZW50RGFzaFN0YXRlLAorICAgICAgICBDb21tZW50RW5kU3RhdGUsCisgICAgICAg
IEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUsCisgICAgICAgIERPQ1RZUEVOYW1lU3RhdGUsCisgICAg
ICAgIEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSwKKyAgICAgICAgQWZ0ZXJET0NUWVBFUHVibGljS2V5
d29yZFN0YXRlLAorICAgICAgICBCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlLAor
ICAgICAgICBET0NUWVBFUHVibGljSWRlbnRpZmllclF1b3RlZFN0YXRlLAorICAgICAgICBBZnRl
ckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUsCisgICAgICAgIEFmdGVyRE9DVFlQRVN5c3Rl
bUtleXdvcmRTdGF0ZSwKKyAgICAgICAgQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0
ZSwKKyAgICAgICAgRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJRdW90ZWRTdGF0ZSwKKyAgICAgICAg
QWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlLAorICAgICAgICBCZWZvcmVET0NUWVBF
SW50ZXJuYWxTdWJzZXRTdGF0ZSwKKyAgICAgICAgQWZ0ZXJET0NUWVBFSW50ZXJuYWxTdWJzZXRT
dGF0ZSwKKyAgICAgICAgQ0RBVEFTZWN0aW9uU3RhdGUsCisgICAgfTsKK307CisKK2NsYXNzIFhN
TFRva2VuaXplciA6IE1hcmt1cFRva2VuaXplckJhc2U8WE1MVG9rZW4sIFhNTFRva2VuaXplclN0
YXRlPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWE1MVG9rZW5pemVyKTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxYTUxU
b2tlbml6ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBYTUxUb2tlbml6ZXIpOyB9
CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiBpdCBlbWl0cyBhIHRva2Vu
LiBPdGhlcndpc2UsIGNhbGxlcnMKKyAgICAvLyBtdXN0IHByb3ZpZGUgdGhlIHNhbWUgKGluIHBy
b2dyZXNzKSB0b2tlbiBvbiB0aGUgbmV4dCBjYWxsICh1bmxlc3MKKyAgICAvLyB0aGV5IGNhbGwg
cmVzZXQoKSBmaXJzdCkuCisgICAgYm9vbCBuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiwgWE1M
VG9rZW4mKTsKKworICAgIGJvb2wgZXJyb3JEdXJpbmdQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvckR1cmluZ1BhcnNpbmc7IH0KKworcHJpdmF0ZToKKyAgICBYTUxUb2tlbml6ZXIoKTsK
KworICAgIGlubGluZSB2b2lkIHBhcnNlRXJyb3IoKTsKKyAgICBpbmxpbmUgdm9pZCBidWZmZXJD
aGFyYWN0ZXIoVUNoYXIpOworCisgICAgYm9vbCBtX2Vycm9yRHVyaW5nUGFyc2luZzsKK307CisK
K30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>