<?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>42324</bug_id>
          
          <creation_ts>2010-07-14 20:50:40 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs testRunner.dumpDOMAsWebArchive</short_desc>
          <delta_ts>2013-05-08 05:02:58 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>115745</dependson>
    
    <dependson>115795</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>philn</cc>
    
    <cc>thorton</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251626</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:50:40 -0700</bug_when>
    <thetext>WebKitTestRunner needs layoutTestController.dumpDOMAsWebArchive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251643</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:58:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/8193633&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885542</commentid>
    <comment_count>2</comment_count>
      <attachid>200863</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-05-06 18:33:51 -0700</bug_when>
    <thetext>Created attachment 200863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885543</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 18:35:00 -0700</bug_when>
    <thetext>Attachment 200863 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/TestRunner.h&apos;, u&apos;Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj&apos;, u&apos;Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp&apos;, u&apos;Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.h&apos;, u&apos;Tools/WebKitTestRunner/mac/WebArchiveDumpSupportMac.mm&apos;]&quot; exit_code: 1
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:35:  The parameter name &quot;response&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:36:  The parameter name &quot;response&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:37:  The parameter name &quot;response&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:38:  The parameter name &quot;response&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:39:  The parameter name &quot;response&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:152:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:230:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 8 in 9 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>885544</commentid>
    <comment_count>4</comment_count>
      <attachid>200863</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-06 18:41:03 -0700</bug_when>
    <thetext>Comment on attachment 200863
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:843
&gt; +    // create web archive data from the frame

Comments should start with capital letters and end with punctuation.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:849
&gt; +    CFDataRef cfData = CFDataCreate(0, bytes, length);

I find it vaguely surprising we don&apos;t have a better way to make a CF/NSData from a WKData, but perhaps we don&apos;t.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:850
&gt; +    CFStringRef cfString = createXMLStringFromWebArchiveData(cfData);

No clear need for this local.

&gt; Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp:1
&gt; +/*

It would of course be nice not to copy these files, but Sam and Alex and I don&apos;t really know of a good shared place.

&gt; Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.h:38
&gt; +CFURLResponseRef createCFURLResponseFromResponseData(CFDataRef responseData);

You mentioned that we might not need this. If you find out that you don&apos;t, can you remove it from the copied files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885545</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-06 18:41:52 -0700</bug_when>
    <thetext>It looks like you need to wrap some of this stuff in #if PLATFORM(MAC) or #if USE(CF) or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885546</commentid>
    <comment_count>6</comment_count>
      <attachid>200863</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-06 18:47:19 -0700</bug_when>
    <thetext>Comment on attachment 200863
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:846
&gt; +    // create an xml string from the web archive data

Also, these are both &quot;what&quot; comments, not &quot;why&quot; comments, and they describe exactly what the code is already doing, so there&apos;s really no reason to have them at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885548</commentid>
    <comment_count>7</comment_count>
      <attachid>200863</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-06 19:09:36 -0700</bug_when>
    <thetext>Comment on attachment 200863
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        added dumpDOMAsWebArchive javascript function to be called by test cases

These should be capitalized/punctuated too.

&gt; Tools/ChangeLog:13
&gt; +        added dumpDOMAsWebArchive c++ code that is called when dumping        

&quot;C++ code&quot; bit is ... unnecessary.

&gt; Tools/ChangeLog:18
&gt; +        added dumpDOMAsWebArchive c++ declaration

Here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885820</commentid>
    <comment_count>8</comment_count>
      <attachid>200927</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-05-07 10:46:22 -0700</bug_when>
    <thetext>Created attachment 200927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885864</commentid>
    <comment_count>9</comment_count>
      <attachid>200927</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-07 11:25:41 -0700</bug_when>
    <thetext>Comment on attachment 200927
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:850
&gt; +    const unsigned char* bytes = WKDataGetBytes(wkData);
&gt; +    size_t length = WKDataGetSize(wkData);
&gt; +    CFDataRef cfData = CFDataCreate(0, bytes, length);

This could be all-in-one-line too.

Also, you&apos;re leaking the CFData object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885868</commentid>
    <comment_count>10</comment_count>
      <attachid>200927</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-07 11:28:14 -0700</bug_when>
    <thetext>Comment on attachment 200927
Patch

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

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:850
&gt;&gt; +    CFDataRef cfData = CFDataCreate(0, bytes, length);
&gt; 
&gt; This could be all-in-one-line too.
&gt; 
&gt; Also, you&apos;re leaking the CFData object.

You should use something like RetainPtr&lt;CFDataRef&gt; cfData = adoptCF(CFDataCreate(0, ...));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885949</commentid>
    <comment_count>11</comment_count>
      <attachid>200967</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-05-07 13:44:13 -0700</bug_when>
    <thetext>Created attachment 200967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885952</commentid>
    <comment_count>12</comment_count>
      <attachid>200967</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-07 13:50:20 -0700</bug_when>
    <thetext>Comment on attachment 200967
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        Added dumpDOMAsWebArchive javascript function to be called by test cases.

JavaScript

&gt; Tools/ChangeLog:21
&gt; +        Added dumpDOMAsWebArchive JS callback function that sets m_whatToDump to DOMASWebArchive.

I think it&apos;s &quot;As&quot; not &quot;AS&quot;. Too many caps :)

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:53
&gt; +#import &lt;CoreFoundation/CoreFoundation.h&gt;

Isn&apos;t this already included by WebArchiveDumpSupport.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885956</commentid>
    <comment_count>13</comment_count>
      <attachid>200970</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2013-05-07 13:55:00 -0700</bug_when>
    <thetext>Created attachment 200970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885973</commentid>
    <comment_count>14</comment_count>
      <attachid>200970</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 14:26:12 -0700</bug_when>
    <thetext>Comment on attachment 200970
Patch

Clearing flags on attachment: 200970

Committed r149692: &lt;http://trac.webkit.org/changeset/149692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885974</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 14:26:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885977</commentid>
    <comment_count>16</comment_count>
      <attachid>200970</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-05-07 14:30:20 -0700</bug_when>
    <thetext>Comment on attachment 200970
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:848
&gt; +    WKDataRef wkData = WKBundleFrameCopyWebArchive(frame);

Anders points out that this is also an object you own, so you should WKRetainPtr it up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200863</attachid>
            <date>2013-05-06 18:33:51 -0700</date>
            <delta_ts>2013-05-07 10:46:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42324-20130506183258.patch</filename>
            <type>text/plain</type>
            <size>31640</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0OTY1NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDEzLTA1LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRlc3RSdW5uZXIuZHVt
cERPTUFzV2ViQXJjaGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIzMjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxOTM2MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICBhZGRlZCBkdW1wRE9NQXNXZWJBcmNoaXZlIGphdmFzY3JpcHQgZnVuY3Rpb24gdG8gYmUgY2Fs
bGVkIGJ5IHRlc3QgY2FzZXMKKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisgICAgICAgIGFkZGVkIGR1bXBET01B
c1dlYkFyY2hpdmUgYysrIGNvZGUgdGhhdCBpcyBjYWxsZWQgd2hlbiBkdW1waW5nICAgICAgICAK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKToKKyAgICAgICAgbWFkZSBE
T01Bc1dlYkFyY2hpdmUgY2FzZSB3aGVuIGR1bXBpbmcgY2FsbCBkdW1wRE9NQXNXZWJBcmNoaXZl
CisgICAgICAgICogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZSk6CisgICAgICAgIGFk
ZGVkIGR1bXBET01Bc1dlYkFyY2hpdmUgYysrIGRlY2xhcmF0aW9uCisgICAgICAgICogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICBhZGRlZCBkdW1w
RE9NQXNXZWJBcmNoaXZlIEpTIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2V0cyBtX3doYXRUb0R1
bXAgdG8gRE9NQVNXZWJBcmNoaXZlICAgICAgICAKKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgYWRkZWQgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCwgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmgsIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSB0byBwcm9qZWN0CisgICAgICAgICogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jZjogQWRkZWQuCisgICAgICAgICogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgQ29w
aWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YgZm9yIGNyZWF0ZVhNTFN0cmluZ0Zyb21X
ZWJBcmNoaXZlRGF0YSBhbmQgb3RoZXIgZnVuY3Rpb25zIGl0IHVzZXMKKyAgICAgICAgKGNvbnZl
cnRNSU1FVHlwZSk6CisgICAgICAgIChjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcpOgor
ICAgICAgICAobm9ybWFsaXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKToKKyAgICAgICAgKG5v
cm1hbGl6ZVdlYlJlc291cmNlVVJMKToKKyAgICAgICAgKGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKGNvbXBhcmVSZXNvdXJjZVVSTHMpOgorICAgICAg
ICAoY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOiBBZGRlZC4KKyAgICAg
ICAgQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YgZm9yIHVzZWQgc3ltYm9sIGRl
Y2xhcmF0aW9ucworICAgICAgICAqIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYkFyY2hp
dmVEdW1wU3VwcG9ydE1hYy5tbTogQWRkZWQuCisgICAgICAgIENvcGllZCBmcm9tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYyBmb3IgdXNlZCBmdW5jdGlvbnMKKyAgICAgICAgKGNyZWF0ZUNGVVJM
UmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKHN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKToKKwogMjAxMy0wNS0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0OTU0Ny4KSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDE0OTYyMikKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIK
ICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJXZWJBcmNoaXZlRHVtcFN1
cHBvcnQuaCIKICNpbmNsdWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlIDxjbWF0
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgpAQCAtODM3LDYgKzgz
OCwyMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcEFsbEZyYW1lc1RlCiAgICAgZHVt
cERlc2NlbmRhbnRGcmFtZXNUZXh0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKIH0KIAordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKK3sKKyAgICAvLyBjcmVhdGUgd2Vi
IGFyY2hpdmUgZGF0YSBmcm9tIHRoZSBmcmFtZQorICAgIFdLRGF0YVJlZiB3a0RhdGEgPSBXS0J1
bmRsZUZyYW1lQ29weVdlYkFyY2hpdmUoZnJhbWUpOworCisgICAgLy8gY3JlYXRlIGFuIHhtbCBz
dHJpbmcgZnJvbSB0aGUgd2ViIGFyY2hpdmUgZGF0YQorICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGJ5dGVzID0gV0tEYXRhR2V0Qnl0ZXMod2tEYXRhKTsKKyAgICBzaXplX3QgbGVuZ3RoID0gV0tE
YXRhR2V0U2l6ZSh3a0RhdGEpOworICAgIENGRGF0YVJlZiBjZkRhdGEgPSBDRkRhdGFDcmVhdGUo
MCwgYnl0ZXMsIGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdSZWYgY2ZTdHJpbmcgPSBjcmVhdGVYTUxT
dHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoY2ZEYXRhKTsKKworICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGNmU3RyaW5nKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogewog
ICAgIEFTU0VSVChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuaXNUZXN0UnVubmluZygpKTsKQEAg
LTg2OCw2ICs4ODMsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVGVzdFJ1bm5lcjo6QXVkaW86CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVGVzdFJ1bm5lcjo6RE9NQXNXZWJBcmNoaXZlOgorICAgICAgICBkdW1wRE9NQXNXZWJB
cmNoaXZlKGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBB
bGxGcmFtZVNjcm9sbFBvc2l0aW9ucygpKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCShyZXZp
c2lvbiAxNDk2MjIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZHVtcEFsbEZyYW1lc1RleHQoV1RGOjpTdHJpbmdCdWlsZGVyJik7
CiAgICAgdm9pZCBkdW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoV1RGOjpTdHJpbmdCdWlsZGVy
Jik7CisgICAgdm9pZCBkdW1wRE9NQXNXZWJBcmNoaXZlKFdLQnVuZGxlRnJhbWVSZWYsIFdURjo6
U3RyaW5nQnVpbGRlciYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybURpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAxNDk2
MjIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1w
V2lsbENhY2hlUmVzcG9uc2UoKSB7IG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlID0gdHJ1ZTsgfQog
ICAgIHZvaWQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpIHsgbV9kdW1w
QXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVt
cERhdGFiYXNlQ2FsbGJhY2tzKCkgeyBtX2R1bXBEYXRhYmFzZUNhbGxiYWNrcyA9IHRydWU7IH0K
KyAgICB2b2lkIGR1bXBET01Bc1dlYkFyY2hpdmUoKSB7IG1fd2hhdFRvRHVtcCA9IERPTUFzV2Vi
QXJjaGl2ZTsgfQogCiAgICAgdm9pZCBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJv
b2wgdmFsdWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFsdWU7IH0KICAgICB2b2lk
IHNldFNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soYm9vbCB2YWx1ZSkgeyBtX2R1
bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2sgPSB2YWx1ZTsgfQpAQCAtMTYzLDcgKzE2NCw3IEBA
IHB1YmxpYzoKICAgICAvLyBBdWRpbyB0ZXN0aW5nLgogICAgIHZvaWQgc2V0QXVkaW9SZXN1bHQo
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIGRhdGEpOwogCi0gICAgZW51bSBXaGF0VG9EdW1wIHsg
UmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVzVGV4dCwgQXVkaW8gfTsKKyAgICBl
bnVtIFdoYXRUb0R1bXAgeyBSZW5kZXJUcmVlLCBNYWluRnJhbWVUZXh0LCBBbGxGcmFtZXNUZXh0
LCBBdWRpbywgRE9NQXNXZWJBcmNoaXZlIH07CiAgICAgV2hhdFRvRHVtcCB3aGF0VG9EdW1wKCkg
Y29uc3QgeyByZXR1cm4gbV93aGF0VG9EdW1wOyB9CiAKICAgICBib29sIHNob3VsZER1bXBBbGxG
cmFtZVNjcm9sbFBvc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVtcEFsbEZyYW1l
U2Nyb2xsUG9zaXRpb25zOyB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlz
aW9uIDE0OTYyMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgaW50
ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgZHVtcFdpbGxDYWNoZVJlc3BvbnNlKCk7CiAg
ICAgdm9pZCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7CiAgICAgdm9p
ZCBkdW1wRGF0YWJhc2VDYWxsYmFja3MoKTsKKyAgICB2b2lkIGR1bXBET01Bc1dlYkFyY2hpdmUo
KTsKIAogICAgIC8vIFNwZWNpYWwgb3B0aW9ucy4KICAgICB2b2lkIGtlZXBXZWJIaXN0b3J5KCk7
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dl
YktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ5NjIy
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAKIAkJNTY0MUUy
RDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjQxRTJDRTE0MzM1RTk1MDA4
MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTY2NEE0OUExNDMy
NjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY2NEE0OTgxNDMyNjM4NDAwODg4MUJFIC8q
IFRleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQk1NjcwQjgyODEzODZGQ0E1MDAyRUIz
NTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU2NzBCODI3MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclBy
b3h5Lm1tICovOyB9OworCQk1Q0I1RjFCMjE3Mzg4QjA4MDAyQTdDRkQgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNCNUYxQjExNzM4OEIwODAwMkE3Q0ZEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1h
Yy5tbSAqLzsgfTsKKwkJNUNCNUYxQjUxNzM4OEIyNDAwMkE3Q0ZEIC8qIFdlYkFyY2hpdmVEdW1w
U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0I1RjFCMzE3Mzg4QjI0MDAyQTdDRkQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAq
LzsgfTsKIAkJNjUxMEE3ODIxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19fLlRURiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3NzcxMUVDNjQz
ODAwNDEwODY3IC8qIEFIRU1fX19fLlRURiAqLzsgfTsKIAkJNjUxMEE3ODQxMUVDNjQzODAwNDEw
ODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3OTExRUM2NDM4MDA0MTA4NjcgLyogV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi87IH07CiAJCTY1MTBBNzg1MTFFQzY0MzgwMDQxMDg2
NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3N0ExMUVDNjQzODAwNDEwODY3IC8qIFdlYktp
dFdlaWdodFdhdGNoZXIyMDAudHRmICovOyB9OwpAQCAtMTQ5LDYgKzE1MSw5IEBACiAJCTU2NzBC
ODI3MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZlbnRTZW5kZXJQcm94eS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgzOTEzRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1ODM5MTNEMTE0MzM1RTk1MDA4MzA3RTUgLyog
SlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXRUZXN0UnVubmVyL0pTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNUNCNUYxQjExNzM4OEIwODAwMkE3Q0ZEIC8qIFdl
YkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbTsgcGF0aCA9IG1hYy9XZWJBcmNo
aXZlRHVtcFN1cHBvcnRNYWMubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNUNC
NUYxQjMxNzM4OEIyNDAwMkE3Q0ZEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3Bw
OyBwYXRoID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OworCQk1Q0I1RjFCNDE3Mzg4QjI0MDAyQTdDRkQgLyogV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1w
U3VwcG9ydC5oOyBwYXRoID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19f
LlRURiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZp
bGU7IG5hbWUgPSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVNX19fXy5UVEYiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3OTExRUM2NDM4MDA0MTA4NjcgLyog
V2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50
dGY7IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0Zjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3N0ExMUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdo
dFdhdGNoZXIyMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmOyBwYXRoID0g
Zm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMjcsOSArMzMyLDE5IEBACiAJCQluYW1lID0gQWNjZXNzaWJpbGl0eTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTVDQjVGMUIwMTczODhBRUEwMDJBN0NGRCAv
KiBjZiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNC
NUYxQjMxNzM4OEIyNDAwMkE3Q0ZEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8sCisJ
CQkJNUNCNUYxQjQxNzM4OEIyNDAwMkE3Q0ZEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICov
LAorCQkJKTsKKwkJCW5hbWUgPSBjZjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTY1RUI4NTlFMTFFQzY3Q0MwMDM0RDMwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDQjVGMUIxMTczODhCMDgwMDJBN0NGRCAvKiBX
ZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gKi8sCiAJCQkJNjVFQjg1OUYxMUVDNjdDQzAwMzRE
MzAwIC8qIEFjdGl2YXRlRm9udHMubW0gKi8sCiAJCQkJQkM4REFENzcxMzE2RDdCOTAwRUM5NkZD
IC8qIEluamVjdGVkQnVuZGxlTWFjLm1tICovLAogCQkJCTBGQUY2N0VFMTYwRDZDMTAwMDc3Q0Iy
QiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0gKi8sCkBAIC0zNTcsNiArMzcyLDcgQEAKIAkJ
QkMyNTE4MzUxMUQxNTcxRDAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0I1RjFCMDE3Mzg4QUVBMDAyQTdD
RkQgLyogY2YgKi8sCiAJCQkJQkM5NTJDMEExMUYzQjkzOTAwMzM5OEI0IC8qIEJpbmRpbmdzICov
LAogCQkJCUJDMTRFNEUwMTIwRTAyRjkwMDgyNkMwQyAvKiBDb250cm9sbGVycyAqLywKIAkJCQlC
Qzk1MkQzQTExRjNCRjFGMDAzMzk4QjQgLyogRGVyaXZlZCBTb3VyY2VzICovLApAQCAtNTE1LDYg
KzUzMSw4IEBACiAvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAkJMDhGQjc3OTNGRTg0
MTU1REMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVj
dDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQl9OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDFERUI5Mjc4MDg3MzNERDQwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIldlYktpdFRlc3RSdW5uZXIiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNp
b24gPSAiWGNvZGUgMy4xIjsKIAkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKQEAgLTYy
Niw2ICs2NDQsOCBAQAogCQkJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1
dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5NTJDMEQxMUYzQjk2NTAwMzM5
OEI0IC8qIEpTV3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0M5OTgxODExRDNGNTFF
MDAxN0JDQTIgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Q0I1RjFCMjE3
Mzg4QjA4MDAyQTdDRkQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNUNCNUYxQjUxNzM4OEIyNDAwMkE3Q0ZEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMENFNzIwQjEyNDdDOTMzMDBCQzBFQzQgLyogVGVz
dFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU2NjRBNDlBMTQzMjYzODQwMDg4ODFC
RSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9y
dC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hp
dmVEdW1wU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5oIgorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitleHRlcm4gIkMiIHsKKworQ0ZVUkxSZWYgQ0ZVUkxSZXNwb25zZUdl
dFVSTChDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKTsKK0NGU3RyaW5nUmVmIENGVVJMUmVzcG9u
c2VHZXRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKTsKK0NGU3RyaW5nUmVmIENG
VVJMUmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Up
OworU0ludDY0IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoQ0ZVUkxSZXNw
b25zZVJlZiByZXNwb25zZSk7CitDRkhUVFBNZXNzYWdlUmVmIENGVVJMUmVzcG9uc2VHZXRIVFRQ
UmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSk7CisKK0NGVHlwZUlEIENGVVJMUmVz
cG9uc2VHZXRUeXBlSUQodm9pZCk7CisKK30KKworc3RhdGljIHZvaWQgY29udmVydE1JTUVUeXBl
KENGTXV0YWJsZVN0cmluZ1JlZiBtaW1lVHlwZSkKK3sKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID09IDEwNTAKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2Js
ZW0vNTUzOTgyND4gb24gTGVvcGFyZAorICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobWltZVR5cGUs
IENGU1RSKCJ0ZXh0L3htbCIpLCBrQ0ZDb21wYXJlQW5jaG9yZWQgfCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgQ0ZTdHJpbmdSZXBsYWNl
QWxsKG1pbWVUeXBlLCBDRlNUUigiYXBwbGljYXRpb24veG1sIikpOworI2VuZGlmCisgICAgLy8g
V29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYyMzQzMTg+IHdpdGggRGFzaGNvZGUgMi4w
CisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtaW1lVHlwZSwgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
amF2YXNjcmlwdCIpLCBrQ0ZDb21wYXJlQW5jaG9yZWQgfCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0
aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAgICAgQ0ZTdHJpbmdSZXBsYWNlQWxsKG1p
bWVUeXBlLCBDRlNUUigidGV4dC9qYXZhc2NyaXB0IikpOworfQorCitzdGF0aWMgdm9pZCBjb252
ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZXNvdXJj
ZSkKK3sKKyAgICBDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUgPSAoQ0ZNdXRhYmxlU3RyaW5n
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VNSU1F
VHlwZSIpKTsKKyAgICBDRlN0cmluZ0xvd2VyY2FzZShtaW1lVHlwZSwgQ0ZMb2NhbGVHZXRTeXN0
ZW0oKSk7CisgICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlKTsKKworICAgIENGQXJyYXlSZWYg
c3VwcG9ydGVkTUlNRVR5cGVzID0gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKKyAgICBp
ZiAoQ0ZTdHJpbmdIYXNQcmVmaXgobWltZVR5cGUsIENGU1RSKCJ0ZXh0LyIpKSB8fCBDRkFycmF5
Q29udGFpbnNWYWx1ZShzdXBwb3J0ZWRNSU1FVHlwZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlH
ZXRDb3VudChzdXBwb3J0ZWRNSU1FVHlwZXMpKSwgbWltZVR5cGUpKSB7CisgICAgICAgIENGU3Ry
aW5nUmVmIHRleHRFbmNvZGluZ05hbWUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWUiKSkpOworICAgICAgICBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nOworICAgICAg
ICBpZiAodGV4dEVuY29kaW5nTmFtZSAmJiBDRlN0cmluZ0dldExlbmd0aCh0ZXh0RW5jb2RpbmdO
YW1lKSkKKyAgICAgICAgICAgIHN0cmluZ0VuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNo
YXJTZXROYW1lVG9FbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgc3RyaW5nRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ1VURjg7CisKKyAgICAg
ICAgQ0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VEYXRhIikpKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBkYXRhQXNTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVG
cm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBzdHJp
bmdFbmNvZGluZykpOworICAgICAgICBpZiAoZGF0YUFzU3RyaW5nKQorICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSwgZGF0
YUFzU3RyaW5nLmdldCgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIG5vcm1hbGl6ZUhUVFBS
ZXNwb25zZUhlYWRlckZpZWxkcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZpZWxkcykKK3sKKyAg
ICAvLyBOb3JtYWxpemUgaGVhZGVycworICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShm
aWVsZHMsIENGU1RSKCJEYXRlIikpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVs
ZHMsIENGU1RSKCJEYXRlIiksIENGU1RSKCJTdW4sIDE2IE5vdiAyMDA4IDE3OjAwOjAwIEdNVCIp
KTsKKyAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiTGFzdC1N
b2RpZmllZCIpKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigi
TGFzdC1Nb2RpZmllZCIpLCBDRlNUUigiU3VuLCAxNiBOb3YgMjAwOCAxNjo1NTowMCBHTVQiKSk7
CisgICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIkV0YWciKSkp
CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIkV0YWciKSwgQ0ZT
VFIoIlwiMzAxOTI1LTIxLTQ1YzdkNzJkM2U3ODBcIiIpKTsKKyAgICBpZiAoQ0ZEaWN0aW9uYXJ5
Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiU2VydmVyIikpKQorICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJTZXJ2ZXIiKSwgQ0ZTVFIoIkFwYWNoZS8yLjIuOSAo
VW5peCkgbW9kX3NzbC8yLjIuOSBPcGVuU1NMLzAuOS43bCBQSFAvNS4yLjYiKSk7CisKKyAgICAv
LyBSZW1vdmUgaGVhZGVycworICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVlKGZpZWxkcywgQ0ZT
VFIoIkNvbm5lY3Rpb24iKSk7CisgICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUoZmllbGRzLCBD
RlNUUigiS2VlcC1BbGl2ZSIpKTsKK30KKworc3RhdGljIHZvaWQgbm9ybWFsaXplV2ViUmVzb3Vy
Y2VVUkwoQ0ZNdXRhYmxlU3RyaW5nUmVmIHdlYlJlc291cmNlVVJMKQoreworICAgIHN0YXRpYyBD
RkluZGV4IGZpbGVVcmxMZW5ndGggPSBDRlN0cmluZ0dldExlbmd0aChDRlNUUigiZmlsZTovLyIp
KTsKKyAgICBDRlJhbmdlIGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhSYW5nZSA9IENGU3RyaW5n
RmluZCh3ZWJSZXNvdXJjZVVSTCwgQ0ZTVFIoIi9MYXlvdXRUZXN0cy8iKSwga0NGQ29tcGFyZUJh
Y2t3YXJkcyk7CisgICAgaWYgKGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhSYW5nZS5sb2NhdGlv
biA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIENGUmFuZ2UgY3VycmVudFdv
cmtpbmdEaXJlY3RvcnlSYW5nZSA9IENGUmFuZ2VNYWtlKGZpbGVVcmxMZW5ndGgsIGxheW91dFRl
c3RzV2ViQXJjaGl2ZVBhdGhSYW5nZS5sb2NhdGlvbiAtIGZpbGVVcmxMZW5ndGgpOworICAgIENG
U3RyaW5nUmVwbGFjZSh3ZWJSZXNvdXJjZVVSTCwgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlSYW5n
ZSwgQ0ZTVFIoIiIpKTsKK30KKworc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9u
c2VUb0RpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9wZXJ0eUxpc3QpCit7Cisg
ICAgQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocHJvcGVydHlMaXN0LCBDRlNUUigiV2ViUmVzb3VyY2VSZXNwb25zZSIp
KSk7IC8vIFdlYlJlc291cmNlUmVzcG9uc2VLZXkgaW4gV2ViUmVzb3VyY2UubQorICAgIGlmIChD
RkdldFR5cGVJRChyZXNwb25zZURhdGEpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gcmVzcG9uc2UoQWRvcHRD
RiwgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKSk7Cisg
ICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPENGTXV0
YWJsZURpY3Rpb25hcnlSZWY+IHJlc3BvbnNlRGljdGlvbmFyeShBZG9wdENGLCBDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAg
IFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHVybFN0cmluZyhBZG9wdENGLCBDRlN0cmlu
Z0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMR2V0U3RyaW5n
KENGVVJMUmVzcG9uc2VHZXRVUkwocmVzcG9uc2UuZ2V0KCkpKSkpOworICAgIG5vcm1hbGl6ZVdl
YlJlc291cmNlVVJMKHVybFN0cmluZy5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiVVJMIiksIHVybFN0cmluZy5nZXQoKSk7
CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBtaW1lVHlwZVN0cmluZyhBZG9w
dENGLCBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENG
VVJMUmVzcG9uc2VHZXRNSU1FVHlwZShyZXNwb25zZS5nZXQoKSkpKTsKKyAgICBjb252ZXJ0TUlN
RVR5cGUobWltZVR5cGVTdHJpbmcuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJl
c3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIk1JTUVUeXBlIiksIG1pbWVUeXBlU3RyaW5n
LmdldCgpKTsKKworICAgIENGU3RyaW5nUmVmIHRleHRFbmNvZGluZ05hbWUgPSBDRlVSTFJlc3Bv
bnNlR2V0VGV4dEVuY29kaW5nTmFtZShyZXNwb25zZS5nZXQoKSk7CisgICAgaWYgKHRleHRFbmNv
ZGluZ05hbWUpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFy
eS5nZXQoKSwgQ0ZTVFIoInRleHRFbmNvZGluZ05hbWUiKSwgdGV4dEVuY29kaW5nTmFtZSk7CisK
KyAgICBTSW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gQ0ZVUkxSZXNwb25zZUdldEV4cGVj
dGVkQ29udGVudExlbmd0aChyZXNwb25zZS5nZXQoKSk7CisgICAgUmV0YWluUHRyPENGTnVtYmVy
UmVmPiBleHBlY3RlZENvbnRlbnRMZW5ndGhOdW1iZXIoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmV4cGVjdGVkQ29udGVu
dExlbmd0aCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5n
ZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBleHBlY3RlZENvbnRlbnRMZW5n
dGhOdW1iZXIuZ2V0KCkpOworCisgICAgaWYgKENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2Ug
PSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKSkgeworICAgICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJzKEFkb3B0Q0YsIENGSFRUUE1l
c3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKGh0dHBNZXNzYWdlKSk7CisgICAgICAgIFJldGFpblB0
cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJGaWVsZHMoQWRvcHRDRiwgQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYWxsSGVhZGVy
cy5nZXQoKSkpOworICAgICAgICBub3JtYWxpemVIVFRQUmVzcG9uc2VIZWFkZXJGaWVsZHMoYWxs
SGVhZGVyRmllbGRzLmdldCgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9u
c2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiYWxsSGVhZGVyRmllbGRzIiksIGFsbEhlYWRlckZp
ZWxkcy5nZXQoKSk7CisKKyAgICAgICAgQ0ZJbmRleCBzdGF0dXNDb2RlID0gQ0ZIVFRQTWVzc2Fn
ZUdldFJlc3BvbnNlU3RhdHVzQ29kZShodHRwTWVzc2FnZSk7CisgICAgICAgIFJldGFpblB0cjxD
Rk51bWJlclJlZj4gc3RhdHVzQ29kZU51bWJlcihBZG9wdENGLCBDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1c0NvZGUpKTsKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNU
Uigic3RhdHVzQ29kZSIpLCBzdGF0dXNDb2RlTnVtYmVyLmdldCgpKTsKKyAgICB9CisKKyAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJlc3Bv
bnNlIiksIHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSk7Cit9CisKK3N0YXRpYyBDRkNvbXBhcmlz
b25SZXN1bHQgY29tcGFyZVJlc291cmNlVVJMcyhjb25zdCB2b2lkICp2YWwxLCBjb25zdCB2b2lk
ICp2YWwyLCB2b2lkICpjb250ZXh0KQoreworICAgIENGU3RyaW5nUmVmIHVybDEgPSBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0
aW9uYXJ5UmVmPih2YWwxKSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKKyAgICBDRlN0cmlu
Z1JlZiB1cmwyID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVl
KHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4odmFsMiksIENGU1RSKCJXZWJSZXNvdXJjZVVS
TCIpKSk7CisgCisgICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZSh1cmwxLCB1cmwyLCBrQ0ZDb21w
YXJlQW5jaG9yZWQpOworfQorCitDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJj
aGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQoreworICAgIENGRXJyb3JSZWYgZXJy
b3IgPSAwOworICAgIENGUHJvcGVydHlMaXN0Rm9ybWF0IGZvcm1hdCA9IGtDRlByb3BlcnR5TGlz
dEJpbmFyeUZvcm1hdF92MV8wOworCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA9PSAxMDUwCisgICAgQ0ZJbmRleCBieXRlc0NvdW50ID0gQ0ZEYXRhR2V0TGVuZ3RoKHdlYkFy
Y2hpdmVEYXRhKTsKKyAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiByZWFkU3RyZWFtKEFk
b3B0Q0YsIENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBDRkRhdGFHZXRCeXRlUHRyKHdlYkFyY2hpdmVEYXRhKSwgYnl0ZXNDb3VudCwga0NGQWxs
b2NhdG9yTnVsbCkpOworICAgIENGUmVhZFN0cmVhbU9wZW4ocmVhZFN0cmVhbS5nZXQoKSk7Cisg
ICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHByb3BlcnR5TGlzdChBZG9wdENG
LCAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZUZyb21TdHJlYW0o
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVhZFN0cmVhbS5nZXQoKSwgYnl0ZXNDb3VudCwga0NGUHJv
cGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZmb3JtYXQsIDApKTsKKyAgICBD
RlJlYWRTdHJlYW1DbG9zZShyZWFkU3RyZWFtLmdldCgpKTsKKyNlbHNlCisgICAgUmV0YWluUHRy
PENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHByb3BlcnR5TGlzdChBZG9wdENGLCAoQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9wZXJ0eUxpc3RNdXRhYmxlQ29udGFpbmVyc0Fu
ZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7CisjZW5kaWYKKworICAgIGlmICghcHJvcGVydHlM
aXN0KSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29w
eURlc2NyaXB0aW9uKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5n
IGRhdGEgdG8gcHJvcGVydHkgbGlzdC4iKSkpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRk11
dGFibGVBcnJheVJlZj4gcmVzb3VyY2VzKEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBDRkFy
cmF5QXBwZW5kVmFsdWUocmVzb3VyY2VzLmdldCgpLCBwcm9wZXJ0eUxpc3QuZ2V0KCkpOworCisg
ICAgd2hpbGUgKENGQXJyYXlHZXRDb3VudChyZXNvdXJjZXMuZ2V0KCkpKSB7CisgICAgICAgIFJl
dGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNvdXJjZVByb3BlcnR5TGlzdCA9IChD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb3VyY2VzLmdl
dCgpLCAwKTsKKyAgICAgICAgQ0ZBcnJheVJlbW92ZVZhbHVlQXRJbmRleChyZXNvdXJjZXMuZ2V0
KCksIDApOworCisgICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlID0g
KENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9w
ZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJNYWluUmVzb3VyY2UiKSk7CisgICAgICAgIG5vcm1h
bGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUobWFpblJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VVUkwiKSkpOworICAgICAgICBjb252
ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcobWFpblJlc291cmNlKTsKKworICAgICAgICAvLyBB
ZGQgc3ViZnJhbWVBcmNoaXZlcyB0byBsaXN0IGZvciBwcm9jZXNzaW5nCisgICAgICAgIENGTXV0
YWJsZUFycmF5UmVmIHN1YmZyYW1lQXJjaGl2ZXMgPSAoQ0ZNdXRhYmxlQXJyYXlSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJTdWJm
cmFtZUFyY2hpdmVzIikpOyAvLyBXZWJTdWJmcmFtZUFyY2hpdmVzS2V5IGluIFdlYkFyY2hpdmUu
bQorICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlcykKKyAgICAgICAgICAgIENGQXJyYXlBcHBl
bmRBcnJheShyZXNvdXJjZXMuZ2V0KCksIHN1YmZyYW1lQXJjaGl2ZXMsIENGUmFuZ2VNYWtlKDAs
IENGQXJyYXlHZXRDb3VudChzdWJmcmFtZUFyY2hpdmVzKSkpOworCisgICAgICAgIENGTXV0YWJs
ZUFycmF5UmVmIHN1YnJlc291cmNlcyA9IChDRk11dGFibGVBcnJheVJlZilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYlN1YnJlc291cmNl
cyIpKTsgLy8gV2ViU3VicmVzb3VyY2VzS2V5IGluIFdlYkFyY2hpdmUubQorICAgICAgICBpZiAo
IXN1YnJlc291cmNlcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIENGSW5kZXgg
c3VicmVzb3VyY2VzQ291bnQgPSBDRkFycmF5R2V0Q291bnQoc3VicmVzb3VyY2VzKTsKKyAgICAg
ICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc3VicmVzb3VyY2VzQ291bnQ7ICsraSkgeworICAg
ICAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCA9
IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VicmVzb3Vy
Y2VzLCBpKTsKKyAgICAgICAgICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFibGVT
dHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QsIENG
U1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7CisgICAgICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VS
ZXNwb25zZVRvRGljdGlvbmFyeShzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCk7CisgICAgICAgICAg
ICBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3Qp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gU29ydCB0aGUgc3VicmVzb3VyY2VzIHNvIHRoZXkn
cmUgYWx3YXlzIGluIGEgcHJlZGljdGFibGUgb3JkZXIgZm9yIHRoZSBkdW1wCisgICAgICAgIENG
QXJyYXlTb3J0VmFsdWVzKHN1YnJlc291cmNlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENv
dW50KHN1YnJlc291cmNlcykpLCBjb21wYXJlUmVzb3VyY2VVUkxzLCAwKTsKKyAgICB9CisKKyAg
ICBlcnJvciA9IDA7CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID09IDEw
NTAKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB4bWxEYXRhKEFkb3B0Q0YsIENGUHJvcGVydHlM
aXN0Q3JlYXRlWE1MRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9wZXJ0eUxpc3QuZ2V0KCkp
KTsKKyNlbHNlCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4geG1sRGF0YShBZG9wdENGLCBDRlBy
b3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJvcGVydHlMaXN0Lmdl
dCgpLCBrQ0ZQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCwgMCwgJmVycm9yKSk7CisjZW5kaWYK
KworICAgIGlmICgheG1sRGF0YSkgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2Nj
dXJyZWQgY29udmVydGluZyBwcm9wZXJ0eSBsaXN0IHRvIGRhdGEuIikpKTsKKyAgICB9CisKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0
ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIHhtbERhdGEu
Z2V0KCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgIFJldGFpblB0cjxDRk11dGFibGVT
dHJpbmdSZWY+IHN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIHhtbFN0cmluZy5nZXQoKSkpOworCisgICAgLy8gUmVwbGFjZSAi
QXBwbGUgQ29tcHV0ZXIiIHdpdGggIkFwcGxlIiBpbiB0aGUgRFREIGRlY2xhcmF0aW9uLgorICAg
IENGU3RyaW5nRmluZEFuZFJlcGxhY2Uoc3RyaW5nLmdldCgpLCBDRlNUUigiLS8vQXBwbGUgQ29t
cHV0ZXIvLyIpLCBDRlNUUigiLS8vQXBwbGUvLyIpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dl
dExlbmd0aChzdHJpbmcuZ2V0KCkpKSwgMCk7CisKKyAgICByZXR1cm4gc3RyaW5nLmxlYWtSZWYo
KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgJKHJldmlzaW9uIDApCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRfaAorI2RlZmluZSBXZWJBcmNoaXZlRHVtcFN1cHBv
cnRfaAorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKwordHlw
ZWRlZiBzdHJ1Y3QgX0NGVVJMUmVzcG9uc2UqIENGVVJMUmVzcG9uc2VSZWY7CisKK0NGU3RyaW5n
UmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2
ZURhdGEpOworCisvLyBNQVJLOiAtCisvLyBNQVJLOiBQbGF0Zm9ybS1zcGVjaWZpYyBtZXRob2Rz
CisKK0NGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEo
Q0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSk7CitDRkFycmF5UmVmIHN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCk7CisKKyNlbmRpZiAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRfaCAqLwpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYkFyY2hpdmVEdW1wU3Vw
cG9ydE1hYy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0LmgiCisKKyNpbXBvcnQgPENGTmV0d29yay9DRkhUVFBNZXNzYWdlLmg+CisjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJIVE1MUmVwcmVzZW50
YXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworZXh0ZXJuICJDIiB7CisKK2Vu
dW0gQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgeworICBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2Vk
ID0gMCwKKyAga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZEluTWVtb3J5T25seSA9IDEsCisgIGtD
RlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQgPSAyCit9OwordHlwZWRlZiBlbnVtIENGVVJMQ2Fj
aGVTdG9yYWdlUG9saWN5IENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5OworCitleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NGSFRUUFZlcnNpb24xXzE7CisKK0NGVVJMUmVzcG9uc2VSZWYgQ0ZVUkxS
ZXNwb25zZUNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZVUkxSZWYgVVJMLCBDRlN0cmlu
Z1JlZiBtaW1lVHlwZSwgU0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYg
dGV4dEVuY29kaW5nTmFtZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgcmVjb21tZW5kZWRQb2xp
Y3kpOworQ0ZVUkxSZXNwb25zZVJlZiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25z
ZShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZVUkxSZWYgVVJMLCBDRkhUVFBNZXNzYWdlUmVmIGh0
dHBSZXNwb25zZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgcmVjb21tZW5kZWRQb2xpY3kpOwor
dm9pZCBDRlVSTFJlc3BvbnNlU2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VS
ZWYgcmVzcG9uc2UsIFNJbnQ2NCBsZW5ndGgpOwordm9pZCBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5
cGUoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUpOworCit9
CisKK0NGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEo
Q0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKK3sKKyAgICAvLyBEZWNvZGUgTlNVUkxSZXNwb25zZQor
ICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlcihBZG9wdE5TLCBbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKily
ZXNwb25zZURhdGFdKTsKKyAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFt1bmFyY2hpdmVy
LmdldCgpIGRlY29kZU9iamVjdEZvcktleTpAIldlYlJlc291cmNlUmVzcG9uc2UiXTsgLy8gV2Vi
UmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCisgICAgW3VuYXJjaGl2ZXIuZ2V0
KCkgZmluaXNoRGVjb2RpbmddOworCisgICAgaWYgKCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpb
TlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIENGVVJMUmVzcG9uc2VD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENGVVJMUmVmKVtyZXNwb25zZSBVUkxdLCAoQ0ZT
dHJpbmdSZWYpW3Jlc3BvbnNlIE1JTUVUeXBlXSwgW3Jlc3BvbnNlIGV4cGVjdGVkQ29udGVudExl
bmd0aF0sIChDRlN0cmluZ1JlZilbcmVzcG9uc2UgdGV4dEVuY29kaW5nTmFtZV0sIGtDRlVSTENh
Y2hlU3RvcmFnZUFsbG93ZWQpOworCisgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25z
ZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlOworCisgICAgLy8gTlNVUkxSZXNwb25z
ZSBpcyBub3QgdG9sbC1mcmVlIGJyaWRnZWQgdG8gQ0ZVUkxSZXNwb25zZS4KKyAgICBSZXRhaW5Q
dHI8Q0ZIVFRQTWVzc2FnZVJlZj4gaHR0cE1lc3NhZ2UoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNy
ZWF0ZVJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29k
ZV0sIDAsIGtDRkhUVFBWZXJzaW9uMV8xKSk7CisKKyAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZp
ZWxkcyA9IFtodHRwUmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXTsKKyAgICBmb3IgKE5TU3RyaW5n
ICpoZWFkZXJGaWVsZCBpbiBbaGVhZGVyRmllbGRzIGtleUVudW1lcmF0b3JdKQorICAgICAgICBD
RkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1ZShodHRwTWVzc2FnZS5nZXQoKSwgKENGU3Ry
aW5nUmVmKWhlYWRlckZpZWxkLCAoQ0ZTdHJpbmdSZWYpW2hlYWRlckZpZWxkcyBvYmplY3RGb3JL
ZXk6aGVhZGVyRmllbGRdKTsKKworICAgIHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhU
VFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZVUkxSZWYpW3Jlc3BvbnNlIFVSTF0s
IGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKK30KKworQ0ZB
cnJheVJlZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpCit7CisgICAgcmV0dXJuIChDRkFy
cmF5UmVmKVtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNd
OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200927</attachid>
            <date>2013-05-07 10:46:22 -0700</date>
            <delta_ts>2013-05-07 13:44:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42324-20130507104528.patch</filename>
            <type>text/plain</type>
            <size>11644</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0OTY1NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI3IEBACisyMDEzLTA1LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRlc3RSdW5uZXIuZHVt
cERPTUFzV2ViQXJjaGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIzMjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxOTM2MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICBBZGRlZCBkdW1wRE9NQXNXZWJBcmNoaXZlIGphdmFzY3JpcHQgZnVuY3Rpb24gdG8gYmUgY2Fs
bGVkIGJ5IHRlc3QgY2FzZXMuCisgICAgICAgICogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICBBZGRlZCBkdW1wRE9N
QXNXZWJBcmNoaXZlIGNvZGUgdGhhdCBpcyBjYWxsZWQgd2hlbiBkdW1waW5nLgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXApOgorICAgICAgICBNYWRlIERPTUFzV2ViQXJj
aGl2ZSBjYXNlIHdoZW4gZHVtcGluZyBjYWxsIGR1bXBET01Bc1dlYkFyY2hpdmUuCisgICAgICAg
ICogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuaDoKKyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZSk6CisgICAgICAgIEFkZGVkIGR1bXBE
T01Bc1dlYkFyY2hpdmUgZGVjbGFyYXRpb24uCisgICAgICAgICogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICBBZGRlZCBkdW1wRE9NQXNXZWJBcmNo
aXZlIEpTIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgc2V0cyBtX3doYXRUb0R1bXAgdG8gRE9NQVNX
ZWJBcmNoaXZlLgorICAgICAgICAqIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBXZWJBcmNoaXZl
RHVtcFN1cHBvcnQuY3BwLCBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCwgV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0TWFjLm1tIHRvIHhjb2RlIHByb2plY3QuCisKIDIwMTMtMDUtMDYgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNDk1NDcuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAx
NDk2MjIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDEwIEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlICJXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCIKKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaCIKICNlbmRpZgpAQCAtODM3LDYgKzg0MSwxOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZHVtcEFsbEZyYW1lc1RlCiAgICAgZHVtcERlc2NlbmRhbnRGcmFtZXNUZXh0KGZyYW1lLCBz
dHJpbmdCdWlsZGVyKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dl
YkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVp
bGRlcikKK3sKKyNpZiBVU0UoQ0YpCisgICAgV0tEYXRhUmVmIHdrRGF0YSA9IFdLQnVuZGxlRnJh
bWVDb3B5V2ViQXJjaGl2ZShmcmFtZSk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMg
PSBXS0RhdGFHZXRCeXRlcyh3a0RhdGEpOworICAgIHNpemVfdCBsZW5ndGggPSBXS0RhdGFHZXRT
aXplKHdrRGF0YSk7CisgICAgQ0ZEYXRhUmVmIGNmRGF0YSA9IENGRGF0YUNyZWF0ZSgwLCBieXRl
cywgbGVuZ3RoKTsKKyAgICBDRlN0cmluZ1JlZiBjZlN0cmluZyA9IGNyZWF0ZVhNTFN0cmluZ0Zy
b21XZWJBcmNoaXZlRGF0YShjZkRhdGEpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNmU3Ry
aW5nKTsKKyNlbmRpZgorfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiB7CiAg
ICAgQVNTRVJUKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpOwpAQCAt
ODY4LDYgKzg4NCw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKCkKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXN0UnVubmVyOjpBdWRpbzoKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUZXN0UnVubmVyOjpET01Bc1dlYkFyY2hpdmU6CisgICAgICAgIGR1bXBET01Bc1dlYkFy
Y2hpdmUoZnJhbWUsIHN0cmluZ0J1aWxkZXIpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEFs
bEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgJKHJldmlz
aW9uIDE0OTYyMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkdW1wQWxsRnJhbWVzVGV4dChXVEY6OlN0cmluZ0J1aWxkZXImKTsK
ICAgICB2b2lkIGR1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucyhXVEY6OlN0cmluZ0J1aWxkZXIm
KTsKKyAgICB2b2lkIGR1bXBET01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiwgV1RGOjpT
dHJpbmdCdWlsZGVyJik7CiAKICAgICB2b2lkIHBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDE0OTYy
MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBX
aWxsQ2FjaGVSZXNwb25zZSgpIHsgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2UgPSB0cnVlOyB9CiAg
ICAgdm9pZCBkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgeyBtX2R1bXBB
cHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1w
RGF0YWJhc2VDYWxsYmFja3MoKSB7IG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzID0gdHJ1ZTsgfQor
ICAgIHZvaWQgZHVtcERPTUFzV2ViQXJjaGl2ZSgpIHsgbV93aGF0VG9EdW1wID0gRE9NQXNXZWJB
cmNoaXZlOyB9CiAKICAgICB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9v
bCB2YWx1ZSkgeyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQogICAgIHZvaWQg
c2V0U2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayhib29sIHZhbHVlKSB7IG1fZHVt
cFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayA9IHZhbHVlOyB9CkBAIC0xNjMsNyArMTY0LDcgQEAg
cHVibGljOgogICAgIC8vIEF1ZGlvIHRlc3RpbmcuCiAgICAgdm9pZCBzZXRBdWRpb1Jlc3VsdChK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgZGF0YSk7CiAKLSAgICBlbnVtIFdoYXRUb0R1bXAgeyBS
ZW5kZXJUcmVlLCBNYWluRnJhbWVUZXh0LCBBbGxGcmFtZXNUZXh0LCBBdWRpbyB9OworICAgIGVu
dW0gV2hhdFRvRHVtcCB7IFJlbmRlclRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQs
IEF1ZGlvLCBET01Bc1dlYkFyY2hpdmUgfTsKICAgICBXaGF0VG9EdW1wIHdoYXRUb0R1bXAoKSBj
b25zdCB7IHJldHVybiBtX3doYXRUb0R1bXA7IH0KIAogICAgIGJvb2wgc2hvdWxkRHVtcEFsbEZy
YW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREdW1wQWxsRnJhbWVT
Y3JvbGxQb3NpdGlvbnM7IH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNp
b24gMTQ5NjIyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBpbnRl
cmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBkdW1wV2lsbENhY2hlUmVzcG9uc2UoKTsKICAg
ICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKICAgICB2b2lk
IGR1bXBEYXRhYmFzZUNhbGxiYWNrcygpOworICAgIHZvaWQgZHVtcERPTUFzV2ViQXJjaGl2ZSgp
OwogCiAgICAgLy8gU3BlY2lhbCBvcHRpb25zLgogICAgIHZvaWQga2VlcFdlYkhpc3RvcnkoKTsK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDk2MjIp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQAogCQk1NjQxRTJE
MDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NDFFMkNFMTQzMzVFOTUwMDgz
MDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQk1NjY0QTQ5QTE0MzI2
Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjY0QTQ5ODE0MzI2Mzg0MDA4ODgxQkUgLyog
VGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTU2NzBCODI4MTM4NkZDQTUwMDJFQjM1
NSAvKiBFdmVudFNlbmRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJv
eHkubW0gKi87IH07CisJCTVDNDVDMzBCMTczOTcxNzMwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVt
cFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUM0NUMzMDkxNzM5NzE3MzAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAg
Ki87IH07CisJCTVDNDVDMzBEMTczOTcxOEIwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBv
cnRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzQ1QzMwQzE3Mzk3MThCMDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICov
OyB9OwogCQk2NTEwQTc4MjExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3NzExRUM2NDM4
MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovOyB9OwogCQk2NTEwQTc4NDExRUM2NDM4MDA0MTA4
NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJL
aXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLzsgfTsKIAkJNjUxMEE3ODUxMUVDNjQzODAwNDEwODY3
IC8qIFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3QTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0
V2VpZ2h0V2F0Y2hlcjIwMC50dGYgKi87IH07CkBAIC0xNDksNiArMTUxLDkgQEAKIAkJNTY3MEI4
MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudFNlbmRlclByb3h5Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTU4MzkxM0QxMTQzMzVFOTUwMDgzMDdFNSAvKiBK
U0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdFRlc3RSdW5uZXIvSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1QzQ1QzMwOTE3Mzk3MTczMDA3OTcxNEUgLyogV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHBhdGggPSAuLi8uLi9EdW1wUmVuZGVyVHJl
ZS9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzQ1QzMwQTE3Mzk3MTczMDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5o
OyBwYXRoID0gLi4vLi4vRHVtcFJlbmRlclRyZWUvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNDVDMzBDMTczOTcxOEIwMDc5NzE0RSAv
KiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW07IHBhdGggPSAuLi8uLi8u
Li9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9f
X18uVFRGICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgbmFtZSA9ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAv
KiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAw
LnR0ZjsgcGF0aCA9IGZvbnRzL1dlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3QTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjIwMC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHBhdGgg
PSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTMyNyw5ICszMzIsMTkgQEAKIAkJCW5hbWUgPSBBY2Nlc3NpYmlsaXR5OwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNUM0NUMzMDgxNzM5NkVEMTAwNzk3MTRF
IC8qIGNmICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1
QzQ1QzMwOTE3Mzk3MTczMDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLywK
KwkJCQk1QzQ1QzMwQTE3Mzk3MTczMDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmgg
Ki8sCisJCQkpOworCQkJbmFtZSA9IGNmOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJNjVFQjg1OUUxMUVDNjdDQzAwMzREMzAwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM0NUMzMEMxNzM5NzE4QjAwNzk3MTRFIC8q
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSAqLywKIAkJCQk2NUVCODU5RjExRUM2N0NDMDAz
NEQzMDAgLyogQWN0aXZhdGVGb250cy5tbSAqLywKIAkJCQlCQzhEQUQ3NzEzMTZEN0I5MDBFQzk2
RkMgLyogSW5qZWN0ZWRCdW5kbGVNYWMubW0gKi8sCiAJCQkJMEZBRjY3RUUxNjBENkMxMDAwNzdD
QjJCIC8qIEluamVjdGVkQnVuZGxlUGFnZU1hYy5tbSAqLywKQEAgLTM1Nyw2ICszNzIsNyBAQAog
CQlCQzI1MTgzNTExRDE1NzFEMDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDNDVDMzA4MTczOTZFRDEwMDc5
NzE0RSAvKiBjZiAqLywKIAkJCQlCQzk1MkMwQTExRjNCOTM5MDAzMzk4QjQgLyogQmluZGluZ3Mg
Ki8sCiAJCQkJQkMxNEU0RTAxMjBFMDJGOTAwODI2QzBDIC8qIENvbnRyb2xsZXJzICovLAogCQkJ
CUJDOTUyRDNBMTFGM0JGMUYwMDMzOThCNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCkBAIC01MTUs
NiArNTMxLDggQEAKIC8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCQkwOEZCNzc5M0ZF
ODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9q
ZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMURFQjkyNzgwODczM0RENDAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAiV2ViS2l0VGVzdFJ1bm5lciIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVy
c2lvbiA9ICJYY29kZSAzLjEiOwogCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwpAQCAt
NjA1LDYgKzYyMyw3IEBACiAJCQkJMjkyMTBFQjQxNDRDQUNENTAwODM1QkI1IC8qIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRUI1MTQ0Q0FDRDUw
MDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI5QThGQ0UyMTQ1RjAzN0IwMDkwNDVBNiAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDNDVDMzBEMTczOTcxOEIwMDc5NzE0RSAvKiBX
ZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUE4RkNFNTE0
NUYwNDY0MDA5MDQ1QTYgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZU1hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTI5MjEwRUFFMTQ0Q0FDQjcwMDgzNUJCNSAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRURBMTQ0Q0MzRUEwMDgzNUJC
NSAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC02MjEs
NiArNjQwLDcgQEAKIAkJCQkyOUE4RkNERDE0NUYwMzM3MDA5MDQ1QTYgLyogSlNBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5MjEwRUUxMTQ0Q0RC
MjYwMDgzNUJCNSAvKiBKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM4RkQ4RDIxMjBFNTQ1QjAwRjNFNzFBIC8qIEpTRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzQ1QzMwQjE3Mzk3MTczMDA3OTcxNEUgLyogV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTRFNEVBMTIwRTAz
RDgwMDgyNkMwQyAvKiBKU0dDQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk1
MkYxRjExRjNDNjUyMDAzMzk4QjQgLyogSlNUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200967</attachid>
            <date>2013-05-07 13:44:13 -0700</date>
            <delta_ts>2013-05-07 13:54:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42324-20130507134319.patch</filename>
            <type>text/plain</type>
            <size>31556</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0OTY4NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDEzLTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRlc3RSdW5uZXIuZHVt
cERPTUFzV2ViQXJjaGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIzMjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxOTM2MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICBBZGRlZCBkdW1wRE9NQXNXZWJBcmNoaXZlIGphdmFzY3JpcHQgZnVuY3Rpb24gdG8gYmUgY2Fs
bGVkIGJ5IHRlc3QgY2FzZXMuCisgICAgICAgICogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICBBZGRlZCBkdW1wRE9N
QXNXZWJBcmNoaXZlIGNvZGUgdGhhdCBpcyBjYWxsZWQgd2hlbiBkdW1waW5nLiAgICAgICAgCisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCk6CisgICAgICAgIE1hZGUgRE9N
QXNXZWJBcmNoaXZlIGNhc2Ugd2hlbiBkdW1waW5nIGNhbGwgZHVtcERPTUFzV2ViQXJjaGl2ZS4K
KyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5oOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgQWRk
ZWQgZHVtcERPTUFzV2ViQXJjaGl2ZSBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisgICAgICAgIEFkZGVkIGR1bXBET01B
c1dlYkFyY2hpdmUgSlMgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBzZXRzIG1fd2hhdFRvRHVtcCB0
byBET01BU1dlYkFyY2hpdmUuCisgICAgICAgICogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIFdl
YkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAsIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oLCBXZWJBcmNo
aXZlRHVtcFN1cHBvcnRNYWMubW0gdG8gcHJvamVjdC4KKyAgICAgICAgKiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2NmOiBBZGRlZC4KKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2Nm
L1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA6IEFkZGVkLgorICAgICAgICBDb3BpZWQgZnJvbSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jZiBmb3IgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVE
YXRhIGFuZCBvdGhlciBmdW5jdGlvbnMgaXQgdXNlcy4KKyAgICAgICAgKGNvbnZlcnRNSU1FVHlw
ZSk6CisgICAgICAgIChjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcpOgorICAgICAgICAo
bm9ybWFsaXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKToKKyAgICAgICAgKG5vcm1hbGl6ZVdl
YlJlc291cmNlVVJMKToKKyAgICAgICAgKGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0
aW9uYXJ5KToKKyAgICAgICAgKGNvbXBhcmVSZXNvdXJjZVVSTHMpOgorICAgICAgICAoY3JlYXRl
WE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgQ29waWVk
IGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YgZm9yIHVzZWQgc3ltYm9sIGRlY2xhcmF0aW9u
cy4KKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJBcmNoaXZlRHVtcFN1
cHBvcnRNYWMubW06IEFkZGVkLgorICAgICAgICBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMgZm9yIHVzZWQgZnVuY3Rpb25zLgorICAgICAgICAoY3JlYXRlQ0ZVUkxSZXNwb25z
ZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMp
OgorCiAyMDEzLTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcGRhdGVkIHN0eWxlIG9mIFdlYkFyY2hpdmVEdW1wU3VwcG9ydCBiZWZv
cmUgcHV0dGluZyBpdCBpbnRvIFdlYktpdFRlc3RSdW5uZXIuCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCShyZXZpc2lvbiAxNDk2ODcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDExIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlICJXZWJBcmNo
aXZlRHVtcFN1cHBvcnQuaCIKKyNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9u
Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgiCiAjZW5kaWYKQEAgLTgzNyw2ICs4NDIsMTcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmR1bXBBbGxGcmFtZXNUZQogICAgIGR1bXBEZXNjZW5kYW50RnJhbWVzVGV4dChm
cmFtZSwgc3RyaW5nQnVpbGRlcik7CiB9CiAKKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1
bXBET01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYg
c3RyaW5nQnVpbGRlcikKK3sKKyNpZiBVU0UoQ0YpCisgICAgV0tEYXRhUmVmIHdrRGF0YSA9IFdL
QnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSk7CisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgV0tEYXRhR2V0Qnl0ZXMod2tEYXRh
KSwgV0tEYXRhR2V0U2l6ZSh3a0RhdGEpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZlN0cmluZyA9IGFkb3B0Q0YoY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0
YS5nZXQoKSkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNmU3RyaW5nLmdldCgpKTsKKyNl
bmRpZgorfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiB7CiAgICAgQVNTRVJU
KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpOwpAQCAtODY4LDYgKzg4
NCw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKCkKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBUZXN0UnVubmVyOjpBdWRpbzoKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXN0
UnVubmVyOjpET01Bc1dlYkFyY2hpdmU6CisgICAgICAgIGR1bXBET01Bc1dlYkFyY2hpdmUoZnJh
bWUsIHN0cmluZ0J1aWxkZXIpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAoSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcEFsbEZyYW1lU2Ny
b2xsUG9zaXRpb25zKCkpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDE0OTY4
NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw2ICsxNjYsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkdW1wQWxsRnJhbWVzVGV4dChXVEY6OlN0cmluZ0J1aWxkZXImKTsKICAgICB2b2lk
IGR1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucyhXVEY6OlN0cmluZ0J1aWxkZXImKTsKKyAgICB2
b2lkIGR1bXBET01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiwgV1RGOjpTdHJpbmdCdWls
ZGVyJik7CiAKICAgICB2b2lkIHBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXS0J1bmRsZUZyYW1lUmVmKTsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHJldmlzaW9uIDE0OTY4NykKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBXaWxsQ2FjaGVS
ZXNwb25zZSgpIHsgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2UgPSB0cnVlOyB9CiAgICAgdm9pZCBk
dW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgeyBtX2R1bXBBcHBsaWNhdGlv
bkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wRGF0YWJhc2VD
YWxsYmFja3MoKSB7IG1fZHVtcERhdGFiYXNlQ2FsbGJhY2tzID0gdHJ1ZTsgfQorICAgIHZvaWQg
ZHVtcERPTUFzV2ViQXJjaGl2ZSgpIHsgbV93aGF0VG9EdW1wID0gRE9NQXNXZWJBcmNoaXZlOyB9
CiAKICAgICB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCB2YWx1ZSkg
eyBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3MgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0U2hvdWxk
RHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayhib29sIHZhbHVlKSB7IG1fZHVtcFByb2dyZXNz
RmluaXNoZWRDYWxsYmFjayA9IHZhbHVlOyB9CkBAIC0xNjMsNyArMTY0LDcgQEAgcHVibGljOgog
ICAgIC8vIEF1ZGlvIHRlc3RpbmcuCiAgICAgdm9pZCBzZXRBdWRpb1Jlc3VsdChKU0NvbnRleHRS
ZWYsIEpTVmFsdWVSZWYgZGF0YSk7CiAKLSAgICBlbnVtIFdoYXRUb0R1bXAgeyBSZW5kZXJUcmVl
LCBNYWluRnJhbWVUZXh0LCBBbGxGcmFtZXNUZXh0LCBBdWRpbyB9OworICAgIGVudW0gV2hhdFRv
RHVtcCB7IFJlbmRlclRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQsIEF1ZGlvLCBE
T01Bc1dlYkFyY2hpdmUgfTsKICAgICBXaGF0VG9EdW1wIHdoYXRUb0R1bXAoKSBjb25zdCB7IHJl
dHVybiBtX3doYXRUb0R1bXA7IH0KIAogICAgIGJvb2wgc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xs
UG9zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREdW1wQWxsRnJhbWVTY3JvbGxQb3Np
dGlvbnM7IH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMTQ5Njg3
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBpbnRlcmZhY2UgVGVz
dFJ1bm5lciB7CiAgICAgdm9pZCBkdW1wV2lsbENhY2hlUmVzcG9uc2UoKTsKICAgICB2b2lkIGR1
bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKTsKICAgICB2b2lkIGR1bXBEYXRh
YmFzZUNhbGxiYWNrcygpOworICAgIHZvaWQgZHVtcERPTUFzV2ViQXJjaGl2ZSgpOwogCiAgICAg
Ly8gU3BlY2lhbCBvcHRpb25zLgogICAgIHZvaWQga2VlcFdlYkhpc3RvcnkoKTsKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDk2ODcpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQAogCQk1NjQxRTJEMDE0MzM1RTk1
MDA4MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NDFFMkNFMTQzMzVFOTUwMDgzMDdFNSAvKiBK
U1RleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQk1NjY0QTQ5QTE0MzI2Mzg0MDA4ODgx
QkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NjY0QTQ5ODE0MzI2Mzg0MDA4ODgxQkUgLyogVGV4dElucHV0
Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTU2NzBCODI4MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVu
dFNlbmRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gKi87
IH07CisJCTVDNDVDMzBGMTczOThFMjkwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQ1
QzMwRTE3Mzk4RTI5MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICovOyB9
OworCQk1QzQ1QzMxMzE3Mzk4RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDVDMzEx
MTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICovOyB9OwogCQk2
NTEwQTc4MjExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3NzExRUM2NDM4MDA0MTA4Njcg
LyogQUhFTV9fX18uVFRGICovOyB9OwogCQk2NTEwQTc4NDExRUM2NDM4MDA0MTA4NjcgLyogV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyMTAwLnR0ZiAqLzsgfTsKIAkJNjUxMEE3ODUxMUVDNjQzODAwNDEwODY3IC8qIFdlYktp
dFdlaWdodFdhdGNoZXIyMDAudHRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTEwQTc3QTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0
Y2hlcjIwMC50dGYgKi87IH07CkBAIC0xNDksNiArMTUxLDkgQEAKIAkJNTY3MEI4MjcxMzg2RkNB
NTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBFdmVudFNlbmRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1ODM5MTNEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RS
dW5uZXIvSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTU4MzkxM0QxMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RS
dW5uZXIvSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQk1QzQ1QzMwRTE3Mzk4RTI5MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tOyBwYXRoID0gbWFjL1dlYkFyY2hpdmVEdW1wU3Vw
cG9ydE1hYy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk1QzQ1QzMxMTE3Mzk4
RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHBhdGggPSBj
Zi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CisJCTVDNDVDMzEyMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7
IHBhdGggPSBjZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQk2NTEwQTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9
ICJBSEVNX19fXy5UVEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyMTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZjsgcGF0aCA9
IGZvbnRzL1dlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTEwQTc3QTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIw
MC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBm
aWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHBhdGggPSBmb250cy9XZWJL
aXRXZWlnaHRXYXRjaGVyMjAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMy
Nyw5ICszMzIsMTkgQEAKIAkJCW5hbWUgPSBBY2Nlc3NpYmlsaXR5OwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNUM0NUMzMTAxNzM5OEUzNzAwNzk3MTRFIC8qIGNmICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1QzQ1QzMxMTE3Mzk4
RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLywKKwkJCQk1QzQ1QzMx
MjE3Mzk4RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggKi8sCisJCQkpOwor
CQkJbmFtZSA9IGNmOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNjVFQjg1
OUUxMUVDNjdDQzAwMzREMzAwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNUM0NUMzMEUxNzM5OEUyOTAwNzk3MTRFIC8qIFdlYkFyY2hpdmVE
dW1wU3VwcG9ydE1hYy5tbSAqLywKIAkJCQk2NUVCODU5RjExRUM2N0NDMDAzNEQzMDAgLyogQWN0
aXZhdGVGb250cy5tbSAqLywKIAkJCQlCQzhEQUQ3NzEzMTZEN0I5MDBFQzk2RkMgLyogSW5qZWN0
ZWRCdW5kbGVNYWMubW0gKi8sCiAJCQkJMEZBRjY3RUUxNjBENkMxMDAwNzdDQjJCIC8qIEluamVj
dGVkQnVuZGxlUGFnZU1hYy5tbSAqLywKQEAgLTM1Nyw2ICszNzIsNyBAQAogCQlCQzI1MTgzNTEx
RDE1NzFEMDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDNDVDMzEwMTczOThFMzcwMDc5NzE0RSAvKiBjZiAq
LywKIAkJCQlCQzk1MkMwQTExRjNCOTM5MDAzMzk4QjQgLyogQmluZGluZ3MgKi8sCiAJCQkJQkMx
NEU0RTAxMjBFMDJGOTAwODI2QzBDIC8qIENvbnRyb2xsZXJzICovLAogCQkJCUJDOTUyRDNBMTFG
M0JGMUYwMDMzOThCNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCkBAIC01MTUsNiArNTMxLDggQEAK
IC8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCQkwOEZCNzc5M0ZFODQxNTVEQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0
cmlidXRlcyA9IHsKKwkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMURFQjkyNzgw
ODczM0RENDAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiV2ViS2l0VGVzdFJ1bm5lciIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29k
ZSAzLjEiOwogCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwpAQCAtNjI2LDYgKzY0NCw4
IEBACiAJCQkJNTY0MUUyRDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzk1MkMwRDExRjNCOTY1MDAzMzk4QjQgLyogSlNX
cmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzk5ODE4MTFEM0Y1MUUwMDE3QkNBMiAv
KiBUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDNDVDMzBGMTczOThFMjkwMDc5
NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
QzQ1QzMxMzE3Mzk4RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMwQ0U3MjBCMTI0N0M5MzMwMEJDMEVDNCAvKiBUZXN0UnVubmVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTY2NEE0OUExNDMyNjM4NDAwODg4MUJFIC8qIFRleHRJ
bnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcAkocmV2
aXNpb24gMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0LmgiCisKKyNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK2V4dGVybiAiQyIgeworCitDRlVSTFJlZiBDRlVSTFJlc3BvbnNlR2V0VVJMKENGVVJM
UmVzcG9uc2VSZWYpOworQ0ZTdHJpbmdSZWYgQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKENGVVJM
UmVzcG9uc2VSZWYpOworQ0ZTdHJpbmdSZWYgQ0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05h
bWUoQ0ZVUkxSZXNwb25zZVJlZik7CitTSW50NjQgQ0ZVUkxSZXNwb25zZUdldEV4cGVjdGVkQ29u
dGVudExlbmd0aChDRlVSTFJlc3BvbnNlUmVmKTsKK0NGSFRUUE1lc3NhZ2VSZWYgQ0ZVUkxSZXNw
b25zZUdldEhUVFBSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmKTsKKworQ0ZUeXBlSUQgQ0ZVUkxS
ZXNwb25zZUdldFR5cGVJRCh2b2lkKTsKKworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0TUlNRVR5
cGUoQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBlKQoreworI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPT0gMTA1MAorICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJv
YmxlbS81NTM5ODI0PiBvbiBMZW9wYXJkCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtaW1lVHlw
ZSwgQ0ZTVFIoInRleHQveG1sIiksIGtDRkNvbXBhcmVBbmNob3JlZCB8IGtDRkNvbXBhcmVDYXNl
SW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICBDRlN0cmluZ1JlcGxh
Y2VBbGwobWltZVR5cGUsIENGU1RSKCJhcHBsaWNhdGlvbi94bWwiKSk7CisjZW5kaWYKKyAgICAv
LyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjIzNDMxOD4gd2l0aCBEYXNoY29kZSAy
LjAKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1pbWVUeXBlLCBDRlNUUigiYXBwbGljYXRpb24v
eC1qYXZhc2NyaXB0IiksIGtDRkNvbXBhcmVBbmNob3JlZCB8IGtDRkNvbXBhcmVDYXNlSW5zZW5z
aXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICBDRlN0cmluZ1JlcGxhY2VBbGwo
bWltZVR5cGUsIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSk7Cit9CisKK3N0YXRpYyB2b2lkIGNv
bnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlc291
cmNlKQoreworICAgIENGTXV0YWJsZVN0cmluZ1JlZiBtaW1lVHlwZSA9IChDRk11dGFibGVTdHJp
bmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZU1J
TUVUeXBlIikpOworICAgIENGU3RyaW5nTG93ZXJjYXNlKG1pbWVUeXBlLCBDRkxvY2FsZUdldFN5
c3RlbSgpKTsKKyAgICBjb252ZXJ0TUlNRVR5cGUobWltZVR5cGUpOworCisgICAgQ0ZBcnJheVJl
ZiBzdXBwb3J0ZWRNSU1FVHlwZXMgPSBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpOworICAg
IGlmIChDRlN0cmluZ0hhc1ByZWZpeChtaW1lVHlwZSwgQ0ZTVFIoInRleHQvIikpIHx8IENGQXJy
YXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZE1JTUVUeXBlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJh
eUdldENvdW50KHN1cHBvcnRlZE1JTUVUeXBlcykpLCBtaW1lVHlwZSkpIHsKKyAgICAgICAgQ0ZT
dHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlVGV4dEVuY29kaW5n
TmFtZSIpKSk7CisgICAgICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7CisgICAg
ICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lICYmIENGU3RyaW5nR2V0TGVuZ3RoKHRleHRFbmNvZGlu
Z05hbWUpKQorICAgICAgICAgICAgc3RyaW5nRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRJQU5B
Q2hhclNldE5hbWVUb0VuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzdHJpbmdFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVVRGODsKKworICAg
ICAgICBDRkRhdGFSZWYgZGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSkpOworICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRhdGFBc1N0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0
ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIHN0
cmluZ0VuY29kaW5nKSk7CisgICAgICAgIGlmIChkYXRhQXNTdHJpbmcpCisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlRGF0YSIpLCBk
YXRhQXNTdHJpbmcuZ2V0KCkpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgbm9ybWFsaXplSFRU
UFJlc3BvbnNlSGVhZGVyRmllbGRzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZmllbGRzKQorewor
ICAgIC8vIE5vcm1hbGl6ZSBoZWFkZXJzCisgICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5
KGZpZWxkcywgQ0ZTVFIoIkRhdGUiKSkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZp
ZWxkcywgQ0ZTVFIoIkRhdGUiKSwgQ0ZTVFIoIlN1biwgMTYgTm92IDIwMDggMTc6MDA6MDAgR01U
IikpOworICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJMYXN0
LU1vZGlmaWVkIikpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RS
KCJMYXN0LU1vZGlmaWVkIiksIENGU1RSKCJTdW4sIDE2IE5vdiAyMDA4IDE2OjU1OjAwIEdNVCIp
KTsKKyAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiRXRhZyIp
KSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiRXRhZyIpLCBD
RlNUUigiXCIzMDE5MjUtMjEtNDVjN2Q3MmQzZTc4MFwiIikpOworICAgIGlmIChDRkRpY3Rpb25h
cnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJTZXJ2ZXIiKSkpCisgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIlNlcnZlciIpLCBDRlNUUigiQXBhY2hlLzIuMi45
IChVbml4KSBtb2Rfc3NsLzIuMi45IE9wZW5TU0wvMC45LjdsIFBIUC81LjIuNiIpKTsKKworICAg
IC8vIFJlbW92ZSBoZWFkZXJzCisgICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUoZmllbGRzLCBD
RlNUUigiQ29ubmVjdGlvbiIpKTsKKyAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZShmaWVsZHMs
IENGU1RSKCJLZWVwLUFsaXZlIikpOworfQorCitzdGF0aWMgdm9pZCBub3JtYWxpemVXZWJSZXNv
dXJjZVVSTChDRk11dGFibGVTdHJpbmdSZWYgd2ViUmVzb3VyY2VVUkwpCit7CisgICAgc3RhdGlj
IENGSW5kZXggZmlsZVVybExlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKENGU1RSKCJmaWxlOi8v
IikpOworICAgIENGUmFuZ2UgbGF5b3V0VGVzdHNXZWJBcmNoaXZlUGF0aFJhbmdlID0gQ0ZTdHJp
bmdGaW5kKHdlYlJlc291cmNlVVJMLCBDRlNUUigiL0xheW91dFRlc3RzLyIpLCBrQ0ZDb21wYXJl
QmFja3dhcmRzKTsKKyAgICBpZiAobGF5b3V0VGVzdHNXZWJBcmNoaXZlUGF0aFJhbmdlLmxvY2F0
aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgQ0ZSYW5nZSBjdXJyZW50
V29ya2luZ0RpcmVjdG9yeVJhbmdlID0gQ0ZSYW5nZU1ha2UoZmlsZVVybExlbmd0aCwgbGF5b3V0
VGVzdHNXZWJBcmNoaXZlUGF0aFJhbmdlLmxvY2F0aW9uIC0gZmlsZVVybExlbmd0aCk7CisgICAg
Q0ZTdHJpbmdSZXBsYWNlKHdlYlJlc291cmNlVVJMLCBjdXJyZW50V29ya2luZ0RpcmVjdG9yeVJh
bmdlLCBDRlNUUigiIikpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVzb3VyY2VSZXNw
b25zZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb3BlcnR5TGlzdCkKK3sK
KyAgICBDRkRhdGFSZWYgcmVzcG9uc2VEYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJlc3BvbnNl
IikpKTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCisgICAgaWYg
KENGR2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZXNwb25zZShBZG9w
dENGLCBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpKTsK
KyAgICBpZiAoIXJlc3BvbnNlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGljdGlvbmFyeVJlZj4gcmVzcG9uc2VEaWN0aW9uYXJ5KEFkb3B0Q0YsIENGRGljdGlv
bmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworCisg
ICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIENGU3Ry
aW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxHZXRTdHJp
bmcoQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNwb25zZS5nZXQoKSkpKSk7CisgICAgbm9ybWFsaXpl
V2ViUmVzb3VyY2VVUkwodXJsU3RyaW5nLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJVUkwiKSwgdXJsU3RyaW5nLmdldCgp
KTsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IG1pbWVUeXBlU3RyaW5nKEFk
b3B0Q0YsIENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
Q0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkpOworICAgIGNvbnZlcnRN
SU1FVHlwZShtaW1lVHlwZVN0cmluZy5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiTUlNRVR5cGUiKSwgbWltZVR5cGVTdHJp
bmcuZ2V0KCkpOworCisgICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IENGVVJMUmVz
cG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKHJlc3BvbnNlLmdldCgpKTsKKyAgICBpZiAodGV4dEVu
Y29kaW5nTmFtZSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9u
YXJ5LmdldCgpLCBDRlNUUigidGV4dEVuY29kaW5nTmFtZSIpLCB0ZXh0RW5jb2RpbmdOYW1lKTsK
KworICAgIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBDRlVSTFJlc3BvbnNlR2V0RXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKHJlc3BvbnNlLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1i
ZXJSZWY+IGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlcihBZG9wdENGLCBDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5
LmdldCgpLCBDRlNUUigiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiksIGV4cGVjdGVkQ29udGVudExl
bmd0aE51bWJlci5nZXQoKSk7CisKKyAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2Fn
ZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpKSB7CisgICAg
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGFsbEhlYWRlcnMoQWRvcHRDRiwgQ0ZIVFRQ
TWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMoaHR0cE1lc3NhZ2UpKTsKKyAgICAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGFsbEhlYWRlckZpZWxkcyhBZG9wdENGLCBDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhbGxIZWFk
ZXJzLmdldCgpKSk7CisgICAgICAgIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxkcyhh
bGxIZWFkZXJGaWVsZHMuZ2V0KCkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNw
b25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhbGxIZWFkZXJGaWVsZHMiKSwgYWxsSGVhZGVy
RmllbGRzLmdldCgpKTsKKworICAgICAgICBDRkluZGV4IHN0YXR1c0NvZGUgPSBDRkhUVFBNZXNz
YWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKTsKKyAgICAgICAgUmV0YWluUHRy
PENGTnVtYmVyUmVmPiBzdGF0dXNDb2RlTnVtYmVyKEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmc3RhdHVzQ29kZSkpOwor
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENG
U1RSKCJzdGF0dXNDb2RlIiksIHN0YXR1c0NvZGVOdW1iZXIuZ2V0KCkpOworICAgIH0KKworICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJlc291cmNlUmVz
cG9uc2UiKSwgcmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpKTsKK30KKworc3RhdGljIENGQ29tcGFy
aXNvblJlc3VsdCBjb21wYXJlUmVzb3VyY2VVUkxzKGNvbnN0IHZvaWQgKnZhbDEsIGNvbnN0IHZv
aWQgKnZhbDIsIHZvaWQgKmNvbnRleHQpCit7CisgICAgQ0ZTdHJpbmdSZWYgdXJsMSA9IHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KHZhbDEpLCBDRlNUUigiV2ViUmVzb3VyY2VVUkwiKSkpOworICAgIENGU3Ry
aW5nUmVmIHVybDIgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPih2YWwyKSwgQ0ZTVFIoIldlYlJlc291cmNl
VVJMIikpKTsKKworICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUodXJsMSwgdXJsMiwga0NGQ29t
cGFyZUFuY2hvcmVkKTsKK30KKworQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFy
Y2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKK3sKKyAgICBDRkVycm9yUmVmIGVy
cm9yID0gMDsKKyAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxp
c3RCaW5hcnlGb3JtYXRfdjFfMDsKKworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPT0gMTA1MAorICAgIENGSW5kZXggYnl0ZXNDb3VudCA9IENGRGF0YUdldExlbmd0aCh3ZWJB
cmNoaXZlRGF0YSk7CisgICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gcmVhZFN0cmVhbShB
ZG9wdENGLCBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJBcmNoaXZlRGF0YSksIGJ5dGVzQ291bnQsIGtDRkFs
bG9jYXRvck51bGwpKTsKKyAgICBDRlJlYWRTdHJlYW1PcGVuKHJlYWRTdHJlYW0uZ2V0KCkpOwor
ICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0eUxpc3QoQWRvcHRD
RiwgKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVGcm9tU3RyZWFt
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlYWRTdHJlYW0uZ2V0KCksIGJ5dGVzQ291bnQsIGtDRlBy
b3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzQW5kTGVhdmVzLCAmZm9ybWF0LCAwKSk7CisgICAg
Q0ZSZWFkU3RyZWFtQ2xvc2UocmVhZFN0cmVhbS5nZXQoKSk7CisjZWxzZQorICAgIFJldGFpblB0
cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0eUxpc3QoQWRvcHRDRiwgKENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYpQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB3ZWJBcmNoaXZlRGF0YSwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNB
bmRMZWF2ZXMsICZmb3JtYXQsICZlcnJvcikpOworI2VuZGlmCisKKyAgICBpZiAoIXByb3BlcnR5
TGlzdCkgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gQ0ZFcnJvckNv
cHlEZXNjcmlwdGlvbihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGlu
ZyBkYXRhIHRvIHByb3BlcnR5IGxpc3QuIikpKTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyhBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKHJlc291cmNlcy5nZXQoKSwgcHJvcGVydHlMaXN0LmdldCgpKTsKKwor
ICAgIHdoaWxlIChDRkFycmF5R2V0Q291bnQocmVzb3VyY2VzLmdldCgpKSkgeworICAgICAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcmVzb3VyY2VQcm9wZXJ0eUxpc3QgPSAo
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc291cmNlcy5n
ZXQoKSwgMCk7CisgICAgICAgIENGQXJyYXlSZW1vdmVWYWx1ZUF0SW5kZXgocmVzb3VyY2VzLmdl
dCgpLCAwKTsKKworICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZSA9
IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlUHJv
cGVydHlMaXN0LmdldCgpLCBDRlNUUigiV2ViTWFpblJlc291cmNlIikpOworICAgICAgICBub3Jt
YWxpemVXZWJSZXNvdXJjZVVSTCgoQ0ZNdXRhYmxlU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKG1haW5SZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKKyAgICAgICAgY29u
dmVydFdlYlJlc291cmNlRGF0YVRvU3RyaW5nKG1haW5SZXNvdXJjZSk7CisKKyAgICAgICAgLy8g
QWRkIHN1YmZyYW1lQXJjaGl2ZXMgdG8gbGlzdCBmb3IgcHJvY2Vzc2luZworICAgICAgICBDRk11
dGFibGVBcnJheVJlZiBzdWJmcmFtZUFyY2hpdmVzID0gKENGTXV0YWJsZUFycmF5UmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgpLCBDRlNUUigiV2ViU3Vi
ZnJhbWVBcmNoaXZlcyIpKTsgLy8gV2ViU3ViZnJhbWVBcmNoaXZlc0tleSBpbiBXZWJBcmNoaXZl
Lm0KKyAgICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZXMpCisgICAgICAgICAgICBDRkFycmF5QXBw
ZW5kQXJyYXkocmVzb3VyY2VzLmdldCgpLCBzdWJmcmFtZUFyY2hpdmVzLCBDRlJhbmdlTWFrZSgw
LCBDRkFycmF5R2V0Q291bnQoc3ViZnJhbWVBcmNoaXZlcykpKTsKKworICAgICAgICBDRk11dGFi
bGVBcnJheVJlZiBzdWJyZXNvdXJjZXMgPSAoQ0ZNdXRhYmxlQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocmVzb3VyY2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJTdWJyZXNvdXJj
ZXMiKSk7IC8vIFdlYlN1YnJlc291cmNlc0tleSBpbiBXZWJBcmNoaXZlLm0KKyAgICAgICAgaWYg
KCFzdWJyZXNvdXJjZXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBDRkluZGV4
IHN1YnJlc291cmNlc0NvdW50ID0gQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNlcyk7CisgICAg
ICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHN1YnJlc291cmNlc0NvdW50OyArK2kpIHsKKyAg
ICAgICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3Qg
PSAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1YnJlc291
cmNlcywgaSk7CisgICAgICAgICAgICBub3JtYWxpemVXZWJSZXNvdXJjZVVSTCgoQ0ZNdXRhYmxl
U3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHN1YnJlc291cmNlUHJvcGVydHlMaXN0LCBD
RlNUUigiV2ViUmVzb3VyY2VVUkwiKSkpOworICAgICAgICAgICAgY29udmVydFdlYlJlc291cmNl
UmVzcG9uc2VUb0RpY3Rpb25hcnkoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QpOworICAgICAgICAg
ICAgY29udmVydFdlYlJlc291cmNlRGF0YVRvU3RyaW5nKHN1YnJlc291cmNlUHJvcGVydHlMaXN0
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNvcnQgdGhlIHN1YnJlc291cmNlcyBzbyB0aGV5
J3JlIGFsd2F5cyBpbiBhIHByZWRpY3RhYmxlIG9yZGVyIGZvciB0aGUgZHVtcAorICAgICAgICBD
RkFycmF5U29ydFZhbHVlcyhzdWJyZXNvdXJjZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRD
b3VudChzdWJyZXNvdXJjZXMpKSwgY29tcGFyZVJlc291cmNlVVJMcywgMCk7CisgICAgfQorCisg
ICAgZXJyb3IgPSAwOworCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAx
MDUwCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4geG1sRGF0YShBZG9wdENGLCBDRlByb3BlcnR5
TGlzdENyZWF0ZVhNTERhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJvcGVydHlMaXN0LmdldCgp
KSk7CisjZWxzZQorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHhtbERhdGEoQWRvcHRDRiwgQ0ZQ
cm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3BlcnR5TGlzdC5n
ZXQoKSwga0NGUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAsIDAsICZlcnJvcikpOworI2VuZGlm
CisKKyAgICBpZiAoIXhtbERhdGEpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9j
Y3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlzdCB0byBkYXRhLiIpKSk7CisgICAgfQorCisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB4bWxTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVh
dGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxEYXRh
LmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
U3RyaW5nUmVmPiBzdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCB4bWxTdHJpbmcuZ2V0KCkpKTsKKworICAgIC8vIFJlcGxhY2Ug
IkFwcGxlIENvbXB1dGVyIiB3aXRoICJBcHBsZSIgaW4gdGhlIERURCBkZWNsYXJhdGlvbi4KKyAg
ICBDRlN0cmluZ0ZpbmRBbmRSZXBsYWNlKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIi0vL0FwcGxlIENv
bXB1dGVyLy8iKSwgQ0ZTVFIoIi0vL0FwcGxlLy8iKSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdH
ZXRMZW5ndGgoc3RyaW5nLmdldCgpKSksIDApOworCisgICAgcmV0dXJuIHN0cmluZy5sZWFrUmVm
KCk7Cit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3Vw
cG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0LmgJKHJldmlzaW9uIDApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2Nm
L1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRf
aAorI2RlZmluZSBXZWJBcmNoaXZlRHVtcFN1cHBvcnRfaAorCisjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUmVzcG9uc2Uq
IENGVVJMUmVzcG9uc2VSZWY7CisKK0NGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJB
cmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpOworCisvLyBNQVJLOiAtCisvLyBN
QVJLOiBQbGF0Zm9ybS1zcGVjaWZpYyBtZXRob2RzCisKK0NGVVJMUmVzcG9uc2VSZWYgY3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSk7CitD
RkFycmF5UmVmIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7CisKKyNlbmRpZiAvKiBXZWJB
cmNoaXZlRHVtcFN1cHBvcnRfaCAqLwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbQkocmV2aXNpb24gMCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgiCisKKyNpbXBvcnQgPENGTmV0d29y
ay9DRkhUVFBNZXNzYWdlLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPFdlYktpdC9XZWJIVE1MUmVwcmVzZW50YXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKworZXh0ZXJuICJDIiB7CisKK2VudW0gQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kg
eworICBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkID0gMCwKKyAga0NGVVJMQ2FjaGVTdG9yYWdl
QWxsb3dlZEluTWVtb3J5T25seSA9IDEsCisgIGtDRlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQg
PSAyCit9OwordHlwZWRlZiBlbnVtIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5IENGVVJMQ2FjaGVT
dG9yYWdlUG9saWN5OworCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSFRUUFZlcnNpb24x
XzE7CisKK0NGVVJMUmVzcG9uc2VSZWYgQ0ZVUkxSZXNwb25zZUNyZWF0ZShDRkFsbG9jYXRvclJl
ZiBhbGxvYywgQ0ZVUkxSZWYgVVJMLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwgU0ludDY0IGV4cGVj
dGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSwgQ0ZVUkxDYWNo
ZVN0b3JhZ2VQb2xpY3kgcmVjb21tZW5kZWRQb2xpY3kpOworQ0ZVUkxSZXNwb25zZVJlZiBDRlVS
TFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZV
UkxSZWYgVVJMLCBDRkhUVFBNZXNzYWdlUmVmIGh0dHBSZXNwb25zZSwgQ0ZVUkxDYWNoZVN0b3Jh
Z2VQb2xpY3kgcmVjb21tZW5kZWRQb2xpY3kpOwordm9pZCBDRlVSTFJlc3BvbnNlU2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFNJbnQ2NCBsZW5ndGgp
Owordm9pZCBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25z
ZSwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUpOworCit9CisKK0NGVVJMUmVzcG9uc2VSZWYgY3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKK3sK
KyAgICAvLyBEZWNvZGUgTlNVUkxSZXNwb25zZQorICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNo
aXZlcj4gdW5hcmNoaXZlcihBZG9wdE5TLCBbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0
Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilyZXNwb25zZURhdGFdKTsKKyAgICBOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSA9IFt1bmFyY2hpdmVyLmdldCgpIGRlY29kZU9iamVjdEZvcktleTpA
IldlYlJlc291cmNlUmVzcG9uc2UiXTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJS
ZXNvdXJjZS5tCisgICAgW3VuYXJjaGl2ZXIuZ2V0KCkgZmluaXNoRGVjb2RpbmddOworCisgICAg
aWYgKCFbcmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KENGVVJMUmVmKVtyZXNwb25zZSBVUkxdLCAoQ0ZTdHJpbmdSZWYpW3Jlc3BvbnNlIE1JTUVUeXBl
XSwgW3Jlc3BvbnNlIGV4cGVjdGVkQ29udGVudExlbmd0aF0sIChDRlN0cmluZ1JlZilbcmVzcG9u
c2UgdGV4dEVuY29kaW5nTmFtZV0sIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOworCisgICAg
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJl
c3BvbnNlOworCisgICAgLy8gTlNVUkxSZXNwb25zZSBpcyBub3QgdG9sbC1mcmVlIGJyaWRnZWQg
dG8gQ0ZVUkxSZXNwb25zZS4KKyAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gaHR0cE1l
c3NhZ2UoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV0sIDAsIGtDRkhUVFBWZXJzaW9uMV8xKSk7
CisKKyAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtodHRwUmVzcG9uc2UgYWxsSGVh
ZGVyRmllbGRzXTsKKyAgICBmb3IgKE5TU3RyaW5nICpoZWFkZXJGaWVsZCBpbiBbaGVhZGVyRmll
bGRzIGtleUVudW1lcmF0b3JdKQorICAgICAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRW
YWx1ZShodHRwTWVzc2FnZS5nZXQoKSwgKENGU3RyaW5nUmVmKWhlYWRlckZpZWxkLCAoQ0ZTdHJp
bmdSZWYpW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6aGVhZGVyRmllbGRdKTsKKworICAgIHJl
dHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoQ0ZVUkxSZWYpW3Jlc3BvbnNlIFVSTF0sIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxD
YWNoZVN0b3JhZ2VBbGxvd2VkKTsKK30KKworQ0ZBcnJheVJlZiBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcygpCit7CisgICAgcmV0dXJuIChDRkFycmF5UmVmKVtXZWJIVE1MUmVwcmVzZW50YXRp
b24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200970</attachid>
            <date>2013-05-07 13:55:00 -0700</date>
            <delta_ts>2013-05-07 14:30:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42324-20130507135406.patch</filename>
            <type>text/plain</type>
            <size>31513</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0OTY4NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDEzLTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRlc3RSdW5uZXIuZHVt
cERPTUFzV2ViQXJjaGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDIzMjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgxOTM2MzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAg
ICBBZGRlZCBkdW1wRE9NQXNXZWJBcmNoaXZlIEphdmFTY3JpcHQgZnVuY3Rpb24gdG8gYmUgY2Fs
bGVkIGJ5IHRlc3QgY2FzZXMuCisgICAgICAgICogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICBBZGRlZCBkdW1wRE9N
QXNXZWJBcmNoaXZlIGNvZGUgdGhhdCBpcyBjYWxsZWQgd2hlbiBkdW1waW5nLiAgICAgICAgCisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCk6CisgICAgICAgIE1hZGUgRE9N
QXNXZWJBcmNoaXZlIGNhc2Ugd2hlbiBkdW1waW5nIGNhbGwgZHVtcERPTUFzV2ViQXJjaGl2ZS4K
KyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5oOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgQWRk
ZWQgZHVtcERPTUFzV2ViQXJjaGl2ZSBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisgICAgICAgIEFkZGVkIGR1bXBET01B
c1dlYkFyY2hpdmUgSlMgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBzZXRzIG1fd2hhdFRvRHVtcCB0
byBET01Bc1dlYkFyY2hpdmUuCisgICAgICAgICogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIFdl
YkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAsIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oLCBXZWJBcmNo
aXZlRHVtcFN1cHBvcnRNYWMubW0gdG8gcHJvamVjdC4KKyAgICAgICAgKiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL2NmOiBBZGRlZC4KKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2Nm
L1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA6IEFkZGVkLgorICAgICAgICBDb3BpZWQgZnJvbSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jZiBmb3IgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVE
YXRhIGFuZCBvdGhlciBmdW5jdGlvbnMgaXQgdXNlcy4KKyAgICAgICAgKGNvbnZlcnRNSU1FVHlw
ZSk6CisgICAgICAgIChjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcpOgorICAgICAgICAo
bm9ybWFsaXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKToKKyAgICAgICAgKG5vcm1hbGl6ZVdl
YlJlc291cmNlVVJMKToKKyAgICAgICAgKGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0
aW9uYXJ5KToKKyAgICAgICAgKGNvbXBhcmVSZXNvdXJjZVVSTHMpOgorICAgICAgICAoY3JlYXRl
WE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOiBBZGRlZC4KKyAgICAgICAgQ29waWVk
IGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YgZm9yIHVzZWQgc3ltYm9sIGRlY2xhcmF0aW9u
cy4KKyAgICAgICAgKiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJBcmNoaXZlRHVtcFN1
cHBvcnRNYWMubW06IEFkZGVkLgorICAgICAgICBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMgZm9yIHVzZWQgZnVuY3Rpb25zLgorICAgICAgICAoY3JlYXRlQ0ZVUkxSZXNwb25z
ZUZyb21SZXNwb25zZURhdGEpOgorICAgICAgICAoc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMp
OgorCiAyMDEzLTA1LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcGRhdGVkIHN0eWxlIG9mIFdlYkFyY2hpdmVEdW1wU3VwcG9ydCBiZWZv
cmUgcHV0dGluZyBpdCBpbnRvIFdlYktpdFRlc3RSdW5uZXIuCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCShyZXZpc2lvbiAxNDk2ODcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAorI2lmIFVTRShDRikKKyNpbmNsdWRlICJXZWJBcmNo
aXZlRHVtcFN1cHBvcnQuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAi
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKICNlbmRpZgpAQCAtODM3LDYgKzg0MSwxNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcEFsbEZyYW1lc1RlCiAgICAgZHVtcERlc2NlbmRh
bnRGcmFtZXNUZXh0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKIH0KIAorCit2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBT
dHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQoreworI2lmIFVTRShDRikKKyAgICBXS0RhdGFS
ZWYgd2tEYXRhID0gV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKGZyYW1lKTsKKyAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBXS0RhdGFH
ZXRCeXRlcyh3a0RhdGEpLCBXS0RhdGFHZXRTaXplKHdrRGF0YSkpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gYWRvcHRDRihjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJj
aGl2ZURhdGEoY2ZEYXRhLmdldCgpKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoY2ZTdHJp
bmcuZ2V0KCkpOworI2VuZGlmCit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wKCkK
IHsKICAgICBBU1NFUlQoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmcoKSk7
CkBAIC04NjgsNiArODgzLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXAoKQogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFRlc3RSdW5uZXI6OkF1ZGlvOgogICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRlc3RSdW5uZXI6OkRPTUFzV2ViQXJjaGl2ZToKKyAgICAgICAgZHVtcERPTUFz
V2ViQXJjaGl2ZShmcmFtZSwgc3RyaW5nQnVpbGRlcik7CisgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5zaG91bGRE
dW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAko
cmV2aXNpb24gMTQ5Njg3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2Niw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGR1bXBBbGxGcmFtZXNUZXh0KFdURjo6U3RyaW5nQnVpbGRl
ciYpOwogICAgIHZvaWQgZHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zKFdURjo6U3RyaW5nQnVp
bGRlciYpOworICAgIHZvaWQgZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmLCBX
VEY6OlN0cmluZ0J1aWxkZXImKTsKIAogICAgIHZvaWQgcGxhdGZvcm1EaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24g
MTQ5Njg3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZHVtcFdpbGxDYWNoZVJlc3BvbnNlKCkgeyBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZSA9IHRydWU7
IH0KICAgICB2b2lkIGR1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MoKSB7IG1f
ZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyA9IHRydWU7IH0KICAgICB2b2lk
IGR1bXBEYXRhYmFzZUNhbGxiYWNrcygpIHsgbV9kdW1wRGF0YWJhc2VDYWxsYmFja3MgPSB0cnVl
OyB9CisgICAgdm9pZCBkdW1wRE9NQXNXZWJBcmNoaXZlKCkgeyBtX3doYXRUb0R1bXAgPSBET01B
c1dlYkFyY2hpdmU7IH0KIAogICAgIHZvaWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNr
cyhib29sIHZhbHVlKSB7IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IHZhbHVlOyB9CiAgICAg
dm9pZCBzZXRTaG91bGREdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKGJvb2wgdmFsdWUpIHsg
bV9kdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrID0gdmFsdWU7IH0KQEAgLTE2Myw3ICsxNjQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gQXVkaW8gdGVzdGluZy4KICAgICB2b2lkIHNldEF1ZGlvUmVz
dWx0KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBkYXRhKTsKIAotICAgIGVudW0gV2hhdFRvRHVt
cCB7IFJlbmRlclRyZWUsIE1haW5GcmFtZVRleHQsIEFsbEZyYW1lc1RleHQsIEF1ZGlvIH07Cisg
ICAgZW51bSBXaGF0VG9EdW1wIHsgUmVuZGVyVHJlZSwgTWFpbkZyYW1lVGV4dCwgQWxsRnJhbWVz
VGV4dCwgQXVkaW8sIERPTUFzV2ViQXJjaGl2ZSB9OwogICAgIFdoYXRUb0R1bXAgd2hhdFRvRHVt
cCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hhdFRvRHVtcDsgfQogCiAgICAgYm9vbCBzaG91bGREdW1w
QWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZER1bXBBbGxG
cmFtZVNjcm9sbFBvc2l0aW9uczsgfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCShy
ZXZpc2lvbiAxNDk2ODcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBA
IGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIGR1bXBXaWxsQ2FjaGVSZXNwb25zZSgp
OwogICAgIHZvaWQgZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpOwogICAg
IHZvaWQgZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCk7CisgICAgdm9pZCBkdW1wRE9NQXNXZWJBcmNo
aXZlKCk7CiAKICAgICAvLyBTcGVjaWFsIG9wdGlvbnMuCiAgICAgdm9pZCBrZWVwV2ViSGlzdG9y
eSgpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0
OTY4NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4IEBACiAJCTU2
NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY0MUUyQ0UxNDMzNUU5
NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTU2NjRBNDlB
MTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NjRBNDk4MTQzMjYzODQwMDg4ODFC
RSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTY3MEI4MjgxMzg2RkNBNTAw
MkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUgLyogRXZlbnRTZW5k
ZXJQcm94eS5tbSAqLzsgfTsKKwkJNUM0NUMzMEYxNzM5OEUyOTAwNzk3MTRFIC8qIFdlYkFyY2hp
dmVEdW1wU3VwcG9ydE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDNDVDMzBFMTczOThFMjkwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBv
cnRNYWMubW0gKi87IH07CisJCTVDNDVDMzEzMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZl
RHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM0NUMzMTExNzM5OEU0ODAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5j
cHAgKi87IH07CiAJCTY1MTBBNzgyMTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc3MTFF
QzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi87IH07CiAJCTY1MTBBNzg0MTFFQzY0Mzgw
MDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3NzkxMUVDNjQzODAwNDEwODY3IC8q
IFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovOyB9OwogCQk2NTEwQTc4NTExRUM2NDM4MDA0
MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzdBMTFFQzY0MzgwMDQxMDg2NyAvKiBX
ZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLzsgfTsKQEAgLTE0OSw2ICsxNTEsOSBAQAogCQk1
NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHkubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4MzkxM0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1
IC8qIEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0VGVzdFJ1bm5lci9KU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTVDNDVDMzBFMTczOThFMjkwMDc5NzE0RSAv
KiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW07IHBhdGggPSBtYWMvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTVDNDVDMzExMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmNwcDsgcGF0aCA9IGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKKwkJNUM0NUMzMTIxNzM5OEU0ODAwNzk3MTRFIC8qIFdlYkFyY2hpdmVE
dW1wU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBcmNoaXZl
RHVtcFN1cHBvcnQuaDsgcGF0aCA9IGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTY1MTBBNzc3MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVN
X19fXy5UVEYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmaWxlOyBuYW1lID0gIkFIRU1fX19fLlRURiI7IHBhdGggPSAiZm9udHMvQUhFTV9fX18uVFRG
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3NzkxMUVDNjQzODAwNDEwODY3
IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXIx
MDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTBBNzdBMTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRX
ZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZjsgcGF0
aCA9IGZvbnRzL1dlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzI3LDkgKzMzMiwxOSBAQAogCQkJbmFtZSA9IEFjY2Vzc2liaWxpdHk7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1QzQ1QzMxMDE3Mzk4RTM3MDA3OTcx
NEUgLyogY2YgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTVDNDVDMzExMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICov
LAorCQkJCTVDNDVDMzEyMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQu
aCAqLywKKwkJCSk7CisJCQluYW1lID0gY2Y7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk2NUVCODU5RTExRUM2N0NDMDAzNEQzMDAgLyogbWFjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1QzQ1QzMwRTE3Mzk4RTI5MDA3OTcxNEUg
LyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICovLAogCQkJCTY1RUI4NTlGMTFFQzY3Q0Mw
MDM0RDMwMCAvKiBBY3RpdmF0ZUZvbnRzLm1tICovLAogCQkJCUJDOERBRDc3MTMxNkQ3QjkwMEVD
OTZGQyAvKiBJbmplY3RlZEJ1bmRsZU1hYy5tbSAqLywKIAkJCQkwRkFGNjdFRTE2MEQ2QzEwMDA3
N0NCMkIgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tICovLApAQCAtMzU3LDYgKzM3Miw3IEBA
CiAJCUJDMjUxODM1MTFEMTU3MUQwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM0NUMzMTAxNzM5OEUzNzAw
Nzk3MTRFIC8qIGNmICovLAogCQkJCUJDOTUyQzBBMTFGM0I5MzkwMDMzOThCNCAvKiBCaW5kaW5n
cyAqLywKIAkJCQlCQzE0RTRFMDEyMEUwMkY5MDA4MjZDMEMgLyogQ29udHJvbGxlcnMgKi8sCiAJ
CQkJQkM5NTJEM0ExMUYzQkYxRjAwMzM5OEI0IC8qIERlcml2ZWQgU291cmNlcyAqLywKQEAgLTUx
NSw2ICs1MzEsOCBAQAogLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCiAJCTA4RkI3Nzkz
RkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFBy
b2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJfTsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSAxREVCOTI3ODA4NzMzREQ0MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJXZWJLaXRUZXN0UnVubmVyIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlW
ZXJzaW9uID0gIlhjb2RlIDMuMSI7CiAJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CkBA
IC02MjYsNiArNjQ0LDggQEAKIAkJCQk1NjQxRTJEMDE0MzM1RTk1MDA4MzA3RTUgLyogSlNUZXh0
SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOTUyQzBEMTFGM0I5NjUw
MDMzOThCNCAvKiBKU1dyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDOTk4MTgxMUQz
RjUxRTAwMTdCQ0EyIC8qIFRlc3RSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUM0NUMz
MEYxNzM5OEUyOTAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTVDNDVDMzEzMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1
cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBDRTcyMEIxMjQ3QzkzMzAwQkMwRUM0IC8q
IFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NjY0QTQ5QTE0MzI2Mzg0MDA4
ODgxQkUgLyogVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7Cklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1
cHBvcnQuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJB
cmNoaXZlRHVtcFN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCIKKworI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworZXh0ZXJuICJDIiB7CisKK0NGVVJMUmVmIENGVVJMUmVzcG9u
c2VHZXRVUkwoQ0ZVUkxSZXNwb25zZVJlZik7CitDRlN0cmluZ1JlZiBDRlVSTFJlc3BvbnNlR2V0
TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZik7CitDRlN0cmluZ1JlZiBDRlVSTFJlc3BvbnNlR2V0
VGV4dEVuY29kaW5nTmFtZShDRlVSTFJlc3BvbnNlUmVmKTsKK1NJbnQ2NCBDRlVSTFJlc3BvbnNl
R2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYpOworQ0ZIVFRQTWVzc2Fn
ZVJlZiBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYpOworCitD
RlR5cGVJRCBDRlVSTFJlc3BvbnNlR2V0VHlwZUlEKHZvaWQpOworCit9CisKK3N0YXRpYyB2b2lk
IGNvbnZlcnRNSU1FVHlwZShDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUpCit7CisjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCisgICAgLy8gV29ya2Fyb3VuZCBm
b3IgPHJkYXI6Ly9wcm9ibGVtLzU1Mzk4MjQ+IG9uIExlb3BhcmQKKyAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKG1pbWVUeXBlLCBDRlNUUigidGV4dC94bWwiKSwga0NGQ29tcGFyZUFuY2hvcmVkIHwg
a0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAg
IENGU3RyaW5nUmVwbGFjZUFsbChtaW1lVHlwZSwgQ0ZTVFIoImFwcGxpY2F0aW9uL3htbCIpKTsK
KyNlbmRpZgorICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MjM0MzE4PiB3
aXRoIERhc2hjb2RlIDIuMAorICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobWltZVR5cGUsIENGU1RS
KCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSwga0NGQ29tcGFyZUFuY2hvcmVkIHwga0NGQ29t
cGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisgICAgICAgIENGU3Ry
aW5nUmVwbGFjZUFsbChtaW1lVHlwZSwgQ0ZTVFIoInRleHQvamF2YXNjcmlwdCIpKTsKK30KKwor
c3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlRGF0YVRvU3RyaW5nKENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgcmVzb3VyY2UpCit7CisgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBlID0g
KENGTXV0YWJsZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIo
IldlYlJlc291cmNlTUlNRVR5cGUiKSk7CisgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobWltZVR5cGUs
IENGTG9jYWxlR2V0U3lzdGVtKCkpOworICAgIGNvbnZlcnRNSU1FVHlwZShtaW1lVHlwZSk7CisK
KyAgICBDRkFycmF5UmVmIHN1cHBvcnRlZE1JTUVUeXBlcyA9IHN1cHBvcnRlZE5vbkltYWdlTUlN
RVR5cGVzKCk7CisgICAgaWYgKENGU3RyaW5nSGFzUHJlZml4KG1pbWVUeXBlLCBDRlNUUigidGV4
dC8iKSkgfHwgQ0ZBcnJheUNvbnRhaW5zVmFsdWUoc3VwcG9ydGVkTUlNRVR5cGVzLCBDRlJhbmdl
TWFrZSgwLCBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVkTUlNRVR5cGVzKSksIG1pbWVUeXBlKSkg
eworICAgICAgICBDRlN0cmluZ1JlZiB0ZXh0RW5jb2RpbmdOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3Vy
Y2VUZXh0RW5jb2RpbmdOYW1lIikpKTsKKyAgICAgICAgQ0ZTdHJpbmdFbmNvZGluZyBzdHJpbmdF
bmNvZGluZzsKKyAgICAgICAgaWYgKHRleHRFbmNvZGluZ05hbWUgJiYgQ0ZTdHJpbmdHZXRMZW5n
dGgodGV4dEVuY29kaW5nTmFtZSkpCisgICAgICAgICAgICBzdHJpbmdFbmNvZGluZyA9IENGU3Ry
aW5nQ29udmVydElBTkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0cmluZ0VuY29kaW5nID0ga0NGU3RyaW5nRW5jb2Rp
bmdVVEY4OworCisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlRGF0YSIp
KSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGF0YUFzU3RyaW5nKEFkb3B0Q0Ys
IENGU3RyaW5nQ3JlYXRlRnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZGF0YSwgc3RyaW5nRW5jb2RpbmcpKTsKKyAgICAgICAgaWYgKGRhdGFBc1N0cmluZykK
KyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVz
b3VyY2VEYXRhIiksIGRhdGFBc1N0cmluZy5nZXQoKSk7CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCBub3JtYWxpemVIVFRQUmVzcG9uc2VIZWFkZXJGaWVsZHMoQ0ZNdXRhYmxlRGljdGlvbmFyeVJl
ZiBmaWVsZHMpCit7CisgICAgLy8gTm9ybWFsaXplIGhlYWRlcnMKKyAgICBpZiAoQ0ZEaWN0aW9u
YXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiRGF0ZSIpKSkKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiRGF0ZSIpLCBDRlNUUigiU3VuLCAxNiBOb3YgMjAw
OCAxNzowMDowMCBHTVQiKSk7CisgICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxk
cywgQ0ZTVFIoIkxhc3QtTW9kaWZpZWQiKSkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGZpZWxkcywgQ0ZTVFIoIkxhc3QtTW9kaWZpZWQiKSwgQ0ZTVFIoIlN1biwgMTYgTm92IDIwMDgg
MTY6NTU6MDAgR01UIikpOworICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMs
IENGU1RSKCJFdGFnIikpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENG
U1RSKCJFdGFnIiksIENGU1RSKCJcIjMwMTkyNS0yMS00NWM3ZDcyZDNlNzgwXCIiKSk7CisgICAg
aWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIlNlcnZlciIpKSkKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiU2VydmVyIiksIENGU1RS
KCJBcGFjaGUvMi4yLjkgKFVuaXgpIG1vZF9zc2wvMi4yLjkgT3BlblNTTC8wLjkuN2wgUEhQLzUu
Mi42IikpOworCisgICAgLy8gUmVtb3ZlIGhlYWRlcnMKKyAgICBDRkRpY3Rpb25hcnlSZW1vdmVW
YWx1ZShmaWVsZHMsIENGU1RSKCJDb25uZWN0aW9uIikpOworICAgIENGRGljdGlvbmFyeVJlbW92
ZVZhbHVlKGZpZWxkcywgQ0ZTVFIoIktlZXAtQWxpdmUiKSk7Cit9CisKK3N0YXRpYyB2b2lkIG5v
cm1hbGl6ZVdlYlJlc291cmNlVVJMKENGTXV0YWJsZVN0cmluZ1JlZiB3ZWJSZXNvdXJjZVVSTCkK
K3sKKyAgICBzdGF0aWMgQ0ZJbmRleCBmaWxlVXJsTGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgo
Q0ZTVFIoImZpbGU6Ly8iKSk7CisgICAgQ0ZSYW5nZSBsYXlvdXRUZXN0c1dlYkFyY2hpdmVQYXRo
UmFuZ2UgPSBDRlN0cmluZ0ZpbmQod2ViUmVzb3VyY2VVUkwsIENGU1RSKCIvTGF5b3V0VGVzdHMv
IiksIGtDRkNvbXBhcmVCYWNrd2FyZHMpOworICAgIGlmIChsYXlvdXRUZXN0c1dlYkFyY2hpdmVQ
YXRoUmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICBD
RlJhbmdlIGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UmFuZ2UgPSBDRlJhbmdlTWFrZShmaWxlVXJs
TGVuZ3RoLCBsYXlvdXRUZXN0c1dlYkFyY2hpdmVQYXRoUmFuZ2UubG9jYXRpb24gLSBmaWxlVXJs
TGVuZ3RoKTsKKyAgICBDRlN0cmluZ1JlcGxhY2Uod2ViUmVzb3VyY2VVUkwsIGN1cnJlbnRXb3Jr
aW5nRGlyZWN0b3J5UmFuZ2UsIENGU1RSKCIiKSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnRX
ZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJv
cGVydHlMaXN0KQoreworICAgIENGRGF0YVJlZiByZXNwb25zZURhdGEgPSBzdGF0aWNfY2FzdDxD
RkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJl
c291cmNlUmVzcG9uc2UiKSkpOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291
cmNlLm0KKyAgICBpZiAoQ0ZHZXRUeXBlSUQocmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRUeXBl
SUQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+
IHJlc3BvbnNlKEFkb3B0Q0YsIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJl
c3BvbnNlRGF0YSkpOworICAgIGlmICghcmVzcG9uc2UpCisgICAgICAgIHJldHVybjsKKworICAg
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNwb25zZURpY3Rpb25hcnkoQWRv
cHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiB1cmxTdHJpbmco
QWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBDRlVSTEdldFN0cmluZyhDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNlLmdldCgpKSkpKTsK
KyAgICBub3JtYWxpemVXZWJSZXNvdXJjZVVSTCh1cmxTdHJpbmcuZ2V0KCkpOworICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIlVSTCIpLCB1
cmxTdHJpbmcuZ2V0KCkpOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gbWlt
ZVR5cGVTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9uc2UuZ2V0KCkpKSk7
CisgICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlU3RyaW5nLmdldCgpKTsKKyAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJNSU1FVHlwZSIp
LCBtaW1lVHlwZVN0cmluZy5nZXQoKSk7CisKKyAgICBDRlN0cmluZ1JlZiB0ZXh0RW5jb2RpbmdO
YW1lID0gQ0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05hbWUocmVzcG9uc2UuZ2V0KCkpOwor
ICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShy
ZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ0ZXh0RW5jb2RpbmdOYW1lIiksIHRleHRF
bmNvZGluZ05hbWUpOworCisgICAgU0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCA9IENGVVJM
UmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgocmVzcG9uc2UuZ2V0KCkpOworICAgIFJl
dGFpblB0cjxDRk51bWJlclJlZj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyKEFkb3B0Q0Ys
IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUs
ICZleHBlY3RlZENvbnRlbnRMZW5ndGgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNw
b25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBlY3RlZENvbnRlbnRMZW5ndGgiKSwgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyLmdldCgpKTsKKworICAgIGlmIChDRkhUVFBNZXNzYWdl
UmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShyZXNwb25zZS5n
ZXQoKSkpIHsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVycyhB
ZG9wdENGLCBDRkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhodHRwTWVzc2FnZSkpOwor
ICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVyRmllbGRz
KEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsKKyAgICAgICAgbm9ybWFsaXplSFRUUFJlc3BvbnNl
SGVhZGVyRmllbGRzKGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7CisgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImFsbEhlYWRlckZpZWxk
cyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOworCisgICAgICAgIENGSW5kZXggc3RhdHVzQ29k
ZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpOworICAg
ICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN0YXR1c0NvZGVOdW1iZXIoQWRvcHRDRiwgQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZz
dGF0dXNDb2RlKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlv
bmFyeS5nZXQoKSwgQ0ZTVFIoInN0YXR1c0NvZGUiKSwgc3RhdHVzQ29kZU51bWJlci5nZXQoKSk7
CisgICAgfQorCisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LCBDRlNUUigi
V2ViUmVzb3VyY2VSZXNwb25zZSIpLCByZXNwb25zZURpY3Rpb25hcnkuZ2V0KCkpOworfQorCitz
dGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVSZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAq
dmFsMSwgY29uc3Qgdm9pZCAqdmFsMiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBDRlN0cmluZ1Jl
ZiB1cmwxID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4odmFsMSksIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIp
KSk7CisgICAgQ0ZTdHJpbmdSZWYgdXJsMiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHZhbDIpLCBDRlNU
UigiV2ViUmVzb3VyY2VVUkwiKSkpOworCisgICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZSh1cmwx
LCB1cmwyLCBrQ0ZDb21wYXJlQW5jaG9yZWQpOworfQorCitDRlN0cmluZ1JlZiBjcmVhdGVYTUxT
dHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQoreworICAg
IENGRXJyb3JSZWYgZXJyb3IgPSAwOworICAgIENGUHJvcGVydHlMaXN0Rm9ybWF0IGZvcm1hdCA9
IGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wOworCisjaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA9PSAxMDUwCisgICAgQ0ZJbmRleCBieXRlc0NvdW50ID0gQ0ZEYXRh
R2V0TGVuZ3RoKHdlYkFyY2hpdmVEYXRhKTsKKyAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVm
PiByZWFkU3RyZWFtKEFkb3B0Q0YsIENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkRhdGFHZXRCeXRlUHRyKHdlYkFyY2hpdmVEYXRhKSwgYnl0
ZXNDb3VudCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIENGUmVhZFN0cmVhbU9wZW4ocmVhZFN0
cmVhbS5nZXQoKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHByb3Bl
cnR5TGlzdChBZG9wdENGLCAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENy
ZWF0ZUZyb21TdHJlYW0oa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVhZFN0cmVhbS5nZXQoKSwgYnl0
ZXNDb3VudCwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZmb3Jt
YXQsIDApKTsKKyAgICBDRlJlYWRTdHJlYW1DbG9zZShyZWFkU3RyZWFtLmdldCgpKTsKKyNlbHNl
CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHByb3BlcnR5TGlzdChBZG9w
dENGLCAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRh
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9wZXJ0eUxpc3RNdXRh
YmxlQ29udGFpbmVyc0FuZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7CisjZW5kaWYKKworICAg
IGlmICghcHJvcGVydHlMaXN0KSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJl
dHVybiBDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1
cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlzdC4iKSkpOworICAgIH0KKworICAg
IFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gcmVzb3VyY2VzKEFkb3B0Q0YsIENGQXJyYXlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpKTsKKyAgICBDRkFycmF5QXBwZW5kVmFsdWUocmVzb3VyY2VzLmdldCgpLCBwcm9wZXJ0eUxp
c3QuZ2V0KCkpOworCisgICAgd2hpbGUgKENGQXJyYXlHZXRDb3VudChyZXNvdXJjZXMuZ2V0KCkp
KSB7CisgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNvdXJjZVBy
b3BlcnR5TGlzdCA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgocmVzb3VyY2VzLmdldCgpLCAwKTsKKyAgICAgICAgQ0ZBcnJheVJlbW92ZVZhbHVlQXRJbmRl
eChyZXNvdXJjZXMuZ2V0KCksIDApOworCisgICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
bWFpblJlc291cmNlID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocmVzb3VyY2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJNYWluUmVzb3VyY2UiKSk7
CisgICAgICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFibGVTdHJpbmdSZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUobWFpblJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VVUkwiKSkp
OworICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcobWFpblJlc291cmNlKTsK
KworICAgICAgICAvLyBBZGQgc3ViZnJhbWVBcmNoaXZlcyB0byBsaXN0IGZvciBwcm9jZXNzaW5n
CisgICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHN1YmZyYW1lQXJjaGl2ZXMgPSAoQ0ZNdXRhYmxl
QXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9wZXJ0eUxpc3QuZ2V0KCks
IENGU1RSKCJXZWJTdWJmcmFtZUFyY2hpdmVzIikpOyAvLyBXZWJTdWJmcmFtZUFyY2hpdmVzS2V5
IGluIFdlYkFyY2hpdmUubQorICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlcykKKyAgICAgICAg
ICAgIENGQXJyYXlBcHBlbmRBcnJheShyZXNvdXJjZXMuZ2V0KCksIHN1YmZyYW1lQXJjaGl2ZXMs
IENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3VudChzdWJmcmFtZUFyY2hpdmVzKSkpOworCisg
ICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHN1YnJlc291cmNlcyA9IChDRk11dGFibGVBcnJheVJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIo
IldlYlN1YnJlc291cmNlcyIpKTsgLy8gV2ViU3VicmVzb3VyY2VzS2V5IGluIFdlYkFyY2hpdmUu
bQorICAgICAgICBpZiAoIXN1YnJlc291cmNlcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIENGSW5kZXggc3VicmVzb3VyY2VzQ291bnQgPSBDRkFycmF5R2V0Q291bnQoc3VicmVz
b3VyY2VzKTsKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc3VicmVzb3VyY2VzQ291
bnQ7ICsraSkgeworICAgICAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdWJyZXNvdXJj
ZVByb3BlcnR5TGlzdCA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgoc3VicmVzb3VyY2VzLCBpKTsKKyAgICAgICAgICAgIG5vcm1hbGl6ZVdlYlJlc291cmNl
VVJMKChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3VicmVzb3VyY2VQ
cm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7CisgICAgICAgICAgICBjb252
ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeShzdWJyZXNvdXJjZVByb3BlcnR5TGlz
dCk7CisgICAgICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcoc3VicmVzb3Vy
Y2VQcm9wZXJ0eUxpc3QpOworICAgICAgICB9CisKKyAgICAgICAgLy8gU29ydCB0aGUgc3VicmVz
b3VyY2VzIHNvIHRoZXkncmUgYWx3YXlzIGluIGEgcHJlZGljdGFibGUgb3JkZXIgZm9yIHRoZSBk
dW1wCisgICAgICAgIENGQXJyYXlTb3J0VmFsdWVzKHN1YnJlc291cmNlcywgQ0ZSYW5nZU1ha2Uo
MCwgQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNlcykpLCBjb21wYXJlUmVzb3VyY2VVUkxzLCAw
KTsKKyAgICB9CisKKyAgICBlcnJvciA9IDA7CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID09IDEwNTAKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB4bWxEYXRhKEFkb3B0
Q0YsIENGUHJvcGVydHlMaXN0Q3JlYXRlWE1MRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9w
ZXJ0eUxpc3QuZ2V0KCkpKTsKKyNlbHNlCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4geG1sRGF0
YShBZG9wdENGLCBDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cHJvcGVydHlMaXN0LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCwgMCwgJmVy
cm9yKSk7CisjZW5kaWYKKworICAgIGlmICgheG1sRGF0YSkgeworICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcik7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVu
a25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBwcm9wZXJ0eSBsaXN0IHRvIGRhdGEuIikp
KTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyhBZG9wdENG
LCBDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHhtbERhdGEuZ2V0KCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOworICAgIFJldGFp
blB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZU11
dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIHhtbFN0cmluZy5nZXQoKSkpOworCisg
ICAgLy8gUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIiIHdpdGggIkFwcGxlIiBpbiB0aGUgRFREIGRl
Y2xhcmF0aW9uLgorICAgIENGU3RyaW5nRmluZEFuZFJlcGxhY2Uoc3RyaW5nLmdldCgpLCBDRlNU
UigiLS8vQXBwbGUgQ29tcHV0ZXIvLyIpLCBDRlNUUigiLS8vQXBwbGUvLyIpLCBDRlJhbmdlTWFr
ZSgwLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcuZ2V0KCkpKSwgMCk7CisKKyAgICByZXR1cm4g
c3RyaW5nLmxlYWtSZWYoKTsKK30KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2YvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFyY2hp
dmVEdW1wU3VwcG9ydF9oCisjZGVmaW5lIFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9oCisKKyNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorCit0eXBlZGVmIHN0cnVjdCBf
Q0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKKworQ0ZTdHJpbmdSZWYgY3JlYXRlWE1M
U3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSk7CisKKy8v
IE1BUks6IC0KKy8vIE1BUks6IFBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZHMKKworQ0ZVUkxSZXNw
b25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVz
cG9uc2VEYXRhKTsKK0NGQXJyYXlSZWYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKKwor
I2VuZGlmIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9oICovCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCShy
ZXZpc2lvbiAwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCIKKworI2lt
cG9ydCA8Q0ZOZXR3b3JrL0NGSFRUUE1lc3NhZ2UuaD4KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5oPgorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitleHRlcm4gIkMiIHsKKworZW51bSBDRlVSTENhY2hl
U3RvcmFnZVBvbGljeSB7CisgIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQgPSAwLAorICBrQ0ZV
UkxDYWNoZVN0b3JhZ2VBbGxvd2VkSW5NZW1vcnlPbmx5ID0gMSwKKyAga0NGVVJMQ2FjaGVTdG9y
YWdlTm90QWxsb3dlZCA9IDIKK307Cit0eXBlZGVmIGVudW0gQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xp
Y3kgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3k7CisKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBr
Q0ZIVFRQVmVyc2lvbjFfMTsKKworQ0ZVUkxSZXNwb25zZVJlZiBDRlVSTFJlc3BvbnNlQ3JlYXRl
KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBDRlVSTFJlZiBVUkwsIENGU3RyaW5nUmVmIG1pbWVUeXBl
LCBTSW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBDRlN0cmluZ1JlZiB0ZXh0RW5jb2RpbmdO
YW1lLCBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSByZWNvbW1lbmRlZFBvbGljeSk7CitDRlVSTFJl
c3BvbnNlUmVmIENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKENGQWxsb2NhdG9y
UmVmIGFsbG9jLCBDRlVSTFJlZiBVUkwsIENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlLCBD
RlVSTENhY2hlU3RvcmFnZVBvbGljeSByZWNvbW1lbmRlZFBvbGljeSk7Cit2b2lkIENGVVJMUmVz
cG9uc2VTZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwg
U0ludDY0IGxlbmd0aCk7Cit2b2lkIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShDRlVSTFJlc3Bv
bnNlUmVmIHJlc3BvbnNlLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSk7CisKK30KKworQ0ZVUkxSZXNw
b25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVz
cG9uc2VEYXRhKQoreworICAgIC8vIERlY29kZSBOU1VSTFJlc3BvbnNlCisgICAgUmV0YWluUHRy
PE5TS2V5ZWRVbmFyY2hpdmVyPiB1bmFyY2hpdmVyKEFkb3B0TlMsIFtbTlNLZXllZFVuYXJjaGl2
ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNlRGF0YV0p
OworICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW3VuYXJjaGl2ZXIuZ2V0KCkgZGVjb2Rl
T2JqZWN0Rm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3Bv
bnNlS2V5IGluIFdlYlJlc291cmNlLm0KKyAgICBbdW5hcmNoaXZlci5nZXQoKSBmaW5pc2hEZWNv
ZGluZ107CisKKyAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNw
b25zZSBjbGFzc11dKQorICAgICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAoQ0ZVUkxSZWYpW3Jlc3BvbnNlIFVSTF0sIChDRlN0cmluZ1JlZilbcmVz
cG9uc2UgTUlNRVR5cGVdLCBbcmVzcG9uc2UgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXSwgKENGU3Ry
aW5nUmVmKVtyZXNwb25zZSB0ZXh0RW5jb2RpbmdOYW1lXSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxs
b3dlZCk7CisKKyAgICBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gKE5TSFRUUFVS
TFJlc3BvbnNlICopcmVzcG9uc2U7CisKKyAgICAvLyBOU1VSTFJlc3BvbnNlIGlzIG5vdCB0b2xs
LWZyZWUgYnJpZGdlZCB0byBDRlVSTFJlc3BvbnNlLgorICAgIFJldGFpblB0cjxDRkhUVFBNZXNz
YWdlUmVmPiBodHRwTWVzc2FnZShBZG9wdENGLCBDRkhUVFBNZXNzYWdlQ3JlYXRlUmVzcG9uc2Uo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgW2h0dHBSZXNwb25zZSBzdGF0dXNDb2RlXSwgMCwga0NGSFRU
UFZlcnNpb24xXzEpKTsKKworICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gW2h0dHBS
ZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdOworICAgIGZvciAoTlNTdHJpbmcgKmhlYWRlckZpZWxk
IGluIFtoZWFkZXJGaWVsZHMga2V5RW51bWVyYXRvcl0pCisgICAgICAgIENGSFRUUE1lc3NhZ2VT
ZXRIZWFkZXJGaWVsZFZhbHVlKGh0dHBNZXNzYWdlLmdldCgpLCAoQ0ZTdHJpbmdSZWYpaGVhZGVy
RmllbGQsIChDRlN0cmluZ1JlZilbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpoZWFkZXJGaWVs
ZF0pOworCisgICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChDRlVSTFJlZilbcmVzcG9uc2UgVVJMXSwgaHR0cE1lc3NhZ2Uu
Z2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOworfQorCitDRkFycmF5UmVmIHN1cHBv
cnRlZE5vbkltYWdlTUlNRVR5cGVzKCkKK3sKKyAgICByZXR1cm4gKENGQXJyYXlSZWYpW1dlYkhU
TUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc107Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>