<?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>71968</bug_id>
          
          <creation_ts>2011-11-09 16:38:35 -0800</creation_ts>
          <short_desc>Implement URL API</short_desc>
          <delta_ts>2012-05-04 15:49:39 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>74385</dup_id>
          
          <bug_file_loc>http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72998</dependson>
    
    <dependson>74068</dependson>
    
    <dependson>76816</dependson>
          <blocked>74385</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>code.vineet</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>kaustubh.ra</cc>
    
    <cc>mathias</cc>
    
    <cc>mike</cc>
    
    <cc>ojan</cc>
    
    <cc>peter</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>499468</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-09 16:38:35 -0800</bug_when>
    <thetext>http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499473</commentid>
    <comment_count>1</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-09 16:41:58 -0800</bug_when>
    <thetext>There is currently a webkitURL which is implemented as DOMURL. It has 2 static methods

createObjectURL
revokeObjectURL

Gecko also implements these 2 but they do not use a prefix.

I&apos;m suggesting we start adding features from the URL API draft to DOMURL but we keep the 2 static methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500595</commentid>
    <comment_count>2</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-11 01:48:24 -0800</bug_when>
    <thetext>I wish to implement this. Should I provide the working progress patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501100</commentid>
    <comment_count>3</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-11 14:21:15 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I wish to implement this. Should I provide the working progress patch ?

That sounds reasonable.

The spec is pretty much work in progress so expect things to change. For example, it is a known spec bug that the spec uses a DOMTokenList

http://www.w3.org/Bugs/Public/show_bug.cgi?id=14569</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501783</commentid>
    <comment_count>4</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-14 04:11:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; I wish to implement this. Should I provide the working progress patch ?
&gt; 
&gt; That sounds reasonable.
&gt; 
&gt; The spec is pretty much work in progress so expect things to change. For example, it is a known spec bug that the spec uses a DOMTokenList
&gt; 
&gt; http://www.w3.org/Bugs/Public/show_bug.cgi?id=14569

Yes, thats right. Is it fine to add different patches for the progress?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501784</commentid>
    <comment_count>5</comment_count>
      <attachid>114916</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-14 04:11:53 -0800</bug_when>
    <thetext>Created attachment 114916
Working Progress Patch

Added IDL attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502725</commentid>
    <comment_count>6</comment_count>
      <attachid>115121</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-15 01:29:40 -0800</bug_when>
    <thetext>Created attachment 115121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502734</commentid>
    <comment_count>7</comment_count>
      <attachid>115121</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 01:39:51 -0800</bug_when>
    <thetext>Comment on attachment 115121
Patch

Attachment 115121 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10372465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502797</commentid>
    <comment_count>8</comment_count>
      <attachid>115138</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-15 04:18:03 -0800</bug_when>
    <thetext>Created attachment 115138
Progress Patch 2

Added empty functions. Fixed idl file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503529</commentid>
    <comment_count>9</comment_count>
      <attachid>115138</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 19:52:15 -0800</bug_when>
    <thetext>Comment on attachment 115138
Progress Patch 2

Attachment 115138 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10486580</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503592</commentid>
    <comment_count>10</comment_count>
      <attachid>115138</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-15 22:20:32 -0800</bug_when>
    <thetext>Comment on attachment 115138
Progress Patch 2

Attachment 115138 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10483620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503675</commentid>
    <comment_count>11</comment_count>
      <attachid>115138</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-16 00:26:09 -0800</bug_when>
    <thetext>Comment on attachment 115138
Progress Patch 2

Attachment 115138 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10486672</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504598</commentid>
    <comment_count>12</comment_count>
      <attachid>115532</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-16 23:40:07 -0800</bug_when>
    <thetext>Created attachment 115532
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504648</commentid>
    <comment_count>13</comment_count>
      <attachid>115532</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-17 01:18:52 -0800</bug_when>
    <thetext>Comment on attachment 115532
Updated patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests.

We most certainly need tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505655</commentid>
    <comment_count>14</comment_count>
      <attachid>115780</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-18 03:34:25 -0800</bug_when>
    <thetext>Created attachment 115780
IDL Attributes implementation

This is initial patch implementing IDL attributes. IDL functions are still empty and in queue for implementation as there is blocking bug for not having DOMTokenList in DOMURL object.
I would like to rename this bug to &quot;Implementing DOMURL IDL Attributes&quot; and make a meta bug to track other function implementation bug in a master bug &quot;[Meta] DOMURL Implementation&quot;.
Let me know your views on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505860</commentid>
    <comment_count>15</comment_count>
      <attachid>115780</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 09:36:30 -0800</bug_when>
    <thetext>Comment on attachment 115780
IDL Attributes implementation

Attachment 115780 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10374628

New failing tests:
fast/dom/DOMURL/set-domurl-attribute-hash.html
fast/dom/DOMURL/set-domurl-attribute-search.html
fast/dom/DOMURL/set-domurl-attribute-port.html
fast/dom/DOMURL/set-domurl-attribute-hostname.html
fast/dom/DOMURL/set-domurl-attribute-pathname.html
fast/dom/DOMURL/set-domurl-attribute-host.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506334</commentid>
    <comment_count>16</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-18 23:05:42 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 115780 [details])
&gt; Attachment 115780 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10374628
&gt; 
&gt; New failing tests:
&gt; fast/dom/DOMURL/set-domurl-attribute-hash.html
&gt; fast/dom/DOMURL/set-domurl-attribute-search.html
&gt; fast/dom/DOMURL/set-domurl-attribute-port.html
&gt; fast/dom/DOMURL/set-domurl-attribute-hostname.html
&gt; fast/dom/DOMURL/set-domurl-attribute-pathname.html
&gt; fast/dom/DOMURL/set-domurl-attribute-host.html

Do I have to add anything for V8 bindings? I am not sure why these are failing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506343</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 23:32:46 -0800</bug_when>
    <thetext>&gt; Do I have to add anything for V8 bindings? I am not sure why these are failing here.

Dunno.  You can build and test Chromium by adding --chromium to update-webkit, build-webkit, and run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506409</commentid>
    <comment_count>18</comment_count>
      <attachid>115780</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-19 09:05:49 -0800</bug_when>
    <thetext>Comment on attachment 115780
IDL Attributes implementation

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

Can you add tests that ensures that:

webkitURL instancof Function

new webkitURL(...) instanceof webkitURL

webkitURL.createObjectURL instanceof function

new webkitURL(...).createObjectURL === undefined
new webkitURL(...).revokeObjectURL === undefined

webkitURL.prototype.getParameter instanceof Function
new webkitURL(...).hasOwnProperty(&apos;getParameter&apos;) === false

etc

&gt; Source/WebCore/html/DOMURL.idl:30
&gt;          Conditional=BLOB,

The conditional should be moved to createObjectURL and revokeObjectURL

&gt; Source/WebCore/html/DOMURL.idl:56
&gt;          [ConvertNullStringTo=Undefined] DOMString createObjectURL(in MediaStream stream);

This and revokeObjectURL are class (static) methods.

&gt; LayoutTests/fast/dom/DOMURL/get-domurl-attribute-port.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

Don&apos;t use script-tests. It just doubles the number of files in the repo.

http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree#WritingJavaScript-basedDOM-onlyTestCases

&lt;!DOCTYPE html&gt;
&lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;

// your tests go here

&lt;/script&gt;
&lt;script src=&quot;../../js/resources/js-test-post.js&quot;&gt;&lt;/script&gt;

&gt; LayoutTests/fast/dom/DOMURL/script-tests/get-domurl-attribute-port.js:3
&gt; +var domurl = document.createElement(&quot;DOMURL&quot;);

What? This is not an element. Can you add an assert that this does NOT work?

The correct usage of this should be:

var url = new webkitURL(urlString, baseUrlString);

&gt; LayoutTests/fast/dom/DOMURL/script-tests/set-domurl-attribute-hash.js:8
&gt; +debug(&quot;Hash value does not start with &apos;#&apos;&quot;);
&gt; +domurl.href = &quot;https://www.mydomain.com:8080/path/testurl.html#middle&quot;;
&gt; +domurl.hash = &quot;hash-value&quot;;
&gt; +shouldBe(&quot;domurl.href&quot;, &quot;&apos;https://www.mydomain.com:8080/path/testurl.html#hash-value&apos;&quot;);

This is also wrong. The constructor should not have any properties except for the two &quot;static&quot; methods, createObjectURL and revokeObjectURL.

var url = new URL(&apos;http://www.example.com/#hash-value&apos;);
shouldBeEqualToString(&apos;url.hash&apos;, &apos;hash-value&apos;);

Can you add tests that asserts that the constructor has the right static methods and that the instance has the expected properties and methods?

&gt; LayoutTests/fast/dom/DOMURL/script-tests/set-domurl-attribute-host.js:17
&gt; +try {
&gt; +domurl.href = &quot;https://www.mydomain.com:8080/path/?key=value&quot;;
&gt; +domurl.host = &quot;www.other?domain.com:8080&quot;;
&gt; +shouldBe(&quot;domurl.href&quot;, &quot;&apos;https://www.other/?domain.com:8080/path/?key=value&apos;&quot;);
&gt; +} catch(e) {
&gt; +debug(&quot;Exception: &quot; + e.description);
&gt; +}

Use shouldThrow()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506417</commentid>
    <comment_count>19</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-19 10:19:25 -0800</bug_when>
    <thetext>You also need to update DOMWindow.idl to remove/change the conditional for webkitURL.

We should also test that we have a stringifier for the href property. In other words toString should return href

var url = new webkitURL(&apos;http://www.example.com/&apos;);
shouldBe(&apos;url.toString()&apos;, &apos;url.href&apos;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506726</commentid>
    <comment_count>20</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-20 23:24:11 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 115780 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115780&amp;action=review
&gt; 
&gt; Can you add tests that ensures that:
&gt; 
&gt; webkitURL instancof Function
&gt; 
&gt; new webkitURL(...) instanceof webkitURL
&gt; 
&gt; webkitURL.createObjectURL instanceof function
&gt; 
&gt; new webkitURL(...).createObjectURL === undefined
&gt; new webkitURL(...).revokeObjectURL === undefined
&gt; 
&gt; webkitURL.prototype.getParameter instanceof Function
&gt; new webkitURL(...).hasOwnProperty(&apos;getParameter&apos;) === false
&gt; 
&gt; etc
&gt; 

Surely, I will add them all.

&gt; &gt; Source/WebCore/html/DOMURL.idl:30
&gt; &gt;          Conditional=BLOB,
&gt; 
&gt; The conditional should be moved to createObjectURL and revokeObjectURL
&gt;

Yes as the blob conditional is only applicable to these two methods now.
 
&gt; &gt; Source/WebCore/html/DOMURL.idl:56
&gt; &gt;          [ConvertNullStringTo=Undefined] DOMString createObjectURL(in MediaStream stream);
&gt; 
&gt; This and revokeObjectURL are class (static) methods.
&gt; 
&gt; &gt; LayoutTests/fast/dom/DOMURL/get-domurl-attribute-port.html:1
&gt; &gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
&gt; 
&gt; Don&apos;t use script-tests. It just doubles the number of files in the repo.
&gt; 
&gt; http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree#WritingJavaScript-basedDOM-onlyTestCases
&gt; 
&gt; &lt;!DOCTYPE html&gt;
&gt; &lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; &lt;script&gt;
&gt; 
&gt; // your tests go here
&gt; 
&gt; &lt;/script&gt;
&gt; &lt;script src=&quot;../../js/resources/js-test-post.js&quot;&gt;&lt;/script&gt;
&gt; 

No worries. I will change them all.

&gt; &gt; LayoutTests/fast/dom/DOMURL/script-tests/get-domurl-attribute-port.js:3
&gt; &gt; +var domurl = document.createElement(&quot;DOMURL&quot;);
&gt; 
&gt; What? This is not an element. Can you add an assert that this does NOT work?
&gt; 
&gt; The correct usage of this should be:
&gt; 
&gt; var url = new webkitURL(urlString, baseUrlString);
&gt; 

Opps. Sorry for that. Think i did some foolish mistake there.

&gt; &gt; LayoutTests/fast/dom/DOMURL/script-tests/set-domurl-attribute-hash.js:8
&gt; &gt; +debug(&quot;Hash value does not start with &apos;#&apos;&quot;);
&gt; &gt; +domurl.href = &quot;https://www.mydomain.com:8080/path/testurl.html#middle&quot;;
&gt; &gt; +domurl.hash = &quot;hash-value&quot;;
&gt; &gt; +shouldBe(&quot;domurl.href&quot;, &quot;&apos;https://www.mydomain.com:8080/path/testurl.html#hash-value&apos;&quot;);
&gt; 
&gt; This is also wrong. The constructor should not have any properties except for the two &quot;static&quot; methods, createObjectURL and revokeObjectURL.
&gt; 
&gt; var url = new URL(&apos;http://www.example.com/#hash-value&apos;);
&gt; shouldBeEqualToString(&apos;url.hash&apos;, &apos;hash-value&apos;);
&gt;

Right. I will change them all.

&gt; Can you add tests that asserts that the constructor has the right static methods and that the instance has the expected properties and methods?
&gt; 
&gt; &gt; LayoutTests/fast/dom/DOMURL/script-tests/set-domurl-attribute-host.js:17
&gt; &gt; +try {
&gt; &gt; +domurl.href = &quot;https://www.mydomain.com:8080/path/?key=value&quot;;
&gt; &gt; +domurl.host = &quot;www.other?domain.com:8080&quot;;
&gt; &gt; +shouldBe(&quot;domurl.href&quot;, &quot;&apos;https://www.other/?domain.com:8080/path/?key=value&apos;&quot;);
&gt; &gt; +} catch(e) {
&gt; &gt; +debug(&quot;Exception: &quot; + e.description);
&gt; &gt; +}
&gt; 
&gt; Use shouldThrow()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507298</commentid>
    <comment_count>21</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-21 16:07:36 -0800</bug_when>
    <thetext>I implemented this in JS+DOM

https://gist.github.com/1384398

It might be useful for you to better understand how this is supposed to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507390</commentid>
    <comment_count>22</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-21 20:08:30 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; I implemented this in JS+DOM
&gt; 
&gt; https://gist.github.com/1384398
&gt; 
&gt; It might be useful for you to better understand how this is supposed to work.

Thanx Erik. It is much useful. Just one question it should workin both ways 
var url = new webkitURL()
var url = window.webkitURL

Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507656</commentid>
    <comment_count>23</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-22 09:54:05 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; I implemented this in JS+DOM
&gt; &gt; 
&gt; &gt; https://gist.github.com/1384398
&gt; &gt; 
&gt; &gt; It might be useful for you to better understand how this is supposed to work.
&gt; 
&gt; Thanx Erik. It is much useful. Just one question it should workin both ways 
&gt; var url = new webkitURL()
&gt; var url = window.webkitURL
&gt; 
&gt; Right?

var url = window.webkitURL;

works but it does not give you a URL instance. Instead it should give you a function object that can be used to construct new URL instances.

shouldBeFalse(&quot;&apos;protocol&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;username&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;password&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;host&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;hostname&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;port&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;pathname&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;search&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;hash&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;filename&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;origin&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;parameterNames&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;getParametername&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;getParameterAllname&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;appendParameter&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;clearParametername&apos; in webkitURL&quot;);
shouldBeFalse(&quot;&apos;href&apos; in webkitURL&quot;);

shouldBeTrue(&quot;createObjectURL&apos; in webkitURL&quot;);
shouldBeTrue(&quot;&apos;revokeObjectURL&apos; in webkitURL&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507912</commentid>
    <comment_count>24</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-22 19:39:28 -0800</bug_when>
    <thetext>Thanks Erik for adding bug for static support in IDL. I was trying to fix window.webkitURL but was not working.  Will try to work on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508008</commentid>
    <comment_count>25</comment_count>
      <attachid>116327</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-23 01:34:10 -0800</bug_when>
    <thetext>Created attachment 116327
Working Progress Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508213</commentid>
    <comment_count>26</comment_count>
      <attachid>116327</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-23 10:21:19 -0800</bug_when>
    <thetext>Comment on attachment 116327
Working Progress Patch

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

&gt; Source/WebCore/html/DOMURL.cpp:145
&gt; +    return m_href;

Move all the single statement functions to the .h file

&gt; Source/WebCore/html/DOMURL.cpp:161
&gt; +    if (value == &quot;null&quot;)
&gt; +        return;

Why are you comparing to the string &quot;null&quot;?

Did you want to do?

if (value.isNull())
    return;

But the question is, do we really need to do this? Doesn&apos;t KURL::setProtocol work correctly with this in mind already?

&gt; Source/WebCore/html/DOMURL.cpp:165
&gt; +    KURL url = href();
&gt; +    url.setProtocol(value);
&gt; +    setHref(url.string());

m_href is mutable so there should be no need to make a copy of it, serialize it and reparse it.

void DOMURL::setProtocol(const String&amp; value)
{
  m_href.setProtocol(value);
}

&gt; Source/WebCore/html/DOMURL.cpp:190
&gt; +void DOMURL::setPassword(const String&amp; value)
&gt; +{
&gt; +    KURL url = href();
&gt; +    url.setPass(value);
&gt; +    setHref(url.string());
&gt; +}

void DOMURL::setPassword(const String&amp; value)
{
  m_href.setPass(value);
}

&gt; Source/WebCore/html/DOMURL.cpp:257
&gt; +    KURL url = href();
&gt; +    if (!url.canSetHostOrPort())
&gt; +        return;

Maybe do this before the loop?

&gt; LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

&lt;!DOCTYPE html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508978</commentid>
    <comment_count>27</comment_count>
      <attachid>116565</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-24 23:02:52 -0800</bug_when>
    <thetext>Created attachment 116565
Update Patch

Updated patch after review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509391</commentid>
    <comment_count>28</comment_count>
      <attachid>116565</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-26 14:12:02 -0800</bug_when>
    <thetext>Comment on attachment 116565
Update Patch

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

&gt; Source/WebCore/html/DOMURL.cpp:154
&gt; +    if (value.isEmpty() || value == &quot;null&quot;)

Remove&quot;null&quot; case

&gt; Source/WebCore/html/DOMURL.cpp:239
&gt; +    m_href.setQuery(newSearch.replace(&apos;#&apos;, &quot;%23&quot;));

This looks suspicious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509702</commentid>
    <comment_count>29</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-28 03:26:01 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 116565 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116565&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.cpp:154
&gt; &gt; +    if (value.isEmpty() || value == &quot;null&quot;)
&gt; 
&gt; Remove&quot;null&quot; case
&gt; 

Fixed that.

&gt; &gt; Source/WebCore/html/DOMURL.cpp:239
&gt; &gt; +    m_href.setQuery(newSearch.replace(&apos;#&apos;, &quot;%23&quot;));
&gt; 
&gt; This looks suspicious.

This was to make sure that &quot;#&quot; in the search does not leak to hash. Do u think should be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509900</commentid>
    <comment_count>30</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-28 09:51:39 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; &gt; &gt; Source/WebCore/html/DOMURL.cpp:239
&gt; &gt; &gt; +    m_href.setQuery(newSearch.replace(&apos;#&apos;, &quot;%23&quot;));
&gt; &gt; 
&gt; &gt; This looks suspicious.
&gt; 
&gt; This was to make sure that &quot;#&quot; in the search does not leak to hash. Do u think should be removed?

I thought that KURL would do the right thing but I see that it doesn&apos;t. I kind of wonder if it would not be cleaner to fix KURL here? (and remove this code from HTMLAnchorElement etc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510700</commentid>
    <comment_count>31</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-11-29 05:02:47 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; &gt; &gt; Source/WebCore/html/DOMURL.cpp:239
&gt; &gt; &gt; &gt; +    m_href.setQuery(newSearch.replace(&apos;#&apos;, &quot;%23&quot;));
&gt; &gt; &gt; 
&gt; &gt; &gt; This looks suspicious.
&gt; &gt; 
&gt; &gt; This was to make sure that &quot;#&quot; in the search does not leak to hash. Do u think should be removed?
&gt; 
&gt; I thought that KURL would do the right thing but I see that it doesn&apos;t. I kind of wonder if it would not be cleaner to fix KURL here? (and remove this code from HTMLAnchorElement etc)

Yes, agree. We can mark it as FIXME as of now may be if you say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511227</commentid>
    <comment_count>32</comment_count>
      <attachid>116565</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-29 17:00:30 -0800</bug_when>
    <thetext>Comment on attachment 116565
Update Patch

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

&gt; Source/WebCore/html/DOMURL.idl:60
&gt; +        [Conditional=BLOB] [ConvertNullStringTo=Undefined] static DOMString createObjectURL(in Blob blob);
&gt; +        [Conditional=BLOB] static void revokeObjectURL(in DOMString url);

I landed the support for static.

The static keyword needs to come before the extended attributes.

static [Conditional=BLOB, ConvertNullStringTo=Undefined] DOMString createObjectURL(in Blob blob);
static [Conditional=BLOB] void revokeObjectURL(in DOMString url);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513581</commentid>
    <comment_count>33</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-02 00:22:15 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 116565 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116565&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.idl:60
&gt; &gt; +        [Conditional=BLOB] [ConvertNullStringTo=Undefined] static DOMString createObjectURL(in Blob blob);
&gt; &gt; +        [Conditional=BLOB] static void revokeObjectURL(in DOMString url);
&gt; 
&gt; I landed the support for static.
&gt; 
&gt; The static keyword needs to come before the extended attributes.
&gt; 
&gt; static [Conditional=BLOB, ConvertNullStringTo=Undefined] DOMString createObjectURL(in Blob blob);
&gt; static [Conditional=BLOB] void revokeObjectURL(in DOMString url);

Its not working somehow. I get compilation errors for DerievedSources as the conversion becomes like this - 

static #ifdef BLOB createObjectURL(Blob* blob)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513828</commentid>
    <comment_count>34</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-02 09:17:35 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Its not working somehow. I get compilation errors for DerievedSources as the conversion becomes like this - 
&gt; 
&gt; static #ifdef BLOB createObjectURL(Blob* blob)

I don&apos;t see this problem. Can you upload the patch that gives you this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515804</commentid>
    <comment_count>35</comment_count>
      <attachid>118024</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-06 04:35:30 -0800</bug_when>
    <thetext>Created attachment 118024
Patch

Tried to get the patch working somehow. Not sure if all correct yet. Erik, need some assistance in the patch. May be u can review and let me know missing parts. I found the problem in having &quot;static&quot; keyword before &quot;[Conditional]&quot;. Its because there is function overloading in the idl file. When i removed one of them (MediaStream parameter API) it was building fine. But in normal case i get errors - 

DerivedSources/WebCore/JSDOMURL.cpp:554:1: error: stray ‘#’ in program
DerivedSources/WebCore/JSDOMURL.cpp:567:2: error: #endif without #if
DerivedSources/WebCore/JSDOMURL.cpp:569:1: error: stray ‘#’ in program
DerivedSources/WebCore/JSDOMURL.cpp:593:2: error: #endif without #if

This is bcoz it creates two separate static functions in JSDOMURL.cpp as - 
static EncodedJSValue JSC_HOST_CALL jsDOMURLConstructorFunctionCreateObjectURL1(ExecState* exec)
static EncodedJSValue JSC_HOST_CALL jsDOMURLConstructorFunctionCreateObjectURL2(ExecState* exec)

one for MediaStream &amp; one for Blob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515808</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 04:38:02 -0800</bug_when>
    <thetext>Attachment 118024 did not pass style-queue:

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

Source/WebCore/html/DOMURL.cpp:92:  Extra space after ( in if  [whitespace/parens] [5]
Total errors found: 1 in 24 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>515819</commentid>
    <comment_count>37</comment_count>
      <attachid>118024</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-06 04:56:37 -0800</bug_when>
    <thetext>Comment on attachment 118024
Patch

Attachment 118024 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10739098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515922</commentid>
    <comment_count>38</comment_count>
      <attachid>118024</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-06 08:11:36 -0800</bug_when>
    <thetext>Comment on attachment 118024
Patch

Attachment 118024 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10734959

New failing tests:
http/tests/fileapi/create-blob-url-from-data-url.html
fast/files/apply-blob-url-to-xhr.html
fast/dom/HTMLAnchorElement/anchor-nodownload-set.html
editing/pasteboard/data-transfer-items-image-png.html
fast/dom/HTMLAnchorElement/anchor-nodownload.html
fast/dom/DOMURL/domurl-attribute-hostname.html
fast/dom/DOMURL/domurl-attribute-hash.html
fast/files/apply-blob-url-to-img.html
fast/dom/DOMURL/domurl-attribute-search.html
fast/dom/HTMLAnchorElement/anchor-download-unset.html
fast/dom/HTMLAnchorElement/anchor-download.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516014</commentid>
    <comment_count>39</comment_count>
      <attachid>118024</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-06 10:33:27 -0800</bug_when>
    <thetext>Comment on attachment 118024
Patch

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

&gt; Source/WebCore/html/DOMURL.idl:59
&gt;  #if defined(ENABLE_MEDIA_STREAM) &amp;&amp; ENABLE_MEDIA_STREAM
&gt; -        [ConvertNullStringTo=Undefined] DOMString createObjectURL(in MediaStream stream);
&gt; +        [Conditional=BLOB] static DOMString createObjectURL(in MediaStream stream);
&gt;  #endif
&gt; -        [ConvertNullStringTo=Undefined] DOMString createObjectURL(in Blob blob);
&gt; -        void revokeObjectURL(in DOMString url);
&gt; +        [Conditional=BLOB] static DOMString createObjectURL(in Blob blob);
&gt; +        static [Conditional=BLOB] void revokeObjectURL(in DOMString url);

These needs to be 

static [Conditional=BLOB] type name(params);

However, beware that you will need to keep the #if here since overloaded methods cannot have different Conditional. Maybe a comment is due?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516209</commentid>
    <comment_count>40</comment_count>
      <attachid>118104</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-06 13:45:26 -0800</bug_when>
    <thetext>Created attachment 118104
Fixed idl and removed static initializers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516221</commentid>
    <comment_count>41</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-06 13:57:41 -0800</bug_when>
    <thetext>Kaustubh: I uploaded a patch that compiles. I had to fix the IDL and fix the static initializers.

One thing that we need to do is to clean up the URLs created by createObjectURL when the context is destroyed. Before this change window.webkitURL returned an instance of DOMURL (which extends ContextDestructionObserver) which cause contextDestroyed to get called when the context was destroyed. In our case we might not have any ContextDestructionObserver but I think we can create one in createObjectURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516380</commentid>
    <comment_count>42</comment_count>
      <attachid>118145</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-06 17:00:02 -0800</bug_when>
    <thetext>Created attachment 118145
WIP

This puts pack the security origin code. createObjectURL works but I have yet to add the eviction code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516391</commentid>
    <comment_count>43</comment_count>
      <attachid>118145</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-06 17:11:08 -0800</bug_when>
    <thetext>Comment on attachment 118145
WIP

Are you looking for feedback, or is this just a checkpoint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516414</commentid>
    <comment_count>44</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-06 17:44:43 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 118145 [details])
&gt; Are you looking for feedback, or is this just a checkpoint?

Not yet. I&apos;m helping  Kaustubh getting things closer to working. I&apos;ll try to remember to do --no-review in the future.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516444</commentid>
    <comment_count>45</comment_count>
      <attachid>118145</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-12-06 19:28:21 -0800</bug_when>
    <thetext>Comment on attachment 118145
WIP

Attachment 118145 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10752006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516573</commentid>
    <comment_count>46</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-07 03:04:58 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; Kaustubh: I uploaded a patch that compiles. I had to fix the IDL and fix the static initializers.
&gt; 
&gt; One thing that we need to do is to clean up the URLs created by createObjectURL when the context is destroyed. Before this change window.webkitURL returned an instance of DOMURL (which extends ContextDestructionObserver) which cause contextDestroyed to get called when the context was destroyed. In our case we might not have any ContextDestructionObserver but I think we can create one in createObjectURL.

Thanks a lot Erik. I got where I needed fixes. But somehow, the patch is still failing for gtk port for the same errors &quot;static&quot; for overloaded functions. I am trying to fix those and also implement ContextDestructionObvserver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516649</commentid>
    <comment_count>47</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-07 08:15:30 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; Thanks a lot Erik. I got where I needed fixes. But somehow, the patch is still failing for gtk port for the same errors &quot;static&quot; for overloaded functions. I am trying to fix those and also implement ContextDestructionObvserver.

Let me finish the ContextDestructionObserver part. I&apos;m already heads down into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517001</commentid>
    <comment_count>48</comment_count>
      <attachid>118290</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-07 16:59:12 -0800</bug_when>
    <thetext>Created attachment 118290
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517002</commentid>
    <comment_count>49</comment_count>
      <attachid>118290</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-07 17:00:36 -0800</bug_when>
    <thetext>Comment on attachment 118290
WIP

This has the expected behavior regarding ContextDestructionObserver and the URLs gets cleaned up when the ScriptExecutionContext gets destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517314</commentid>
    <comment_count>50</comment_count>
      <attachid>118365</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-08 05:06:36 -0800</bug_when>
    <thetext>Created attachment 118365
Updated patch

Will be submitting for the r? &amp; cq? after bug - 74068 is fixed. Till then this will fail to build on gtk port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517641</commentid>
    <comment_count>51</comment_count>
      <attachid>118365</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 12:00:26 -0800</bug_when>
    <thetext>Comment on attachment 118365
Updated patch

Attachment 118365 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10797328

New failing tests:
fast/dom/DOMURL/domurl-attribute-hash.html
fast/dom/DOMURL/domurl-attribute-hostname.html
fast/dom/DOMURL/domurl-attribute-search.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518765</commentid>
    <comment_count>52</comment_count>
      <attachid>118687</attachid>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-10 00:28:16 -0800</bug_when>
    <thetext>Created attachment 118687
Updated patch

Fixed test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519286</commentid>
    <comment_count>53</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2011-12-12 09:49:48 -0800</bug_when>
    <thetext>Erik can you review this patch?  thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519335</commentid>
    <comment_count>54</comment_count>
      <attachid>118687</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-12-12 10:45:33 -0800</bug_when>
    <thetext>Comment on attachment 118687
Updated patch

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

I&apos;m not a webkit reviewer but I&apos;m happy to give you feedback anyway.

This needs more tests. You need to test every property getter and setter and make sure that all the code paths are tested. For example, in DOMURL::setHost there are a lot of branches. You need to have about 10 different tests to cover all the possible branches in there.

I also feel like there is a bit too much logic in here. It seems like we could move more code into KURL.

&gt; Source/WebCore/html/DOMURL.cpp:257
&gt; +    unsigned port = value.toUInt();

How do we handle non numbers in value?

&gt; Source/WebCore/html/DOMURL.cpp:282
&gt; +    m_href.setQuery(newSearch);

I didn&apos;t see any change in KURL::setQuery to handle &apos;#&apos; in the search string. Please add a test that ensures that setting search with &apos;#&apos; works as expected.

&gt; Source/WebCore/html/DOMURL.cpp:301
&gt; +void DOMURL::setFilename(const String&amp;)
&gt; +{
&gt; +    // FIXME: Implement me.
&gt; +    notImplemented();
&gt; +}

These should be implemented before we expose these to JS.

&gt; Source/WebCore/html/DOMURL.idl:52
&gt; +        DOMString getParameter(in DOMString name);
&gt; +        void appendParameter(in DOMString name, in DOMString values);
&gt; +        void appendParameter(in DOMString name, in DOMString[] values);
&gt; +        void clearParameter(in DOMString name);

I would remove these if you do not plan to implement them in the first patch.

&gt; Source/WebCore/html/DOMURL.idl:53
&gt; +

Missing

DOMString[] getParameterAll(in DOMString name);

&gt; Source/WebCore/page/DOMWindow.idl:816
&gt; +        attribute DOMURLConstructor webkitURL;

Can you file a bug that this should be renamed to URLConstructor? We should never expose DOMURL to script.

&gt; LayoutTests/fast/dom/DOMURL/check-instanceof-domurl-functions.html:36
&gt; +shouldBeFalse(&quot;url.hasOwnProperty(&apos;clearParameter&apos;)&quot;)

The opposite case is also interesting. But in general it is better to actually test their functionality than their presence since the functionality will implicitly cover the presence.

shouldBeTrue(&quot;&apos;getParameter&apos; in url&quot;);

&gt; LayoutTests/fast/dom/DOMURL/domurl-attribute-hash.html:12
&gt; +debug(&quot;Hash value start with #&quot;);
&gt; +var domurl = new webkitURL(&quot;https://www.mydomain.com:8080/path/testurl.html#middle&quot;);
&gt; +shouldBeEqualToString(&quot;domurl.hash&quot;, &quot;#middle&quot;);

You need to test the setter too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539352</commentid>
    <comment_count>55</comment_count>
      <attachid>118687</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-01-20 01:55:17 -0800</bug_when>
    <thetext>Comment on attachment 118687
Updated patch

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

A few quick comments which are in no way comprehensive.

&gt; Source/WebCore/html/DOMURL.cpp:36
&gt; +#if ENABLE(BLOB)

Don&apos;t exclude headers using an&quot;#if&quot; (unless absolutely necessary in order to keep some platforms building). I don&apos;t think that is the case here.

&gt; Source/WebCore/html/DOMURL.cpp:58
&gt; +        : ContextDestructionObserver(scriptExecutionContext) { }

{} should be on the next lines.

&gt; Source/WebCore/html/DOMURL.cpp:60
&gt; +    virtual void contextDestroyed()

Should not be inlined in the class since we don&apos;t want this function inlined.

Note that this leaks in the same way the current class does.

contextDestroyed isn&apos;t guaranteed to be called before the destructor.

If the destructor is called first, then this clean up (for the registeries) should run still.

&gt; Source/WebCore/html/DOMURL.cpp:74
&gt; +        publicURLManagerMap().remove(context);

not threadsafe.

&gt; Source/WebCore/html/DOMURL.cpp:92
&gt; +    return staticPublicURLManagers;

Not threadsafe (which is bad because this can be used from workers).

&gt; Source/WebCore/html/DOMURL.cpp:98
&gt; +    OwnPtr&lt;PublicURLManager&gt;&amp; manager = map.add(scriptExecutionContext, nullptr).first-&gt;second;

not threadsafe.

&gt; Source/WebCore/html/DOMURL.h:45
&gt; +    static PassRefPtr&lt;DOMURL&gt; create(const String&amp; url) { return adoptRef(new DOMURL(url, emptyString())); }

Where are these called?

&gt; Source/WebCore/html/DOMURL.idl:-32
&gt; -        NoStaticTables

Why is this being removed?

afaik, It needs to be here since this is exposed in Web Workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539373</commentid>
    <comment_count>56</comment_count>
    <who name="Kaustubh Atrawalkar">kaustubh.ra</who>
    <bug_when>2012-01-20 02:52:15 -0800</bug_when>
    <thetext>(In reply to comment #55)
Hi David, thanks for the review. Please find my comments inline. 
This patch has been divided into two parts to make review/committing easy. One part of making createObjectURL &amp; revokeObjectURL static has been already landed. I will be updating this patch soon and will update new one. 

&gt; (From update of attachment 118687 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118687&amp;action=review
&gt; 
&gt; A few quick comments which are in no way comprehensive.
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.cpp:36
&gt; &gt; +#if ENABLE(BLOB)
&gt; 
&gt; Don&apos;t exclude headers using an&quot;#if&quot; (unless absolutely necessary in order to keep some platforms building). I don&apos;t think that is the case here.
&gt; 
I agree with this. But in this scenario, the header under #if will be required only in that case. Unless otherwise it will get built but the only prob will be it will unnecessary increase code segment AFAIK. Please guide if wrong.

&gt; &gt; Source/WebCore/html/DOMURL.cpp:58
&gt; &gt; +        : ContextDestructionObserver(scriptExecutionContext) { }
&gt; 
&gt; {} should be on the next lines.
&gt; 
Corrected.

&gt; &gt; Source/WebCore/html/DOMURL.cpp:60
&gt; &gt; +    virtual void contextDestroyed()
&gt; 
&gt; Should not be inlined in the class since we don&apos;t want this function inlined.
&gt; 
&gt; Note that this leaks in the same way the current class does.
&gt; 
&gt; contextDestroyed isn&apos;t guaranteed to be called before the destructor.
&gt; 
&gt; If the destructor is called first, then this clean up (for the registeries) should run still.
&gt; 
contextDestroyed will get called first whenever ContextDestructionObserver::contextDestroyed gets called. This will ensure the cleanup of data related to PublicURLManager class. As this class is inline completely I tried to keep functions as well inline.

&gt; &gt; Source/WebCore/html/DOMURL.cpp:74
&gt; &gt; +        publicURLManagerMap().remove(context);
&gt; 
&gt; not threadsafe.
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.cpp:92
&gt; &gt; +    return staticPublicURLManagers;
&gt; 
&gt; Not threadsafe (which is bad because this can be used from workers).
&gt; 
&gt; &gt; Source/WebCore/html/DOMURL.cpp:98
&gt; &gt; +    OwnPtr&lt;PublicURLManager&gt;&amp; manager = map.add(scriptExecutionContext, nullptr).first-&gt;second;
&gt; 
&gt; not threadsafe.
&gt; 
Should I be using ThreadGlobalData for this? I&apos;m not sure.

&gt; &gt; Source/WebCore/html/DOMURL.h:45
&gt; &gt; +    static PassRefPtr&lt;DOMURL&gt; create(const String&amp; url) { return adoptRef(new DOMURL(url, emptyString())); }
&gt; 
&gt; Where are these called?
&gt; 

Updated with new URL specs.

&gt; &gt; Source/WebCore/html/DOMURL.idl:-32
&gt; &gt; -        NoStaticTables
&gt; 
&gt; Why is this being removed?
&gt; 
&gt; afaik, It needs to be here since this is exposed in Web Workers.
Agree. Will need to put it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616748</commentid>
    <comment_count>57</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-05-04 15:49:39 -0700</bug_when>
    <thetext>I&apos;m closing this since we have a meta bug

*** This bug has been marked as a duplicate of bug 74385 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>114916</attachid>
            <date>2011-11-14 04:11:53 -0800</date>
            <delta_ts>2011-11-15 01:29:40 -0800</delta_ts>
            <desc>Working Progress Patch</desc>
            <filename>working_progress.txt</filename>
            <type>text/plain</type>
            <size>7274</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzIsMjYgQEAK
ICAgICAgICAgR2VuZXJhdGVUb0pTLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAgIF0gRE9N
VVJMIHsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2NvbDsKKyAgICAgICAgYXR0
cmlidXRlIERPTVN0cmluZyB1c2VybmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBw
YXNzd29yZDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBob3N0OworICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGhvc3RuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBv
cnQ7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAgIGF0dHJp
YnV0ZSBET01TdHJpbmcgc2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhhc2g7
CisKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmaWxlbmFtZTsKKworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKKworICAgICAgICBET01TdHJpbmcgZ2V0
UGFyYW1ldGVyKERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIo
RE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyB2YWx1ZXMpOworICAgICAgICB2b2lkIGNsZWFyUGFy
YW1ldGVyKERPTVN0cmluZyBuYW1lKTsKKworICAgICAgICBzdHJpbmdpZmllciBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGhyZWY7CisKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYmIEVO
QUJMRV9NRURJQV9TVFJFQU0KICAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVk
XSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzIsMTAg
QEAKIAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJCbG9iVVJMLmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTQz
LDYgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRE9NVVJMOjpET01VUkwoU3Ry
aW5nJiB1cmwsIFN0cmluZyYgYmFzZVVSTCkKKyAgICA6IG1faHJlZihLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKSkKK3sKKyAgICAvLyBJZiBiYXNlVVJMIGlzIHByb3ZpZGVkIG5lZWQgdG8gcmVz
b2x2ZSB0aGUgdXJsIHJlYWx0aXZlIHRvIGJhc2VVUkwKK30KKwogRE9NVVJMOjpET01VUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CkBAIC0xMjUs
NiArMTM0LDE5NSBAQAogI2VuZGlmCiB9CiAKK0tVUkwgRE9NVVJMOjpocmVmKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9ocmVmOworfQorCit2b2lkIERPTVVSTDo6c2V0SHJlZihjb25zdCBTdHJp
bmcmIHZhbHVlKQoreworICAgIG1faHJlZiA9IEtVUkwoS1VSTCgpLCB2YWx1ZSk7Cit9CisKK1N0
cmluZyBET01VUkw6OnByb3RvY29sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaHJlZigpLnByb3Rv
Y29sKCkgKyAiOiI7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIHVybC5zZXRQcm90b2NvbCh2
YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjp1
c2VybmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICIiOworfQorCit2b2lkIERPTVVSTDo6c2V0
VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsK
KyAgICB1cmwuc2V0VXNlcih2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQor
CitTdHJpbmcgRE9NVVJMOjpwYXNzd29yZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICIiOworfQor
Cit2b2lkIERPTVVSTDo6c2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBL
VVJMIHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0UGFzcyh2YWx1ZSk7CisgICAgc2V0SHJlZih1
cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICBj
b25zdCBLVVJMJiB1cmwgPSBocmVmKCk7CisgICAgaWYgKHVybC5ob3N0RW5kKCkgPT0gdXJsLnBh
dGhTdGFydCgpKQorICAgICAgICByZXR1cm4gdXJsLmhvc3QoKTsKKyAgICBpZiAoaXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCksIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0
dXJuIHVybC5ob3N0KCk7CisgICAgcmV0dXJuIHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51
bWJlcih1cmwucG9ydCgpKTsKK30KKwordm9pZCBET01VUkw6OnNldEhvc3QoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBjb2xvbiA9IHZhbHVlLmZpbmQoJzonKTsK
KyAgICBpZiAoIWNvbG9uKQorICAgICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0SG9zdEFuZFBv
cnQodmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERPTVVS
TDo6aG9zdG5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkuaG9zdCgpOworfQorCit2
b2lkIERPTVVSTDo6c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1bnNp
Z25lZCBpID0gMDsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7Cisg
ICAgd2hpbGUgKHZhbHVlW2ldID09ICcvJykKKyAgICAgICAgaSsrOworCisgICAgaWYgKGkgPT0g
aG9zdExlbmd0aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgS1VSTCB1cmwgPSBocmVmKCk7Cisg
ICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1
cmwuc2V0SG9zdCh2YWx1ZS5zdWJzdHJpbmcoaSkpOworICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKK30KKworU3RyaW5nIERPTVVSTDo6cG9ydCgpIGNvbnN0Cit7CisgICAgaWYgKGhyZWYoKS5o
YXNQb3J0KCkpCisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihocmVmKCkucG9ydCgpKTsK
KworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCit2b2lkIERPTVVSTDo6c2V0UG9ydChj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICgh
dXJsLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXJsLnNldFBv
cnQodmFsdWUudG9VSW50KCkpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3Ry
aW5nIERPTVVSTDo6cGF0aG5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkucGF0aCgp
OworfQorCit2b2lkIERPTVVSTDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0UGF0aCh2YWx1ZSk7CisgICAgc2V0SHJlZih1
cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpzZWFyY2goKSBjb25zdAoreworICAg
IFN0cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgpOworICAgIHJldHVybiBxdWVyeS5pc0VtcHR5
KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgcXVlcnk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRT
ZWFyY2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAg
ICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmco
MSkgOiB2YWx1ZTsKKyAgICB1cmwuc2V0UXVlcnkobmV3U2VhcmNoLnJlcGxhY2UoJyMnLCAiJTIz
IikpOworCisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpo
YXNoKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgZnJhZ21lbnQgPSBocmVmKCkuZnJhZ21lbnRJZGVu
dGlmaWVyKCk7CisgICAgcmV0dXJuIGZyYWdtZW50LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkg
OiAiIyIgKyBmcmFnbWVudDsKK30KKwordm9pZCBET01VUkw6OnNldEhhc2goY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAodmFsdWVbMF0gPT0g
JyMnKQorICAgICAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlLnN1YnN0cmluZygx
KSk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlKTsK
KyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBET01VUkw6OmZpbGVuYW1l
KCkKK3sKKyAgICByZXR1cm4gIiI7Cit9CisKK1N0cmluZyBET01VUkw6Om9yaWdpbigpIGNvbnN0
Cit7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKGhyZWYoKSk7CisgICAgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsKK30KKworU3Ry
aW5nIERPTVVSTDo6Z2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBtZQorICAgIHJldHVybiAiIjsKK30KKwordm9pZCBET01VUkw6OmFwcGVuZFBh
cmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgbWUKK30KKwordm9pZCBET01VUkw6OmNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZQorfQorCisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEJMT0IpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVVSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJM
LmgJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoQkxPQikKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTQ1LDE0ICs0Nyw1NiBAQAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERP
TVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OyB9CiAgICAgfkRPTVVSTCgpOwogCisgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyB1c2VybmFtZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJp
bmcgcGFzc3dvcmQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYp
OworCisgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3Ry
aW5nJik7CisKKyAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3Ru
YW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBvcnQoKSBjb25zdDsKKyAgICB2b2lk
IHNldFBvcnQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsK
KyAgICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHNlYXJj
aCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2VhcmNoKGNvbnN0IFN0cmluZyYpOworCisgICAgU3Ry
aW5nIGhhc2goKSBjb25zdDsKKyAgICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5nJik7CisKKyAg
ICBTdHJpbmcgZmlsZW5hbWUoKTsKKyAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CisKKyAgICBL
VVJMIGhyZWYoKSBjb25zdDsKKyAgICB2b2lkIHNldEhyZWYoY29uc3QgU3RyaW5nJik7CisKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoTWVkaWFT
dHJlYW0qKTsKICNlbmRpZgogICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoQmxvYiopOwogICAg
IHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOwogCisgICAgU3RyaW5nIGdldFBh
cmFtZXRlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0
cmluZyYpOworCiBwcml2YXRlOgorICAgIFN0cmluZyBtX2ZpbGVuYW1lOworICAgIFN0cmluZyBt
X29yaWdpbjsKKyAgICBLVVJMIG1faHJlZjsKKwogICAgIGV4cGxpY2l0IERPTVVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisgICAgRE9NVVJMKFN0cmluZyYsIFN0cmluZyYpOwogCiAgICAg
dmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115121</attachid>
            <date>2011-11-15 01:29:40 -0800</date>
            <delta_ts>2011-11-15 04:18:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>71968-patch.txt</filename>
            <type>text/plain</type>
            <size>9808</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDI0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE1ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBVUkwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTk2OAorCisgICAgICAgIEltcGxtZW50aW5nIFVSTCBBUElzIHdpdGggcmVmZXJlbmNldCB0
byB0aGUgZHJhZnQKKyAgICAgICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3VybC9yYXctZmlsZS90
aXAvT3ZlcnZpZXcuaHRtbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpE
T01VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpyZXZva2VPYmplY3RVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpocmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6
c2V0SHJlZik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnByb3RvY29sKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJM
Ojp1c2VybmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFVzZXJuYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cGFzc3dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VVJMOjpzZXRQYXNzd29yZCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6Omhvc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVS
TDo6aG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIb3N0bmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJM
OjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cGF0aG5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRQYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01V
Ukw6OnNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFNlYXJjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01VUkw6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpz
ZXRIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6ZmlsZW5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NVVJMOjpzZXRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
Om9yaWdpbik6CisgICAgICAgICogaHRtbC9ET01VUkwuaDoKKyAgICAgICAgKiBodG1sL0RPTVVS
TC5pZGw6CisKIDIwMTEtMTEtMTUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtWOF0gRml4IGluY29ycmVjdCBoYW5kbGluZyBvZiBKYXZhU2NyaXB0IHByb3Bl
cnRpZXMgaW4gRE9NU3RyaW5nTWFwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCShyZXZpc2lv
biAxMDAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9i
aWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw4ICszMiwx
MCBAQAogCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAt
NDMsNiArNDYsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitET01VUkw6OkRPTVVSTChT
dHJpbmcmIHVybCwgU3RyaW5nJiBiYXNlVVJMKQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoMCkKKyAgICAsIG1faHJlZihLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSkKK3sKKyAg
ICAvLyBSZXNvbHZlIHRoZSBVUkwgcmVsYXRpdmUgdG8gYmFzZVVSTCBpZiBpcyBwcm92aWRlLgor
ICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkpCisgICAgICAgIG1faHJlZiA9IEtVUkwobV9ocmVm
LCBiYXNlVVJMKTsKK30KKwogRE9NVVJMOjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CkBAIC0xMjUsNiArMTM3LDE4MiBAQCB2b2lkIERP
TVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluCiAjZW5kaWYKIH0KIAorS1VSTCBET01V
Ukw6OmhyZWYoKSBjb25zdAoreworICAgIHJldHVybiBtX2hyZWY7Cit9CisKK3ZvaWQgRE9NVVJM
OjpzZXRIcmVmKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9ocmVmID0gS1VSTChLVVJM
KCksIHZhbHVlKTsKK30KKworU3RyaW5nIERPTVVSTDo6cHJvdG9jb2woKSBjb25zdAoreworICAg
IHJldHVybiBocmVmKCkucHJvdG9jb2woKSArICI6IjsKK30KKwordm9pZCBET01VUkw6OnNldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7Cisg
ICAgdXJsLnNldFByb3RvY29sKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9
CisKK1N0cmluZyBET01VUkw6OnVzZXJuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaHJlZigp
LnVzZXIoKTsKK30KKwordm9pZCBET01VUkw6OnNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYgdmFs
dWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgdXJsLnNldFVzZXIodmFsdWUpOwor
ICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERPTVVSTDo6cGFzc3dvcmQo
KSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkucGFzcygpOworfQorCit2b2lkIERPTVVSTDo6
c2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYo
KTsKKyAgICB1cmwuc2V0UGFzcyh2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwor
fQorCitTdHJpbmcgRE9NVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICBjb25zdCBLVVJMJiB1cmwg
PSBocmVmKCk7CisgICAgaWYgKHVybC5ob3N0RW5kKCkgPT0gdXJsLnBhdGhTdGFydCgpKQorICAg
ICAgICByZXR1cm4gdXJsLmhvc3QoKTsKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29s
KHVybC5wb3J0KCksIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0dXJuIHVybC5ob3N0KCk7
CisgICAgcmV0dXJuIHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgp
KTsKK30KKwordm9pZCBET01VUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBLVVJMIHVybCA9
IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNpemVfdCBjb2xvbiA9IHZhbHVlLmZpbmQoJzonKTsKKyAgICBpZiAoIWNvbG9u
KQorICAgICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOworICAg
IHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERPTVVSTDo6aG9zdG5hbWUoKSBj
b25zdAoreworICAgIHJldHVybiBocmVmKCkuaG9zdCgpOworfQorCit2b2lkIERPTVVSTDo6c2V0
SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAg
ICB1bnNpZ25lZCBob3N0TGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CisgICAgd2hpbGUgKHZhbHVl
W2ldID09ICcvJykKKyAgICAgICAgaSsrOworCisgICAgaWYgKGkgPT0gaG9zdExlbmd0aCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2Fu
U2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0SG9zdCh2YWx1
ZS5zdWJzdHJpbmcoaSkpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5n
IERPTVVSTDo6cG9ydCgpIGNvbnN0Cit7CisgICAgaWYgKGhyZWYoKS5oYXNQb3J0KCkpCisgICAg
ICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihocmVmKCkucG9ydCgpKTsKKworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOworfQorCit2b2lkIERPTVVSTDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZh
bHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldEhvc3RP
clBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXJsLnNldFBvcnQodmFsdWUudG9VSW50
KCkpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERPTVVSTDo6cGF0
aG5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkucGF0aCgpOworfQorCit2b2lkIERP
TVVSTDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9
IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICB1cmwuc2V0UGF0aCh2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwor
fQorCitTdHJpbmcgRE9NVVJMOjpzZWFyY2goKSBjb25zdAoreworICAgIFN0cmluZyBxdWVyeSA9
IGhyZWYoKS5xdWVyeSgpOworICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0eVN0cmlu
ZygpIDogIj8iICsgcXVlcnk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRTZWFyY2goY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBTdHJpbmcgbmV3U2Vh
cmNoID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAg
ICB1cmwuc2V0UXVlcnkobmV3U2VhcmNoLnJlcGxhY2UoJyMnLCAiJTIzIikpOworCisgICAgc2V0
SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpoYXNoKCkgY29uc3QKK3sK
KyAgICBTdHJpbmcgZnJhZ21lbnQgPSBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAg
cmV0dXJuIGZyYWdtZW50LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBmcmFnbWVu
dDsKK30KKwordm9pZCBET01VUkw6OnNldEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAodmFsdWVbMF0gPT0gJyMnKQorICAgICAgICB1
cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlLnN1YnN0cmluZygxKSk7CisgICAgZWxzZQor
ICAgICAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVy
bC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBET01VUkw6OmZpbGVuYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaHJlZigpLmxhc3RQYXRoQ29tcG9uZW50KCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpz
ZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxl
bWVudC4gQ3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgYXMgcGVyIGRyYWZ0LgorfQorCitTdHJpbmcg
RE9NVVJMOjpvcmlnaW4oKSBjb25zdAoreworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShocmVmKCkpOworICAgIHJldHVybiBvcmlnaW4t
PnRvU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShCTE9CKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCShyZXZpc2lvbiAxMDAyMzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMzAsNyBAQAogI2lmIEVOQUJMRShC
TE9CKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDUsMTQgKzQ3LDU2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQogICAgIH5ET01VUkwoKTsKIAorICAgIFN0cmluZyBw
cm90b2NvbCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisK
KyAgICBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldFVzZXJuYW1lKGNvbnN0
IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQ
YXNzd29yZChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBob3N0KCkgY29uc3Q7CisgICAg
dm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGhvc3RuYW1lKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBw
b3J0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3J0KGNvbnN0IFN0cmluZyYpOworCisgICAgU3Ry
aW5nIHBhdGhuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXRobmFtZShjb25zdCBTdHJpbmcm
KTsKKworICAgIFN0cmluZyBzZWFyY2goKSBjb25zdDsKKyAgICB2b2lkIHNldFNlYXJjaChjb25z
dCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBoYXNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIYXNo
KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGZpbGVuYW1lKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBvcmlnaW4oKSBjb25z
dDsKKworICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJp
bmcmKTsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgU3RyaW5nIGNyZWF0ZU9iamVj
dFVSTChNZWRpYVN0cmVhbSopOwogI2VuZGlmCiAgICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChC
bG9iKik7CiAgICAgdm9pZCByZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJik7CiAKKyAgICBT
dHJpbmcgZ2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kUGFyYW1l
dGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY2xlYXJQYXJhbWV0
ZXIoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CisgICAgS1VSTCBtX2hyZWY7CisKICAgICBl
eHBsaWNpdCBET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIERPTVVSTChTdHJp
bmcmLCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlzaW9uIDEwMDIzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNywyNiBAQAogbW9kdWxlIGh0bWwgewog
ICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUJMT0IsCisgICAgICAgIENvbnN0
cnVjdG9yKERPTVN0cmluZyB1cmwsIG9wdGlvbmFsIERPTVN0cmluZyBiYXNlVVJMKQogICAgICAg
ICBPbWl0Q29uc3RydWN0b3IsCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAogICAg
ICAgICBHZW5lcmF0ZVRvSlMsCiAgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBET01VUkwg
eworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOworICAgICAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHVzZXJuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBhc3N3
b3JkOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3Q7CisgICAgICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgaG9zdG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcG9ydDsK
KyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwYXRobmFtZTsKKyAgICAgICAgYXR0cmlidXRl
IERPTVN0cmluZyBzZWFyY2g7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaGFzaDsKKwor
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZpbGVuYW1lOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKKyAgICAgICAgc3RyaW5naWZpZXIgYXR0cmlidXRl
IERPTVN0cmluZyBocmVmOworCiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBF
TkFCTEVfTUVESUFfU1RSRUFNCiAgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOwogI2Vu
ZGlmCg==
</data>
<flag name="commit-queue"
          id="113954"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115138</attachid>
            <date>2011-11-15 04:18:03 -0800</date>
            <delta_ts>2011-11-16 23:40:07 -0800</delta_ts>
            <desc>Progress Patch 2</desc>
            <filename>71968-patch.txt</filename>
            <type>text/plain</type>
            <size>11004</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IGNvbmZpZ3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuYWMJKHJldmlzaW9u
IDEwMDIzNykKKysrIGNvbmZpZ3VyZS5hYwkod29ya2luZyBjb3B5KQpAQCAtMTA5MSw4ICsxMDkx
LDggQEAgZmkKICMgUGx1Z2luIFByb2Nlc3MKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBi
dWlsZCBwbHVnaW4gcHJvY2VzcyBmb3IgV2ViS2l0Ml0pCiBBQ19BUkdfRU5BQkxFKHBsdWdpbl9w
cm9jZXNzLAotICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBsdWdpbi1wcm9j
ZXNzXSwgW2J1aWxkIHBsdWdpbiBwcm9jZXNzIGZvciBXZWJLaXQyIFtkZWZhdWx0PXllc11dKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBbZW5hYmxlX3BsdWdpbl9wcm9jZXNzPSJ5
ZXMiXSkKKyAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wbHVnaW4tcHJvY2Vz
c10sIFtidWlsZCBwbHVnaW4gcHJvY2VzcyBmb3IgV2ViS2l0MiBbZGVmYXVsdD1ub11dKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBbZW5hYmxlX3BsdWdpbl9wcm9jZXNzPSJubyJd
KQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9wbHVnaW5fcHJvY2Vzc10pCiAKICMgQnVpbGQgdGhl
IHBsdWdpbiBwcm9jZXNzIG9ubHkgd2hlbiBidWlsZGluZyBXZWJraXQyLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTAwMjQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMTEtMTUgIEthdXN0dWJoIEF0cmF3YWxrYXIg
IDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFVSTCBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTY4CisKKyAg
ICAgICAgSW1wbG1lbnRpbmcgVVJMIEFQSXMgd2l0aCByZWZlcmVuY2V0IHRvIHRoZSBkcmFmdAor
ICAgICAgICBodHRwOi8vZHZjcy53My5vcmcvaGcvdXJsL3Jhdy1maWxlL3RpcC9PdmVydmlldy5o
dG1sCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dG1sL0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OkRPTVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01VUkw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIcmVmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VVJMOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnVzZXJuYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0VXNlcm5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpwYXNzd29yZCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFBhc3N3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6aG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpob3N0bmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFBvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01VUkw6OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2VhcmNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpmaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01V
Ukw6OnNldEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6b3JpZ2luKToKKyAg
ICAgICAgKiBodG1sL0RPTVVSTC5oOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmlkbDoKKwogMjAx
MS0xMS0xNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4
XSBGaXggaW5jb3JyZWN0IGhhbmRsaW5nIG9mIEphdmFTY3JpcHQgcHJvcGVydGllcyBpbiBET01T
dHJpbmdNYXAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDEwMDIzNykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDggKzMyLDEwIEBACiAKICNpbmNs
dWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00Myw2ICs0NiwxNSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RPTVVSTDo6RE9NVVJMKFN0cmluZyYgdXJsLCBT
dHJpbmcmIGJhc2VVUkwpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigwKQorICAg
ICwgbV9ocmVmKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKQoreworICAgIC8vIFJlc29sdmUg
dGhlIFVSTCByZWxhdGl2ZSB0byBiYXNlVVJMIGlmIGlzIHByb3ZpZGUuCisgICAgaWYgKCFiYXNl
VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgbV9ocmVmID0gS1VSTChtX2hyZWYsIGJhc2VVUkwpOwor
fQorCiBET01VUkw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKIHsKQEAgLTEyNSw2ICsxMzcsMTk4IEBAIHZvaWQgRE9NVVJMOjpyZXZva2VP
YmplY3RVUkwoY29uc3QgU3RyaW4KICNlbmRpZgogfQogCitLVVJMIERPTVVSTDo6aHJlZigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faHJlZjsKK30KKwordm9pZCBET01VUkw6OnNldEhyZWYoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2hyZWYgPSBLVVJMKEtVUkwoKSwgdmFsdWUpOwor
fQorCitTdHJpbmcgRE9NVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhyZWYo
KS5wcm90b2NvbCgpICsgIjoiOworfQorCit2b2lkIERPTVVSTDo6c2V0UHJvdG9jb2woY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0UHJv
dG9jb2wodmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERP
TVVSTDo6dXNlcm5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkudXNlcigpOworfQor
Cit2b2lkIERPTVVSTDo6c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBL
VVJMIHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0VXNlcih2YWx1ZSk7CisgICAgc2V0SHJlZih1
cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpwYXNzd29yZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGhyZWYoKS5wYXNzKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQYXNzd29yZChj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIHVybC5z
ZXRQYXNzKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBE
T01VUkw6Omhvc3QoKSBjb25zdAoreworICAgIGNvbnN0IEtVUkwmIHVybCA9IGhyZWYoKTsKKyAg
ICBpZiAodXJsLmhvc3RFbmQoKSA9PSB1cmwucGF0aFN0YXJ0KCkpCisgICAgICAgIHJldHVybiB1
cmwuaG9zdCgpOworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKSwg
dXJsLnByb3RvY29sKCkpKQorICAgICAgICByZXR1cm4gdXJsLmhvc3QoKTsKKyAgICByZXR1cm4g
dXJsLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCkpOworfQorCit2b2lk
IERPTVVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAg
IGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6
ZV90IGNvbG9uID0gdmFsdWUuZmluZCgnOicpOworICAgIGlmICghY29sb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwu
c3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpob3N0bmFtZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGhyZWYoKS5ob3N0KCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIb3N0bmFtZShjb25z
dCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2lnbmVkIGhv
c3RMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0gPT0gJy8nKQor
ICAgICAgICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAgICByZXR1cm47
CisKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVybC5zZXRIb3N0KHZhbHVlLnN1YnN0cmluZyhp
KSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpwb3J0
KCkgY29uc3QKK3sKKyAgICBpZiAoaHJlZigpLmhhc1BvcnQoKSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZzo6bnVtYmVyKGhyZWYoKS5wb3J0KCkpOworCisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQb3J0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAg
S1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0UG9ydCh2YWx1ZS50b1VJbnQoKSk7CisgICAgc2V0
SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpwYXRobmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGhyZWYoKS5wYXRoKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQYXRo
bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAg
IGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVybC5z
ZXRQYXRoKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBE
T01VUkw6OnNlYXJjaCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHF1ZXJ5ID0gaHJlZigpLnF1ZXJ5
KCk7CisgICAgcmV0dXJuIHF1ZXJ5LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIgKyBx
dWVyeTsKK30KKwordm9pZCBET01VUkw6OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFN0cmluZyBuZXdTZWFyY2ggPSAodmFsdWVb
MF0gPT0gJz8nKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOworICAgIHVybC5zZXRRdWVy
eShuZXdTZWFyY2gucmVwbGFjZSgnIycsICIlMjMiKSk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJp
bmcoKSk7Cit9CisKK1N0cmluZyBET01VUkw6Omhhc2goKSBjb25zdAoreworICAgIFN0cmluZyBm
cmFnbWVudCA9IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gZnJhZ21l
bnQuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50OworfQorCit2b2lk
IERPTVVSTDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0g
aHJlZigpOworICAgIGlmICh2YWx1ZVswXSA9PSAnIycpCisgICAgICAgIHVybC5zZXRGcmFnbWVu
dElkZW50aWZpZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKKyAgICBlbHNlCisgICAgICAgIHVybC5z
ZXRGcmFnbWVudElkZW50aWZpZXIodmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsK
K30KKworU3RyaW5nIERPTVVSTDo6ZmlsZW5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBocmVm
KCkubGFzdFBhdGhDb21wb25lbnQoKTsKK30KKwordm9pZCBET01VUkw6OnNldEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gaW1wbGVtZW50LiBDdXJyZW50
bHkgbm90IHN1cHBvcnRlZCBhcyBwZXIgZHJhZnQuCit9CisKK1N0cmluZyBET01VUkw6Om9yaWdp
bigpIGNvbnN0Cit7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKGhyZWYoKSk7CisgICAgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsK
K30KKworU3RyaW5nIGdldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgbWUuCisgICAgcmV0dXJuICIiOworfQorCit2b2lkIGFwcGVuZFBhcmFtZXRl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgbWUuCit9CisKK3ZvaWQgY2xlYXJQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IG1lLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoQkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2aXNpb24gMTAw
MjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzMwLDcgQEAKICNp
ZiBFTkFCTEUoQkxPQikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ1LDE0ICs0Nyw1NiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KICAgICB+RE9NVVJMKCk7CiAKKyAg
ICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKKyAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0
cmluZyYpOworCisgICAgU3RyaW5nIHVzZXJuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVc2Vy
bmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0OworICAg
IHZvaWQgc2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaG9zdCgpIGNv
bnN0OworICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBob3N0
bmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAg
ICBTdHJpbmcgcG9ydCgpIGNvbnN0OworICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsK
KworICAgIFN0cmluZyBwYXRobmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UGF0aG5hbWUoY29u
c3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgc2VhcmNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRT
ZWFyY2goY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OworICAgIHZv
aWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBmaWxlbmFtZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0RmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgb3Jp
Z2luKCkgY29uc3Q7CisKKyAgICBLVVJMIGhyZWYoKSBjb25zdDsKKyAgICB2b2lkIHNldEhyZWYo
Y29uc3QgU3RyaW5nJik7CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFN0cmluZyBj
cmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qKTsKICNlbmRpZgogICAgIFN0cmluZyBjcmVhdGVP
YmplY3RVUkwoQmxvYiopOwogICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYp
OwogCisgICAgU3RyaW5nIGdldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFw
cGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNs
ZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpOworCiBwcml2YXRlOgorICAgIEtVUkwgbV9ocmVm
OworCiAgICAgZXhwbGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBE
T01VUkwoU3RyaW5nJiwgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ry
b3llZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCShyZXZpc2lvbiAxMDAyMzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjcsMzEgQEAKIG1vZHVs
ZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1CTE9CLAorICAg
ICAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgdXJsLCBvcHRpb25hbCBET01TdHJpbmcgYmFzZVVS
TCkKICAgICAgICAgT21pdENvbnN0cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZl
cnRlciwKICAgICAgICAgR2VuZXJhdGVUb0pTLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwogICAg
IF0gRE9NVVJMIHsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2NvbDsKKyAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyB1c2VybmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyBwYXNzd29yZDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBob3N0OworICAgICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3RuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHBvcnQ7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgc2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGhhc2g7CisKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmaWxlbmFtZTsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBvcmlnaW47CisgICAgICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgaHJlZjsKKworICAgICAgICBET01TdHJpbmcgZ2V0UGFyYW1ldGVyKERPTVN0cmlu
ZyBuYW1lKTsKKyAgICAgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoRE9NU3RyaW5nIG5hbWUsIERP
TVN0cmluZyB2YWx1ZXMpOworICAgICAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihET01TdHJpbmcg
bmFtZSwgRE9NU3RyaW5nW10gdmFsdWVzKTsKKyAgICAgICAgdm9pZCBjbGVhclBhcmFtZXRlcihE
T01TdHJpbmcgbmFtZSk7CisKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYmIEVO
QUJMRV9NRURJQV9TVFJFQU0KICAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVk
XSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CiAjZW5k
aWYK
</data>
<flag name="commit-queue"
          id="114175"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115532</attachid>
            <date>2011-11-16 23:40:07 -0800</date>
            <delta_ts>2011-11-18 03:34:25 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>71968-patch.txt</filename>
            <type>text/plain</type>
            <size>11139</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDExLTExLTE2ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEludGlhbCBJ
bXBsZW1lbnRhdGlvbiBvZiBET01VUkwuIEFkZGluZyBJREwgYXR0cmlidXRlcyBhbmQgZW1wdHkg
ZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzE5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsbWVudGluZyBVUkwgQVBJcyB3aXRoIHJlZmVyZW5jZXQgdG8gdGhlIGRyYWZ0CisgICAg
ICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy91cmwvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwK
KworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL0RPTVVSTC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01VUkw6OkRPTVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01V
Ukw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmhyZWYpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6cHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRQcm90b2NvbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6c2V0VXNlcm5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwYXNzd29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFBhc3N3b3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVVSTDo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhvc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpob3N0bmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVVJMOjpwYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFBhdGhuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6aGFzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VVJMOjpmaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEZpbGVuYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6b3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6YXBwZW5kUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y2xlYXJQYXJhbWV0ZXIpOgorICAg
ICAgICAqIGh0bWwvRE9NVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZSk6
CisgICAgICAgICogaHRtbC9ET01VUkwuaWRsOgorCiAyMDExLTExLTE2ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZmlsdGVyIGZ1bmN0aW9uIHNo
b3J0aGFuZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHJldmlzaW9uIDEwMDU2MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDcgKzMzLDkgQEAKICNpbmNsdWRl
ICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9i
UmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00Myw2ICs0Niwx
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0RPTVVSTDo6RE9NVVJMKFN0cmluZyYgdXJs
LCBTdHJpbmcmIGJhc2VVUkwpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigwKQor
ICAgICwgbV9ocmVmKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKQoreworICAgIC8vIFJlc29s
dmUgdGhlIFVSTCByZWxhdGl2ZSB0byBiYXNlVVJMIGlmIGlzIHByb3ZpZGUuCisgICAgaWYgKCFi
YXNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgbV9ocmVmID0gS1VSTChtX2hyZWYsIGJhc2VVUkwp
OworfQorCiBET01VUkw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKIHsKQEAgLTEyNSw2ICsxMzcsMjA3IEBAIHZvaWQgRE9NVVJMOjpyZXZv
a2VPYmplY3RVUkwoY29uc3QgU3RyaW4KICNlbmRpZgogfQogCitLVVJMIERPTVVSTDo6aHJlZigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faHJlZjsKK30KKwordm9pZCBET01VUkw6OnNldEhyZWYo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2hyZWYgPSBLVVJMKEtVUkwoKSwgdmFsdWUp
OworfQorCitTdHJpbmcgRE9NVVJMOjpwcm90b2NvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhy
ZWYoKS5wcm90b2NvbCgpICsgIjoiOworfQorCit2b2lkIERPTVVSTDo6c2V0UHJvdG9jb2woY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0
UHJvdG9jb2wodmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5n
IERPTVVSTDo6dXNlcm5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkudXNlcigpOwor
fQorCit2b2lkIERPTVVSTDo6c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0VXNlcih2YWx1ZSk7CisgICAgc2V0SHJl
Zih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpwYXNzd29yZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGhyZWYoKS5wYXNzKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQYXNzd29y
ZChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIHVy
bC5zZXRQYXNzKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0cmlu
ZyBET01VUkw6Omhvc3QoKSBjb25zdAoreworICAgIGNvbnN0IEtVUkwmIHVybCA9IGhyZWYoKTsK
KyAgICBpZiAodXJsLmhvc3RFbmQoKSA9PSB1cmwucGF0aFN0YXJ0KCkpCisgICAgICAgIHJldHVy
biB1cmwuaG9zdCgpOworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQo
KSwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICByZXR1cm4gdXJsLmhvc3QoKTsKKyAgICByZXR1
cm4gdXJsLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCkpOworfQorCit2
b2lkIERPTVVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEtVUkwgdXJsID0gaHJlZigpOwor
ICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
c2l6ZV90IGNvbG9uID0gdmFsdWUuZmluZCgnOicpOworICAgIGlmICghY29sb24pCisgICAgICAg
IHJldHVybjsKKworICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAgc2V0SHJlZih1
cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpob3N0bmFtZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIb3N0bmFtZShj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2lnbmVk
IGhvc3RMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0gPT0gJy8n
KQorICAgICAgICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAgICByZXR1
cm47CisKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQ
b3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVybC5zZXRIb3N0KHZhbHVlLnN1YnN0cmlu
ZyhpKSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpw
b3J0KCkgY29uc3QKK3sKKyAgICBpZiAoaHJlZigpLmhhc1BvcnQoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKGhyZWYoKS5wb3J0KCkpOworCisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQb3J0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0UG9ydCh2YWx1ZS50b1VJbnQoKSk7CisgICAg
c2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpwYXRobmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGhyZWYoKS5wYXRoKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQ
YXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOwor
ICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVy
bC5zZXRQYXRoKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0cmlu
ZyBET01VUkw6OnNlYXJjaCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHF1ZXJ5ID0gaHJlZigpLnF1
ZXJ5KCk7CisgICAgcmV0dXJuIHF1ZXJ5LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIg
KyBxdWVyeTsKK30KKwordm9pZCBET01VUkw6OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVl
KQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFN0cmluZyBuZXdTZWFyY2ggPSAodmFs
dWVbMF0gPT0gJz8nKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOworICAgIHVybC5zZXRR
dWVyeShuZXdTZWFyY2gucmVwbGFjZSgnIycsICIlMjMiKSk7CisKKyAgICBzZXRIcmVmKHVybC5z
dHJpbmcoKSk7Cit9CisKK1N0cmluZyBET01VUkw6Omhhc2goKSBjb25zdAoreworICAgIFN0cmlu
ZyBmcmFnbWVudCA9IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gZnJh
Z21lbnQuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50OworfQorCit2
b2lkIERPTVVSTDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJs
ID0gaHJlZigpOworICAgIGlmICh2YWx1ZVswXSA9PSAnIycpCisgICAgICAgIHVybC5zZXRGcmFn
bWVudElkZW50aWZpZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKKyAgICBlbHNlCisgICAgICAgIHVy
bC5zZXRGcmFnbWVudElkZW50aWZpZXIodmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKK30KKworU3RyaW5nIERPTVVSTDo6ZmlsZW5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBo
cmVmKCkubGFzdFBhdGhDb21wb25lbnQoKTsKK30KKwordm9pZCBET01VUkw6OnNldEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IE5lZWQgdG8gaW1wbGVtZW50LiBDdXJy
ZW50bHkgbm90IHN1cHBvcnRlZCBhcyBwZXIgZHJhZnQuCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworU3RyaW5nIERPTVVSTDo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICBy
ZXR1cm4gb3JpZ2luLT50b1N0cmluZygpOworfQorCitTdHJpbmcgRE9NVVJMOjpnZXRQYXJhbWV0
ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgorICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIERPTVVSTDo6
YXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIERPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQordm9pZCBET01VUkw6OmNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQkxPQikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuaAkocmV2aXNpb24gMTAwNTYxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI5LDYgKzMwLDggQEAKICNpZiBFTkFCTEUoQkxPQikKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00Myw4ICs0Niw0OSBA
QCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgRE9NVVJMIDogcHVibGljIFJl
ZkNvdW50ZWQ8RE9NVVJMPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcg
RE9NVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERPTVVSTD4gY3JlYXRlKFN0cmluZyYgdXJsLCBTdHJpbmcmIGJhc2VVUkwpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBET01VUkwodXJsLCBiYXNlVVJMKSk7IH0KICAgICB+RE9NVVJMKCk7CiAKKyAg
ICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKKyAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0
cmluZyYpOworCisgICAgU3RyaW5nIHVzZXJuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVc2Vy
bmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0OworICAg
IHZvaWQgc2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaG9zdCgpIGNv
bnN0OworICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBob3N0
bmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAg
ICBTdHJpbmcgcG9ydCgpIGNvbnN0OworICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsK
KworICAgIFN0cmluZyBwYXRobmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UGF0aG5hbWUoY29u
c3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgc2VhcmNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRT
ZWFyY2goY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OworICAgIHZv
aWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBmaWxlbmFtZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0RmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgb3Jp
Z2luKCkgY29uc3Q7CisKKyAgICBLVVJMIGhyZWYoKSBjb25zdDsKKyAgICB2b2lkIHNldEhyZWYo
Y29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgZ2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4pOworICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXIoY29uc3QgU3RyaW5n
Jik7CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFN0cmluZyBjcmVhdGVPYmplY3RV
UkwoTWVkaWFTdHJlYW0qKTsKICNlbmRpZgpAQCAtNTIsNyArOTYsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgorICAgIEtV
UkwgbV9ocmVmOworCiAgICAgZXhwbGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICBET01VUkwoU3RyaW5nJiwgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29u
dGV4dERlc3Ryb3llZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCShyZXZpc2lvbiAx
MDA1NjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxp
dHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwxMyArMjUsMzMg
QEAKICAqLwogCiBtb2R1bGUgaHRtbCB7CisgICAgW0NvbnN0cnVjdG9yKERPTVN0cmluZyB1cmws
IG9wdGlvbmFsIERPTVN0cmluZyBiYXNlVVJMKV0KICAgICBpbnRlcmZhY2UgWwogICAgICAgICBD
b25kaXRpb25hbD1CTE9CLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IsCiAgICAgICAgIEdlbmVy
YXRlTmF0aXZlQ29udmVydGVyLAogICAgICAgICBHZW5lcmF0ZVRvSlMsCi0gICAgICAgIE5vU3Rh
dGljVGFibGVzCisgICAgICAgIE5vU3RhdGljVGFibGVzLAorICAgICAgICBSZXBsYWNlYWJsZQog
ICAgIF0gRE9NVVJMIHsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2NvbDsKKyAg
ICAgICAgYXR0cmlidXRlIERPTVN0cmluZyB1c2VybmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERP
TVN0cmluZyBwYXNzd29yZDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBob3N0OworICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3RuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHBvcnQ7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGhhc2g7CisKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmaWxlbmFtZTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBvcmlnaW47CisgICAgICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgaHJlZjsKKworICAgICAgICBET01TdHJpbmcgZ2V0UGFyYW1ldGVyKGluIERP
TVN0cmluZyBuYW1lKTsKKyAgICAgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5n
IG5hbWUsIGluIERPTVN0cmluZyB2YWx1ZXMpOworICAgICAgICB2b2lkIGFwcGVuZFBhcmFtZXRl
cihpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nW10gdmFsdWVzKTsKKyAgICAgICAgdm9p
ZCBjbGVhclBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSk7CisKICNpZiBkZWZpbmVkKEVOQUJM
RV9NRURJQV9TVFJFQU0pICYmIEVOQUJMRV9NRURJQV9TVFJFQU0KICAgICAgICAgW0NvbnZlcnRO
dWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlh
U3RyZWFtIHN0cmVhbSk7CiAjZW5kaWYK
</data>
<flag name="review"
          id="114471"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115780</attachid>
            <date>2011-11-18 03:34:25 -0800</date>
            <delta_ts>2011-11-23 01:34:10 -0800</delta_ts>
            <desc>IDL Attributes implementation</desc>
            <filename>71968-patch.txt</filename>
            <type>text/plain</type>
            <size>47839</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDc0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDExLTExLTE4ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEludGlhbCBJ
bXBsZW1lbnRhdGlvbiBvZiBET01VUkwuIEFkZGluZyBJREwgYXR0cmlidXRlcyBhbmQgZW1wdHkg
ZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzE5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsbWVudGluZyBET01VUkwgYXR0cmlidXRlcyBhcyBwZXIgdGhlIGRyYWZ0IC0KKyAgICAg
ICAgaHR0cDovL2R2Y3MudzMub3JnL2hnL3VybC9yYXctZmlsZS90aXAvT3ZlcnZpZXcuaHRtbAor
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9ET01VUkwvZ2V0LWRvbXVybC1hdHRyaWJ1dGUtcG9y
dC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1
dGUtaGFzaC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1h
dHRyaWJ1dGUtaG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvc2V0LWRv
bXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9N
VVJML3NldC1kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtc2VhcmNo
Lmh0bWwKKworICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6RE9NVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cmV2b2tlT2JqZWN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6aHJlZik6CisgICAgICAgIChXZWJDb3JlOjpE
T01VUkw6OnNldEhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwcm90b2NvbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFByb3RvY29sKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6dXNlcm5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRVc2VybmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6c2V0UGFzc3dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpob3N0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6Omhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0SG9zdG5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBhdGhuYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpzZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRTZWFyY2gp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6c2V0SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmZpbGVuYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVVJMOjpvcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpnZXRQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjphcHBlbmRQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NVVJMOjpjbGVhclBhcmFtZXRlcik6CisgICAgICAgICogaHRtbC9ET01VUkwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0RP
TVVSTC5pZGw6CisKIDIwMTEtMTEtMTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZSAoYW5kIGlmZGVmKSBmcm9tIFY4RE9N
V2luZG93Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkocmV2aXNpb24gMTAw
NTYxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5
IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzMsOSBAQAog
I2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJCbG9iVVJMLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTQz
LDYgKzQ2LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRE9NVVJMOjpET01VUkwoU3Ry
aW5nJiB1cmwsIFN0cmluZyYgYmFzZVVSTCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKDApCisgICAgLCBtX2hyZWYoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpCit7CisgICAg
Ly8gUmVzb2x2ZSB0aGUgVVJMIHJlbGF0aXZlIHRvIGJhc2VVUkwgaWYgaXMgcHJvdmlkZS4KKyAg
ICBpZiAoIWJhc2VVUkwuaXNFbXB0eSgpKQorICAgICAgICBtX2hyZWYgPSBLVVJMKG1faHJlZiwg
YmFzZVVSTCk7Cit9CisKIERPTVVSTDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQogewpAQCAtMTI1LDYgKzEzNywyNDYgQEAgdm9pZCBET01V
Ukw6OnJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbgogI2VuZGlmCiB9CiAKK0tVUkwgRE9NVVJM
OjpocmVmKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ocmVmOworfQorCit2b2lkIERPTVVSTDo6
c2V0SHJlZihjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faHJlZiA9IEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB2YWx1ZSk7Cit9CisKK1N0cmluZyBET01VUkw6OnByb3RvY29sKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaHJlZigpLnByb3RvY29sKCkgKyAiOiI7Cit9CisKK3ZvaWQgRE9NVVJM
OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSAi
bnVsbCIpCisgICAgICAgIHJldHVybjsKKworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIHVy
bC5zZXRQcm90b2NvbCh2YWx1ZSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitT
dHJpbmcgRE9NVVJMOjp1c2VybmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhyZWYoKS51c2Vy
KCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRVc2VybmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIHVybC5zZXRVc2VyKHZhbHVlKTsKKyAgICBz
ZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBET01VUkw6OnBhc3N3b3JkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaHJlZigpLnBhc3MoKTsKK30KKwordm9pZCBET01VUkw6OnNldFBh
c3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7Cisg
ICAgdXJsLnNldFBhc3ModmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKwor
U3RyaW5nIERPTVVSTDo6aG9zdCgpIGNvbnN0Cit7CisgICAgY29uc3QgS1VSTCYgdXJsID0gaHJl
ZigpOworICAgIGlmICh1cmwuaG9zdEVuZCgpID09IHVybC5wYXRoU3RhcnQoKSkKKyAgICAgICAg
cmV0dXJuIHVybC5ob3N0KCk7CisgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1cmwu
cG9ydCgpLCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiB1cmwuaG9zdCgpOworICAg
IHJldHVybiB1cmwuaG9zdCgpICsgIjoiICsgU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSk7Cit9
CisKK3ZvaWQgRE9NVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSB8fCB2YWx1ZSA9PSAibnVsbCIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGNvbG9uID0gdmFsdWUuZmluZCgnOicpOwor
ICAgIGlmICghY29sb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjb2xvbiA9PSBub3RG
b3VuZCkKKyAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgdW5zaWduZWQgcG9ydFN0YXJ0ID0gY29sb24gKyAxOworICAgICAgICB1bnNpZ25lZCBw
b3J0RW5kID0gcG9ydFN0YXJ0OworCisgICAgICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQodmFsdWVb
cG9ydEVuZF0pKQorICAgICAgICAgICAgKytwb3J0RW5kOworCisgICAgICAgIHVuc2lnbmVkIHBv
cnQgPSB2YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0YXJ0KS50b1VJ
bnQoKTsKKyAgICAgICAgaWYgKCFwb3J0KQorICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0
KHZhbHVlLnN1YnN0cmluZygwLCBjb2xvbiArIDEpICsgIjAiKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2Nv
bCgpKSkKKyAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5n
KDAsIGNvbG9uKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXJsLnNldEhv
c3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5kKSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpob3N0bmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7Cit9CisKK3ZvaWQgRE9NVVJM
OjpzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSAi
bnVsbCIpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2ln
bmVkIGhvc3RMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0gPT0g
Jy8nKQorICAgICAgICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0
T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVybC5zZXRIb3N0KHZhbHVlLnN1YnN0
cmluZyhpKSk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJM
Ojpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoaHJlZigpLmhhc1BvcnQoKSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKGhyZWYoKS5wb3J0KCkpOworCisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQb3J0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7
CisgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkp
CisgICAgICAgIHVybC5yZW1vdmVQb3J0KCk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0UG9y
dCh2YWx1ZS50b1VJbnQoKSk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0
cmluZyBET01VUkw6OnBhdGhuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaHJlZigpLnBhdGgo
KTsKK30KKwordm9pZCBET01VUkw6OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0UGF0aG5hbWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZhbHVlID09ICJudWxsIikKKyAgICAgICAgdXJs
LnNldFBhdGgoU3RyaW5nKCkpOworICAgIGVsc2UgeworICAgICAgICBTdHJpbmcgbmV3UGF0aG5h
bWUgPSAodmFsdWVbMF0gPT0gJy8nKSA/IHZhbHVlIDogKCIvIiArIHZhbHVlKTsKKyAgICAgICAg
dXJsLnNldFBhdGgobmV3UGF0aG5hbWUpOworICAgIH0KKyAgICBzZXRIcmVmKHVybC5zdHJpbmco
KSk7Cit9CisKK1N0cmluZyBET01VUkw6OnNlYXJjaCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHF1
ZXJ5ID0gaHJlZigpLnF1ZXJ5KCk7CisgICAgcmV0dXJuIHF1ZXJ5LmlzRW1wdHkoKSA/IGVtcHR5
U3RyaW5nKCkgOiAiPyIgKyBxdWVyeTsKK30KKwordm9pZCBET01VUkw6OnNldFNlYXJjaChjb25z
dCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIGlmICh2YWx1
ZSA9PSAibnVsbCIpCisgICAgICAgIHVybC5zZXRRdWVyeShTdHJpbmcoKSk7CisgICAgZWxzZSB7
CisgICAgICAgIFN0cmluZyBuZXdTZWFyY2ggPSAodmFsdWVbMF0gPT0gJz8nKSA/IHZhbHVlLnN1
YnN0cmluZygxKSA6IHZhbHVlOworICAgICAgICB1cmwuc2V0UXVlcnkobmV3U2VhcmNoLnJlcGxh
Y2UoJyMnLCAiJTIzIikpOworICAgIH0KKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisK
K1N0cmluZyBET01VUkw6Omhhc2goKSBjb25zdAoreworICAgIFN0cmluZyBmcmFnbWVudCA9IGhy
ZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gZnJhZ21lbnQuaXNFbXB0eSgp
ID8gZW1wdHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50OworfQorCit2b2lkIERPTVVSTDo6c2V0
SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAg
IGlmICh2YWx1ZSA9PSAibnVsbCIgfHwgdmFsdWUgPT0gIiMiKQorICAgICAgICB1cmwuc2V0RnJh
Z21lbnRJZGVudGlmaWVyKFN0cmluZygpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgU3RyaW5nIG5l
d0hhc2ggPSAodmFsdWVbMF0gPT0gJyMnKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOwor
ICAgICAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKG5ld0hhc2gpOworICAgIH0KKyAgICBz
ZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBET01VUkw6OmZpbGVuYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaHJlZigpLmxhc3RQYXRoQ29tcG9uZW50KCk7Cit9CisKK3ZvaWQg
RE9NVVJMOjpzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBOZWVk
IHRvIGltcGxlbWVudC4gQ3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgYXMgcGVyIGRyYWZ0LgorICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBET01VUkw6Om9yaWdpbigpIGNvbnN0Cit7
CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGhyZWYoKSk7CisgICAgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsKK30KKworU3RyaW5n
IERPTVVSTDo6Z2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKwordm9pZCBET01VUkw6OmFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUu
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBET01VUkw6OmFwcGVuZFBhcmFtZXRl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KK3ZvaWQgRE9NVVJMOjpjbGVhclBhcmFt
ZXRlcihjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUuCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKEJMT0IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDEwMDU2MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICszMCw4IEBACiAjaWYgRU5B
QkxFKEJMT0IpCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01T
dHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgpAQCAtNDMsOCArNDYsNDkgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTdHJpbmcmIHVybCwgU3RyaW5nJiBi
YXNlVVJMKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHVybCwgYmFzZVVSTCkpOyB9CiAg
ICAgfkRPTVVSTCgpOwogCisgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyB1c2VybmFtZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcGFz
c3dvcmQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOworCisg
ICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7
CisKKyAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3RuYW1lKGNv
bnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBvcnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBv
cnQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdDsKKyAgICB2
b2lkIHNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHNlYXJjaCgpIGNv
bnN0OworICAgIHZvaWQgc2V0U2VhcmNoKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGhh
c2goKSBjb25zdDsKKyAgICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJp
bmcgZmlsZW5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEZpbGVuYW1lKGNvbnN0IFN0cmluZyYp
OworCisgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OworCisgICAgS1VSTCBocmVmKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRIcmVmKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGdldFBhcmFt
ZXRlcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KTsKKyAgICB2b2lkIGNsZWFyUGFy
YW1ldGVyKGNvbnN0IFN0cmluZyYpOworCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBT
dHJpbmcgY3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKik7CiAjZW5kaWYKQEAgLTUyLDcgKzk2
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmKTsK
IAogcHJpdmF0ZToKKyAgICBLVVJMIG1faHJlZjsKKwogICAgIGV4cGxpY2l0IERPTVVSTChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgRE9NVVJMKFN0cmluZyYsIFN0cmluZyYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9ET01VUkwuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
VVJMLmlkbAkocmV2aXNpb24gMTAwNTYxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjQsMTMgKzI1LDMzIEBACiAgKi8KIAogbW9kdWxlIGh0bWwgeworICAgIFtDb25zdHJ1
Y3RvcihET01TdHJpbmcgdXJsLCBvcHRpb25hbCBET01TdHJpbmcgYmFzZVVSTCldCiAgICAgaW50
ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENvbnN0cnVj
dG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgR2VuZXJhdGVU
b0pTLAotICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgICAgICBOb1N0YXRpY1RhYmxlcywKKyAg
ICAgICAgUmVwbGFjZWFibGUKICAgICBdIERPTVVSTCB7CisgICAgICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgcHJvdG9jb2w7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdXNlcm5hbWU7Cisg
ICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcGFzc3dvcmQ7CisgICAgICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgaG9zdDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBob3N0bmFtZTsKKyAg
ICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwb3J0OworICAgICAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHBhdGhuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlYXJjaDsKKyAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBoYXNoOworCisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgZmlsZW5hbWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgb3JpZ2lu
OworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhyZWY7CisKKyAgICAgICAgRE9NU3RyaW5n
IGdldFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSk7CisgICAgICAgIHZvaWQgYXBwZW5kUGFy
YW1ldGVyKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmFsdWVzKTsKKyAgICAgICAg
dm9pZCBhcHBlbmRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZ1tdIHZh
bHVlcyk7CisgICAgICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUpOwor
CiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBFTkFCTEVfTUVESUFfU1RSRUFN
CiAgICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0
ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOwogI2VuZGlmCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMDA3NDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0MCBAQAorMjAxMS0xMS0xOCAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJo
QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbnRpYWwgSW1wbGVtZW50YXRpb24gb2YgRE9NVVJM
LiBBZGRpbmcgSURMIGF0dHJpYnV0ZXMgYW5kIGVtcHR5IGZ1bmN0aW9ucy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTY4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbG1lbnRpbmcgRE9NVVJMIGF0
dHJpYnV0ZXMgYXMgcGVyIHRoZSBkcmFmdCAtCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9o
Zy91cmwvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwKKworICAgICAgICAqIGZhc3QvZG9tL0RP
TVVSTDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2dldC1kb211cmwtYXR0cmli
dXRlLXBvcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
Z2V0LWRvbXVybC1hdHRyaWJ1dGUtcG9ydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9ET01VUkwvc2NyaXB0LXRlc3RzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
c2NyaXB0LXRlc3RzL2dldC1kb211cmwtYXR0cmlidXRlLXBvcnQuanM6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaGFz
aC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML3NjcmlwdC10ZXN0cy9zZXQt
ZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01V
Ukwvc2NyaXB0LXRlc3RzL3NldC1kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvc2NyaXB0LXRlc3RzL3NldC1kb211cmwtYXR0cmli
dXRlLXBhdGhuYW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvc2NyaXB0
LXRlc3RzL3NldC1kb211cmwtYXR0cmlidXRlLXBvcnQuanM6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wu
anM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRv
bXVybC1hdHRyaWJ1dGUtc2VhcmNoLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01V
Ukwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML3NldC1kb211cmwt
YXR0cmlidXRlLWhvc3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML3Nl
dC1kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vRE9NVVJML3NldC1kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wYXRo
bmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zZXQt
ZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1w
cm90b2NvbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9z
ZXQtZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML3NldC1kb211cmwtYXR0cmlidXRlLXNlYXJj
aC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0xOCAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBhY2lkMy5odG1sIGZvciBDaHJvbWl1bSBN
YWMgMTAuNQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2dldC1kb211cmwtYXR0
cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9nZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9nZXQtZG9tdXJsLWF0dHJpYnV0
ZS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBn
ZXR0aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworRGVmYXVsdCBwb3J0IGlzIGVtcHR5CitQQVNTIGRvbXVybC5wb3J0
IGlzIAorVW5zcGVjaWZpZWQgcG9ydCBzaG91bGQgcmV0dXJuIGVtcHR5IHN0cmluZworUEFTUyBk
b211cmwucG9ydCBpcyAKK0VtcHR5IHBvcnQgc2hvdWxkIGJlIGVtcHR5CitQQVNTIGRvbXVybC5w
b3J0IGlzIAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9nZXQtZG9tdXJsLWF0dHJpYnV0
ZS1wb3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2dl
dC1kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9nZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9nZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9z
ZXQtZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaGFzaC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRv
bXVybC1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjUgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaGFzaCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0hhc2ggdmFsdWUgZG9lcyBub3Qgc3RhcnQg
d2l0aCAnIycKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL3BhdGgvdGVzdHVybC5odG1sI2hhc2gtdmFsdWUnCitIYXNoIHZhbHVlIHN0YXJ0cyB3aXRo
ICcjJworUEFTUyBkb211cmwuaHJlZiBpcyAnZmlsZTovLy9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNo
X3ZhbHVlJworJz8nIGluIGhhc2ggdmFsdWUKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHA6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sI2hhc2g/dmFsdWUnCisnIycgaW4gaGFz
aCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBob3N0bmFtZQorUEFTUyBkb211cmwu
aHJlZiBpcyAnaHR0cHM6Ly93d3cubXkiZCgpe318fm9tP2FpbiNjb20vcGF0aC90ZXN0dXJsLmh0
bWwjbWlkZGxlJworU2V0IGhhc2ggdG8gbnVsbAorUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIycKK1NldCBoYXNoIHRvIGVtcHR5
IHN0cmluZworUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvdGVzdHVybC5odG1sIycKK0FkZCBoYXNoIHRvIG1haWx0bzogcHJvdG9jb2wKK1BBU1MgZG9t
dXJsLmhyZWYgaXMgJ21haWx0bzplLW1haWxfYWRkcmVzc0Bnb2VzX2hlcmUjaGFzaC12YWx1ZScK
K0FkZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2NvbAorUEFTUyBkb211cmwuaHJlZiBpcyAn
Zm9vOmJhciNoYXNoJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0
dHJpYnV0ZS1oYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML3NldC1kb211cmwtYXR0cmlidXRlLWhhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaG9zdC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
c2V0LWRvbXVybC1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzkgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVS
TC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgZG9t
dXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJworU2V0IGhv
c3Qgd2l0aCAnPycgaW4gaXQKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm90aGVy
Lz9kb21haW4uY29tOjgwODAvcGF0aC8/a2V5PXZhbHVlJworU2V0IGRlZmF1bHQgcG9ydCBmb3Ig
YW5vdGhlciBwcm90b2NvbAorUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJk
b21haW4uY29tOjgwL3BhdGgvJworU2V0IGRlZmF1bHQgcG9ydAorUEFTUyBkb211cmwuaHJlZiBp
cyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tL3BhdGgvJworU2V0IGhvc3Qgd2l0aCBsZXR0
ZXJzIGluIHBvcnQgbnVtYmVyCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczovL3d3dy5vdGhl
cmRvbWFpbi5jb206NDQvcGF0aC8nCitMZWFkaW5nIHNwYWNlIGluIHBvcnQgbnVtYmVyCitQQVNT
IGRvbXVybC5ocmVmIGlzICdodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9wYXRoLycKK0Nv
bG9uIHdpdGhvdXQgcG9ydCBudW1iZXIKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3
Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJworU2V0IGhvc3QgdG8gbnVsbAorUEFTUyBkb211cmwu
aHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdCB0
byBlbXB0eSBzdHJpbmcKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3QgdG8gVVJMIHdpdGggZmlsZTogcHJvdG9jb2wKK1BB
U1MgZG9tdXJsLmhyZWYgaXMgJ2ZpbGU6Ly9teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgaG9zdCBj
b250YWluaW5nIHNsYXNoZXMgaW4gaXQKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3
Lm90aGVyZG9tL2Fpbi5jb20vcGF0aC8nCitTZXQgaG9zdCB0byBkb211cmwgbWFsZm9ybWVkIFVS
TAorUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0cHM6L1xyd3cubXlAZG9tYWluLmNvbTo4MDgwL3Bh
dGgvJworU2V0IGhvc3QgdGhhdCBzdGFydHMgd2l0aCAnOicKK1BBU1MgZG9tdXJsLmhyZWYgaXMg
J2h0dHBzOi8vZG9tYWluLmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3QgdG8gVVJMIGNvbnRhaW5p
bmcgdXNlcm5hbWUgYW5kIC4uCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczovL3J3d215QHd3
dy5vdGhlciFkb21haW4uY29tOjI1L3BhLi50aC8nCitTZXQgaG9zdCB0byBkb211cmwgVVJMIHdp
dGggdGVsOiBwcm90b2NvbAorUEFTUyBkb211cmwuaHJlZiBpcyAndGVsOisxLTgxNi01NTUtMTIx
MicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaG9z
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9t
dXJsLWF0dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRv
bXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0
LWRvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI1IEBACitUZXN0IHNldHRpbmcgdGhlIGhvc3RuYW1lIGF0dHJpYnV0ZSBvZiB0aGUg
RE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFT
UyBkb211cmwuaHJlZiBpcyAnaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwODAvcGF0aC8n
CitFeHRyYSBzbGFzaGVzIGJlZm9yZSBob3N0bmFtZQorUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0
cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwODAvcGF0aC8nCitTZXQgaG9zdG5hbWUgdG8gVVJM
IHdpdGggZm9vOiBwcm90b2NvbAorUEFTUyBkb211cmwuaHJlZiBpcyAnZm9vOi8vd3d3Lm90aGVy
ZG9tYWluLmNvbS9wYXRoLycKK1NldCBob3N0bmFtZSB0byBudWxsCitQQVNTIGRvbXVybC5ocmVm
IGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLycKK1NldCBob3N0bmFtZSB0
byBlbXB0eSBzdHJpbmcKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbTo4MDgwL3BhdGgvJworU2V0IGhvc3RuYW1lIHRvIFVSTCB3aXRoIDIgY29sb25zCitQQVNT
IGRvbXVybC5ocmVmIGlzICdyZWFsbHk6YmFkOnVybCcKK1NldCBkb211cmwgaG9zdG5hbWUgdGhh
dCBjb250YWlucyBzcGFjZSBpbiBpdAorUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0cDovL3d3dy5t
eSBkb21haW4uY29tL3BhdGgvJworU2V0IGhvc3RuYW1lIHRvIHVuZGVmaW5lZAorUEFTUyBkb211
cmwuaHJlZiBpcyAnaHR0cHM6Ly91bmRlZmluZWQ6ODA4MC9wYXRoLycKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUt
aG9zdG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVS
TC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3NldC1kb211
cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3NldC1k
b211cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNSBAQAorVGVzdCBzZXR0aW5nIHRoZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERP
TVVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NldCBwYXRobmFtZSB0aGF0
IHN0YXJ0cyB3aXRoIHNsYXNoCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczovL3d3dy5teWRv
bWFpbi5jb20vcGF0aCUyMG5hbWU/a2V5PXZhbHVlJworU2V0IHBhdGhuYW1lIHRoYXQgZG9lcyBu
b3Qgc3RhcnQgd2l0aCBzbGFzaCBhbmQgY29udGFpbnMgJz8nCitQQVNTIGRvbXVybC5ocmVmIGlz
ICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGElM0Z0aD9rZXk9dmFsdWUnCitTZXQgcGF0aG5h
bWUgdGhhdCBzdGFydHMgd2l0aCBkb3VibGUgc2xhc2ggYW5kIGNvbnRhaW5zICcjJworUEFTUyBk
b211cmwuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tLy9wYXRoJTIzbmFtZT9rZXk9
dmFsdWUnCitTZXQgZG9tdXJsIHBhdGhuYW1lIGNvbnRhaW5pbmcgLi4gaW4gaXQKK1BBU1MgZG9t
dXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1ZScKK1Nl
dCBwYXRobmFtZSB0byBudWxsCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczovL3d3dy5teWRv
bWFpbi5jb20vP2tleT12YWx1ZScKK1NldCBwYXRobmFtZSB0byBlbXB0eSBzdHJpbmcKK1BBU1Mg
ZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlJworU2V0
IHBhdGhuYW1lIHRoYXQgaW5jbHVkZXMgaWxsZWdhbCBjaGFyYWN0ZXJzIHRvIFVSTCB0aGF0IGNv
bnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4KK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8v
d3d3Lm15fGRbXSgpb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK1NldCBw
YXRobmFtZSB0byBkb211cmwgVVJMIHdpdGggbm9uLWhpZXJhcmNoaWNhbCBwcm90b2NvbAorUEFT
UyBkb211cmwuaHJlZiBpcyAndGVsOisxODAwLTU1NS0xMjEyJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wYXRo
bmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3Nl
dC1kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1h
dHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRE9NVVJML3NldC1kb211cmwtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3NldC1kb211cmwtYXR0cmli
dXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0
IHNldHRpbmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitEZWZhdWx0IHBvcnQgYXMgbnVtYmVyCitQQVNTIGRvbXVybC5o
cmVmIGlzICdodHRwczovL3d3dy53ZWJraXQub3JnL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1
ZScKK1NldCBwb3J0IHRvIDAKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3LndlYmtp
dC5vcmc6MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byB1bmRlZmlu
ZWQKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3LndlYmtpdC5vcmc6MC9wYXRoL3Rl
c3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9ydCB0byBub24tbnVtYmVyCitQQVNTIGRvbXVy
bC5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb206NC9wYXRoL3Rlc3R1cmwuaHRtbD9r
ZXk9dmFsdWUnCitTZXQgcG9ydCB0byBudWxsCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczov
L3d3dy5teWRvbWFpbi5jb206MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUnCitTZXQgcG9y
dCB0byBlbXB0eSBzdHJpbmcKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbTowL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZScKK1NldCBwb3J0IHRvIHVuZGVm
aW5lZAorUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0
aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJworU2V0IHBvcnQgdG8gVVJMIHdpdGggZm9vOiBwcm90
b2NvbAorUEFTUyBkb211cmwuaHJlZiBpcyAnZm9vOi8vYmFyOjUwLycKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcG9ydC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRv
bXVybC1hdHRyaWJ1dGUtcG9ydC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2V0LWRv
bXVybC1hdHRyaWJ1dGUtcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcHJv
dG9jb2wtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUt
cHJvdG9jb2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACitUZXN0
IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBkb211cmwuaHJlZiBpcyAn
aHR0cC1mb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvJworU2V0IGRvbXVybCBwcm90b2NvbCB0
aGF0IGNvbnRhaW5zICc6JworUEFTUyBkb211cmwuaHJlZiBpcyAnaHR0cDovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC8nCitTZXQgZG9tdXJsIHByb3RvY29sIHRoYXQgY29udGFpbnMgaW52YWxpZCBj
aGFyYWN0ZXJzCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC8nCitTZXQgZG9tdXJsIHByb3RvY29sIHRvIGEgVVJMIHdpdGggaW52YWxpZCBob3N0IG5h
bWUKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2ZvbzpeXicKK1NldCBkb211cmwgcHJvdG9jb2wgdGhh
dCBzdGFydHMgd2l0aCAnOicKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYXRoLycKK1NldCBwcm90b2NvbCB0byBudWxsCitQQVNTIGRvbXVybC5ocmVmIGlz
ICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitTZXQgcHJvdG9jb2wgdG8gZW1wdHkg
c3RyaW5nCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0
aC8nCitTZXQgcHJvdG9jb2wgdG8gaHR0cCBvbiBtYWxmb3JtZWQgVVJMCitQQVNTIGRvbXVybC5o
cmVmIGlzICdodHRwOi8/P2JhcicKK1NldCBwcm90b2NvbCB0byBkb211cmwgVVJMIHdoaWNoIHBv
aW50cyB0byBhIGxvY2FsIGZpbGUKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ2Ytb286cGF0aCcKK1Nl
dCBwcm90b2NvbCB0byB1bmRlZmluZWQKK1BBU1MgZG9tdXJsLmhyZWYgaXMgJ3VuZGVmaW5lZDov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3Nl
dC1kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML3NldC1kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRy
aWJ1dGUtcHJvdG9jb2wuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NldC1kb211cmwt
YXR0cmlidXRlLXByb3RvY29sLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1zZWFy
Y2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVS
TC9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3NldC1kb211cmwtYXR0cmlidXRlLXNlYXJj
aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3Qgc2V0dGlu
ZyB0aGUgc2VhcmNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworU2V0IHNlYXJjaCB3aXRob3V0ICc/JworUEFTUyBkb211cmwuaHJlZiBp
cyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbHVlPWtleScKK1NldCBzZWFyY2gg
dGhhdCBzdGFydHMgd2l0aCAnPycgYW5kIGNvbnRhaW5zIHNwYWNlcworUEFTUyBkb211cmwuaHJl
ZiBpcyAnaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbCUyMHVlPSUyMGtleT8nCitT
ZXQgc2VhcmNoIHRvIGRvbXVybCBtYWxmb3JtZWQgVVJMCitQQVNTIGRvbXVybC5ocmVmIGlzICdz
Ond3dy5teWRvbWFpbi5jb20vcGF0aC8/JScKK1NldCBzZWFyY2ggY29udGFpbmluZyAnIycKK1BB
U1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZSUy
M2tleSNoYXNoJworU2V0IHNlYXJjaCB0byBkb211cmwgbWFsZm9ybWVkIFVSTAorUEFTUyBkb211
cmwuaHJlZiBpcyAnYmFkOi98L3VybD92YWx1ZT1rZXknCitTZXQgc2VhcmNoIHRvIG51bGwKK1BB
U1MgZG9tdXJsLmhyZWYgaXMgJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLycKK1NldCBz
ZWFyY2ggdG8gZW1wdHkgc3RyaW5nCitQQVNTIGRvbXVybC5ocmVmIGlzICdodHRwczovL3d3dy5t
eWRvbWFpbi5jb20vcGF0aC8/JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zZXQtZG9t
dXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2V0LWRvbXVybC1hdHRyaWJ1dGUtc2Vh
cmNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1z
ZWFyY2guanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML3NjcmlwdC10ZXN0cy9nZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVz
dHMvZ2V0LWRvbXVybC1hdHRyaWJ1dGUtcG9ydC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvZ2V0LWRvbXVybC1hdHRyaWJ1dGUtcG9y
dC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgZ2V0
dGluZyB0aGUgcG9ydCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsKKwordmFyIGRvbXVybCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRPTVVSTCIpOworCitkZWJ1ZygiRGVmYXVsdCBwb3J0
IGlzIGVtcHR5Iik7CitzaG91bGRCZSgiZG9tdXJsLnBvcnQiLCAiIik7CisKK2RlYnVnKCJVbnNw
ZWNpZmllZCBwb3J0IHNob3VsZCByZXR1cm4gZW1wdHkgc3RyaW5nIik7Citkb211cmwuaHJlZiA9
ICJodHRwOi8vd2Via2l0Lm9yZy8iOworc2hvdWxkQmUoImRvbXVybC5wb3J0IiwgIiIpOworCitk
ZWJ1ZygiRW1wdHkgcG9ydCBzaG91bGQgYmUgZW1wdHkiKTsKK2RvbXVybC5ocmVmID0gImh0dHA6
Ly93ZWJraXQub3JnOi8iOworc2hvdWxkQmUoImRvbXVybC5wb3J0IiwgIiIpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3NjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0
ZS1oYXNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3Jp
cHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtaGFzaC5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1
dGUtaGFzaC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorZGVzY3JpcHRpb24oJ1Rl
c3Qgc2V0dGluZyB0aGUgaGFzaCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsKKwordmFyIGRv
bXVybCA9IHdpbmRvdy53ZWJraXRVUkw7CisKK2RlYnVnKCJIYXNoIHZhbHVlIGRvZXMgbm90IHN0
YXJ0IHdpdGggJyMnIik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206
ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiOworZG9tdXJsLmhhc2ggPSAiaGFzaC12YWx1
ZSI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL3BhdGgvdGVzdHVybC5odG1sI2hhc2gtdmFsdWUnIik7CisKK2RlYnVnKCJIYXNoIHZhbHVl
IHN0YXJ0cyB3aXRoICcjJyIpOworZG9tdXJsLmhyZWYgPSAiZmlsZTovLy9wYXRoL3Rlc3R1cmwu
aHRtbCNtaWRkbGUiOworZG9tdXJsLmhhc2ggPSAiI2hhc2hfdmFsdWUiOworc2hvdWxkQmUoImRv
bXVybC5ocmVmIiwgIidmaWxlOi8vL3BhdGgvdGVzdHVybC5odG1sI2hhc2hfdmFsdWUnIik7CisK
K2RlYnVnKCInPycgaW4gaGFzaCB2YWx1ZSIpOworZG9tdXJsLmhyZWYgPSAiaHR0cDovL3d3dy5t
eWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKK2RvbXVybC5oYXNoID0gIiNo
YXNoP3ZhbHVlIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cDovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjaGFzaD92YWx1ZSciKTsKKworZGVidWcoIicjJyBpbiBo
YXNoIHZhbHVlLCBhbmQgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGhvc3RuYW1lIik7Citkb211cmwu
aHJlZiA9ICJodHRwczovL3d3dy5teVwiZCgpe318fm9tP2FpbiNjb20vcGF0aC90ZXN0dXJsLmh0
bWwjbWlkZGxlIjsKK2RvbXVybC5oYXNoID0gIiNoYXNoI3ZhbHVlIjsKK3Nob3VsZEJlKCJkb211
cmwuaHJlZiIsICInaHR0cHM6Ly93d3cubXlcImQoKXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVy
bC5odG1sI21pZGRsZSciKTsKKworZGVidWcoIlNldCBoYXNoIHRvIG51bGwiKTsKK2RvbXVybC5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUi
OworZG9tdXJsLmhhc2ggPSBudWxsOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjJyIpOworCitkZWJ1ZygiU2V0IGhh
c2ggdG8gZW1wdHkgc3RyaW5nIik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIjsKK2RvbXVybC5oYXNoID0gIiI7CitzaG91
bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1
cmwuaHRtbCMnIik7CisKK2RlYnVnKCJBZGQgaGFzaCB0byBtYWlsdG86IHByb3RvY29sIik7Citk
b211cmwuaHJlZiA9ICJtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29lc19oZXJlIjsKK2RvbXVybC5o
YXNoID0gImhhc2gtdmFsdWUiOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidtYWlsdG86ZS1t
YWlsX2FkZHJlc3NAZ29lc19oZXJlI2hhc2gtdmFsdWUnIik7CisKK2RlYnVnKCJBZGQgaGFzaCB0
byBub24tc3RhbmRhcmQgcHJvdG9jb2wiKTsKK3RyeSB7Citkb211cmwuaHJlZiA9ICJmb286YmFy
IjsKK2RvbXVybC5oYXNoID0gIiNoYXNoIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInZm9v
OmJhciNoYXNoJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNj
cmlwdGlvbik7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2NyaXB0LXRl
c3RzL3NldC1kb211cmwtYXR0cmlidXRlLWhvc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML3NjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3NjcmlwdC10
ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk0IEBACitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBob3N0IGF0dHJpYnV0ZSBvZiB0
aGUgRE9NVVJMLicpOworCit2YXIgZG9tdXJsID0gd2luZG93LndlYmtpdFVSTDsKKworZGVidWco
IkJhc2ljIHRlc3QiKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4
MDgwL3BhdGgvIjsKK2RvbXVybC5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206MCI7CitzaG91
bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgv
JyIpOworCitkZWJ1ZygiU2V0IGhvc3Qgd2l0aCAnPycgaW4gaXQiKTsKK3RyeSB7Citkb211cmwu
aHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLz9rZXk9dmFsdWUiOwor
ZG9tdXJsLmhvc3QgPSAid3d3Lm90aGVyP2RvbWFpbi5jb206ODA4MCI7CitzaG91bGRCZSgiZG9t
dXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyLz9kb21haW4uY29tOjgwODAvcGF0aC8/a2V5
PXZhbHVlJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlw
dGlvbik7Cit9CisKK2RlYnVnKCJTZXQgZGVmYXVsdCBwb3J0IGZvciBhbm90aGVyIHByb3RvY29s
Iik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7
Citkb211cmwuaG9zdCA9ICJ3d3cub3RoZXJkb21haW4uY29tOjgwIjsKK3Nob3VsZEJlKCJkb211
cmwuaHJlZiIsICInaHR0cHM6Ly93d3cub3RoZXJkb21haW4uY29tOjgwL3BhdGgvJyIpOworCitk
ZWJ1ZygiU2V0IGRlZmF1bHQgcG9ydCIpOworZG9tdXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlk
b21haW4uY29tOjgwODAvcGF0aC8iOworZG9tdXJsLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNv
bTo0NDMiOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFp
bi5jb20vcGF0aC8nIik7CisKK2RlYnVnKCJTZXQgaG9zdCB3aXRoIGxldHRlcnMgaW4gcG9ydCBu
dW1iZXIiKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3Bh
dGgvIjsKK2RvbXVybC5ob3N0ID0gInd3dy5vdGhlcmRvbWFpbi5jb206NDRhNSI7CitzaG91bGRC
ZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTo0NC9wYXRoLyci
KTsKKworZGVidWcoIkxlYWRpbmcgc3BhY2UgaW4gcG9ydCBudW1iZXIiKTsKK2RvbXVybC5ocmVm
ID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2RvbXVybC5ob3N0ID0g
Ind3dy5vdGhlcmRvbWFpbi5jb206IDQ0MyI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0
dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbTowL3BhdGgvJyIpOworCitkZWJ1ZygiQ29sb24gd2l0
aG91dCBwb3J0IG51bWJlciIpOworZG9tdXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tOjgwODAvcGF0aC8iOworZG9tdXJsLmhvc3QgPSAid3d3Lm90aGVyZG9tYWluLmNvbToiOwor
c2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206MC9w
YXRoLyciKTsKKworZGVidWcoIlNldCBob3N0IHRvIG51bGwiKTsKK2RvbXVybC5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2RvbXVybC5ob3N0ID0gbnVsbDsK
K3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC8nIik7CisKK2RlYnVnKCJTZXQgaG9zdCB0byBlbXB0eSBzdHJpbmciKTsKK2RvbXVybC5o
cmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2RvbXVybC5ob3N0
ID0gIiI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bTo4MDgwL3BhdGgvJyIpOworCitkZWJ1ZygiU2V0IGhvc3QgdG8gVVJMIHdpdGggZmlsZTogcHJv
dG9jb2wiKTsKK2RvbXVybC5ocmVmID0gImZpbGU6Ly8vcGF0aC8iOworZG9tdXJsLmhvc3QgPSAi
bXlkb21haW4uY29tIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInZmlsZTovL215ZG9tYWlu
LmNvbS9wYXRoLyciKTsKKworZGVidWcoIlNldCBob3N0IGNvbnRhaW5pbmcgc2xhc2hlcyBpbiBp
dCIpOwordHJ5IHsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L3BhdGgvIjsKK2RvbXVybC5ob3N0ID0gInd3dy5vdGhlclxkb20vYWluLmNvbSI7CitzaG91bGRC
ZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm90aGVyZG9tL2Fpbi5jb20vcGF0aC8nIik7
Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRlc2NyaXB0aW9uKTsKK30K
KworZGVidWcoIlNldCBob3N0IHRvIGRvbXVybCBtYWxmb3JtZWQgVVJMIik7Citkb211cmwuaHJl
ZiA9ICJodHRwczovXHJ3dy5teUBkb21haW4uY29tOjgwODAvcGF0aC8iOworZG9tdXJsLmhvc3Qg
PSAid3d3Lm90aGVyIWRvbWFpbi5jb206MTUiOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIido
dHRwczovXFxyd3cubXlAZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworCitkZWJ1ZygiU2V0IGhv
c3QgdGhhdCBzdGFydHMgd2l0aCAnOiciKTsKK3RyeSB7Citkb211cmwuaHJlZiA9ICJodHRwczov
L2RvbWFpbi5jb206ODA4MC9wYXRoLyI7Citkb211cmwuaG9zdCA9ICI6d3d3Lm90aGVyZG9tYWlu
LmNvbToxNSI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vZG9tYWluLmNvbTo4
MDgwL3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNj
cmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgaG9zdCB0byBVUkwgY29udGFpbmluZyB1c2VybmFt
ZSBhbmQgLi4iKTsKK3RyeSB7Citkb211cmwuaHJlZiA9ICJodHRwczovL3J3d215QGRvbWFpbi5j
b206ODA4MC9wYS4udGgvIjsKK2RvbXVybC5ob3N0ID0gInd3dy5vdGhlciFkb21haW4uY29tOjI1
IjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly9yd3dteUB3d3cub3RoZXIhZG9t
YWluLmNvbToyNS9wYS4udGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAi
ICsgZS5kZXNjcmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgaG9zdCB0byBkb211cmwgVVJMIHdp
dGggdGVsOiBwcm90b2NvbCIpOworZG9tdXJsLmhyZWYgPSAidGVsOisxLTgxNi01NTUtMTIxMiI7
Citkb211cmwuaG9zdCA9ICIrMS04MDAtNTU1LTEyMTIiOworc2hvdWxkQmUoImRvbXVybC5ocmVm
IiwgIid0ZWw6KzEtODE2LTU1NS0xMjEyJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
RE9NVVJML3NjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2NyaXB0LXRlc3RzL3NldC1k
b211cmwtYXR0cmlidXRlLWhvc3RuYW1lLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML3NjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFt
ZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0
dGluZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK3ZhciBkb211
cmwgPSB3aW5kb3cud2Via2l0VVJMOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOworZG9tdXJsLmhy
ZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworZG9tdXJsLmhvc3Ru
YW1lID0gInd3dy5vdGhlcmRvbWFpbi5jb20iOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIido
dHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb206ODA4MC9wYXRoLyciKTsKKwordHJ5IHsKK2RlYnVn
KCJFeHRyYSBzbGFzaGVzIGJlZm9yZSBob3N0bmFtZSIpOworZG9tdXJsLmhyZWYgPSAiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworZG9tdXJsLmhvc3RuYW1lID0gIi8vd3d3
Lm90aGVyZG9tYWluLmNvbSI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3
Lm90aGVyZG9tYWluLmNvbTo4MDgwL3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhj
ZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8g
VVJMIHdpdGggZm9vOiBwcm90b2NvbCIpOworZG9tdXJsLmhyZWYgPSAiZm9vOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYXRoLyI7Citkb211cmwuaG9zdG5hbWUgPSAid3d3Lm90aGVyZG9tYWluLmNvbSI7
CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2ZvbzovL3d3dy5vdGhlcmRvbWFpbi5jb20vcGF0
aC8nIik7CisKK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8gbnVsbCIpOworZG9tdXJsLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iOworZG9tdXJsLmhvc3RuYW1lID0g
bnVsbDsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjgwODAvcGF0aC8nIik7CisKK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8gZW1wdHkgc3RyaW5nIik7
Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyI7Citk
b211cmwuaG9zdG5hbWUgPSAiIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8nIik7CisKK2RlYnVnKCJTZXQgaG9zdG5hbWUgdG8g
VVJMIHdpdGggMiBjb2xvbnMiKTsKK2RvbXVybC5ocmVmID0gInJlYWxseTpiYWQ6dXJsIjsKK2Rv
bXVybC5ob3N0bmFtZSA9ICJteWRvbWFpbi5jb20iOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwg
IidyZWFsbHk6YmFkOnVybCciKTsKKworZGVidWcoIlNldCBkb211cmwgaG9zdG5hbWUgdGhhdCBj
b250YWlucyBzcGFjZSBpbiBpdCIpOworZG9tdXJsLmhyZWYgPSAiaHR0cDovL3d3dy5teSBkb21h
aW4uY29tL3BhdGgvIjsKK2RvbXVybC5ob3N0bmFtZSA9ICJ3d3cub3RoZXIgZG9tYWluLmNvbSI7
CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHA6Ly93d3cubXkgZG9tYWluLmNvbS9wYXRo
LyciKTsKKworZGVidWcoIlNldCBob3N0bmFtZSB0byB1bmRlZmluZWQiKTsKK2RvbXVybC5ocmVm
ID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIjsKK2RvbXVybC5ob3N0bmFt
ZSA9IHVuZGVmaW5lZDsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly91bmRlZmlu
ZWQ6ODA4MC9wYXRoLyciKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3Jp
cHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3NjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJp
YnV0ZS1wYXRobmFtZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHBh
dGhuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCit2YXIgZG9tdXJsID0gd2luZG93
LndlYmtpdFVSTDsKKworZGVidWcoIlNldCBwYXRobmFtZSB0aGF0IHN0YXJ0cyB3aXRoIHNsYXNo
Iik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJs
Lmh0bWw/a2V5PXZhbHVlIjsKK2RvbXVybC5wYXRobmFtZSA9ICIvcGF0aCBuYW1lIjsKK3Nob3Vs
ZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGglMjBuYW1l
P2tleT12YWx1ZSciKTsKKwordHJ5IHsKK2RlYnVnKCJTZXQgcGF0aG5hbWUgdGhhdCBkb2VzIG5v
dCBzdGFydCB3aXRoIHNsYXNoIGFuZCBjb250YWlucyAnPyciKTsKK2RvbXVybC5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworZG9t
dXJsLnBhdGhuYW1lID0gInBhP3RoIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6
Ly93d3cubXlkb21haW4uY29tL3BhJTNGdGg/a2V5PXZhbHVlJyIpOworfSBjYXRjaChlKSB7Citk
ZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlwdGlvbik7Cit9CisKK3RyeSB7CitkZWJ1Zygi
U2V0IHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGggZG91YmxlIHNsYXNoIGFuZCBjb250YWlucyAn
IyciKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12
YWx1ZSI7Citkb211cmwucGF0aG5hbWUgPSAiLy9wYXRoI25hbWUiOworc2hvdWxkQmUoImRvbXVy
bC5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vL3BhdGglMjNuYW1lP2tleT12YWx1
ZSciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24p
OworfQorCitkZWJ1ZygiU2V0IGRvbXVybCBwYXRobmFtZSBjb250YWluaW5nIC4uIGluIGl0Iik7
Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0
bWw/a2V5PXZhbHVlIjsKK2RvbXVybC5wYXRobmFtZSA9ICIvaXQvLi4vcGF0aCI7CitzaG91bGRC
ZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoP2tleT12YWx1
ZSciKTsKKworZGVidWcoIlNldCBwYXRobmFtZSB0byBudWxsIik7Citkb211cmwuaHJlZiA9ICJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2Rv
bXVybC5wYXRobmFtZSA9IG51bGw7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRv
IGVtcHR5IHN0cmluZyIpOworZG9tdXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29t
Lz9rZXk9dmFsdWUiOworZG9tdXJsLnBhdGhuYW1lID0gIiI7CitzaG91bGRCZSgiZG9tdXJsLmhy
ZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlJyIpOworCitkZWJ1Zygi
U2V0IHBhdGhuYW1lIHRoYXQgaW5jbHVkZXMgaWxsZWdhbCBjaGFyYWN0ZXJzIHRvIFVSTCB0aGF0
IGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8v
d3d3Lm15fGRbXSgpb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSI7Citkb211
cmwucGF0aG5hbWUgPSAicCRhfHRoIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6
Ly93d3cubXl8ZFtdKClvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOwor
CitkZWJ1ZygiU2V0IHBhdGhuYW1lIHRvIGRvbXVybCBVUkwgd2l0aCBub24taGllcmFyY2hpY2Fs
IHByb3RvY29sIik7Citkb211cmwuaHJlZiA9ICJ0ZWw6KzE4MDAtNTU1LTEyMTIiOworZG9tdXJs
LnBhdGhuYW1lID0gInRoZS1wYXRoIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICIndGVsOisx
ODAwLTU1NS0xMjEyJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3Njcmlw
dC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wb3J0LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUt
cG9ydC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3Jp
cHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1dGUtcG9ydC5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MyBAQAorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcG9ydCBhdHRyaWJ1dGUg
b2YgdGhlIERPTVVSTC4nKTsKKwordmFyIGRvbXVybCA9IHdpbmRvdy53ZWJraXRVUkw7CisKK2Rl
YnVnKCJEZWZhdWx0IHBvcnQgYXMgbnVtYmVyIik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3
dy53ZWJraXQub3JnOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2RvbXVybC5w
b3J0ID0gNDQzOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidodHRwczovL3d3dy53ZWJraXQu
b3JnL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSciKTsKKworZGVidWcoIlNldCBwb3J0IHRv
IDAiKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3LndlYmtpdC5vcmc6ODA4MC9wYXRoL3Rl
c3R1cmwuaHRtbD9rZXk9dmFsdWUiOworZG9tdXJsLnBvcnQgPSAwOworc2hvdWxkQmUoImRvbXVy
bC5ocmVmIiwgIidodHRwczovL3d3dy53ZWJraXQub3JnOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5
PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBvcnQgdG8gdW5kZWZpbmVkIik7Citkb211cmwuaHJl
ZiA9ICJodHRwczovL3d3dy53ZWJraXQub3JnOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZh
bHVlIjsKK2RvbXVybC5wb3J0ID0gdW5kZWZpbmVkOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwg
IidodHRwczovL3d3dy53ZWJraXQub3JnOjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIp
OworCitkZWJ1ZygiU2V0IHBvcnQgdG8gbm9uLW51bWJlciIpOworZG9tdXJsLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsK
K2RvbXVybC5wb3J0ID0gIjRhIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjQvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCitkZWJ1
ZygiU2V0IHBvcnQgdG8gbnVsbCIpOworZG9tdXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21h
aW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIjsKK2RvbXVybC5wb3J0ID0g
bnVsbDsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29t
OjAvcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBvcnQgdG8g
ZW1wdHkgc3RyaW5nIik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206
ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFsdWUiOworZG9tdXJsLnBvcnQgPSAiIjsKK3No
b3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjAvcGF0aC90
ZXN0dXJsLmh0bWw/a2V5PXZhbHVlJyIpOworCitkZWJ1ZygiU2V0IHBvcnQgdG8gdW5kZWZpbmVk
Iik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rl
c3R1cmwuaHRtbD9rZXk9dmFsdWUiOworZG9tdXJsLnBvcnQgPSB1bmRlZmluZWQ7CitzaG91bGRC
ZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTowL3BhdGgvdGVzdHVy
bC5odG1sP2tleT12YWx1ZSciKTsKKworZGVidWcoIlNldCBwb3J0IHRvIFVSTCB3aXRoIGZvbzog
cHJvdG9jb2wiKTsKK2RvbXVybC5ocmVmID0gImZvbzovL2Jhci8iOworZG9tdXJsLnBvcnQgPSA1
MDsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInZm9vOi8vYmFyOjUwLyciKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRvbXVybC1hdHRyaWJ1
dGUtcHJvdG9jb2wuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJM
L3NjcmlwdC10ZXN0cy9zZXQtZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRvbXVy
bC1hdHRyaWJ1dGUtcHJvdG9jb2wuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKK2Rl
c2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgRE9N
VVJMLicpOworCit2YXIgZG9tdXJsID0gd2luZG93LndlYmtpdFVSTDsKKworZGVidWcoIkJhc2lj
IHRlc3QiKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7
Citkb211cmwucHJvdG9jb2wgPSAiaHR0cC1mb28iOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwg
IidodHRwLWZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nIik7CisKK2RlYnVnKCJTZXQgZG9t
dXJsIHByb3RvY29sIHRoYXQgY29udGFpbnMgJzonIik7Cit0cnkgeworZG9tdXJsLmhyZWYgPSAi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2RvbXVybC5wcm90b2NvbCA9ICJodHRw
OmZvbyI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHA6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlw
dGlvbik7Cit9CisKK2RlYnVnKCJTZXQgZG9tdXJsIHByb3RvY29sIHRoYXQgY29udGFpbnMgaW52
YWxpZCBjaGFyYWN0ZXJzIik7Cit0cnkgeworZG9tdXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlk
b21haW4uY29tL3BhdGgvIjsKK2RvbXVybC5wcm90b2NvbCA9ICJodHRwXmZvbyI7CitzaG91bGRC
ZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyciKTsKK30g
Y2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24pOworfQorCitk
ZWJ1ZygiU2V0IGRvbXVybCBwcm90b2NvbCB0byBhIFVSTCB3aXRoIGludmFsaWQgaG9zdCBuYW1l
Iik7Citkb211cmwuaHJlZiA9ICJoOl5eIjsKK2RvbXVybC5wcm90b2NvbCA9ICJmb28iOworc2hv
dWxkQmUoImRvbXVybC5ocmVmIiwgIidmb286Xl4nIik7CisKK3RyeSB7CitkZWJ1ZygiU2V0IGRv
bXVybCBwcm90b2NvbCB0aGF0IHN0YXJ0cyB3aXRoICc6JyIpOworZG9tdXJsLmhyZWYgPSAiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2RvbXVybC5wcm90b2NvbCA9ICI6aHR0cCI7
CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRo
LyciKTsKK30gY2F0Y2goZSkgeworZGVidWcoIkV4Y2VwdGlvbjogIiArIGUuZGVzY3JpcHRpb24p
OworfQorCitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIG51bGwiKTsKK2RvbXVybC5ocmVmID0gImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyI7Citkb211cmwucHJvdG9jb2wgPSBudWxsOwor
c2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8n
Iik7CisKK3RyeSB7CitkZWJ1ZygiU2V0IHByb3RvY29sIHRvIGVtcHR5IHN0cmluZyIpOworZG9t
dXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIjsKK2RvbXVybC5wcm90
b2NvbCA9ICIiOworc2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFp
bi5jb20vcGF0aC8nIik7Cit9IGNhdGNoKGUpIHsKK2RlYnVnKCJFeGNlcHRpb246ICIgKyBlLmRl
c2NyaXB0aW9uKTsKK30KKworZGVidWcoIlNldCBwcm90b2NvbCB0byBodHRwIG9uIG1hbGZvcm1l
ZCBVUkwiKTsKK2RvbXVybC5ocmVmID0gImZvbzo/P2JhciI7Citkb211cmwucHJvdG9jb2wgPSAi
aHR0cCI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHA6Lz8/YmFyJyIpOworCitkZWJ1
ZygiU2V0IHByb3RvY29sIHRvIGRvbXVybCBVUkwgd2hpY2ggcG9pbnRzIHRvIGEgbG9jYWwgZmls
ZSIpOworZG9tdXJsLmhyZWYgPSAiYzpccGF0aCI7Citkb211cmwucHJvdG9jb2wgPSAiZi1vbyI7
CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2Ytb286cGF0aCciKTsKKworZGVidWcoIlNldCBw
cm90b2NvbCB0byB1bmRlZmluZWQiKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9t
YWluLmNvbS9wYXRoLyI7Citkb211cmwucHJvdG9jb2wgPSB1bmRlZmluZWQ7CitzaG91bGRCZSgi
ZG9tdXJsLmhyZWYiLCAiJ3VuZGVmaW5lZDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8nIik7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc2NyaXB0LXRlc3RzL3NldC1kb211cmwt
YXR0cmlidXRlLXNlYXJjaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvc2NyaXB0LXRlc3RzL3NldC1kb211cmwtYXR0cmlidXRlLXNlYXJjaC5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zY3JpcHQtdGVzdHMvc2V0LWRv
bXVybC1hdHRyaWJ1dGUtc2VhcmNoLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACitk
ZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRlIG9mIHRoZSBET01V
UkwuJyk7CisKK3ZhciBkb211cmwgPSB3aW5kb3cud2Via2l0VVJMOworCitkZWJ1ZygiU2V0IHNl
YXJjaCB3aXRob3V0ICc/JyIpOworZG9tdXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvP2tleT12YWx1ZSI7Citkb211cmwuc2VhcmNoID0gInZhbHVlPWtleSI7CitzaG91
bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1
ZT1rZXknIik7CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRoYXQgc3RhcnRzIHdpdGggJz8nIGFuZCBj
b250YWlucyBzcGFjZXMiKTsKK2RvbXVybC5ocmVmID0gImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNv
bS9wYXRoLz9rZXk9dmFsdWUiOworZG9tdXJsLnNlYXJjaCA9ICI/dmFsIHVlPSBrZXk/IjsKK3No
b3VsZEJlKCJkb211cmwuaHJlZiIsICInaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3Zh
bCUyMHVlPSUyMGtleT8nIik7CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGRvbXVybCBtYWxmb3Jt
ZWQgVVJMIik7Citkb211cmwuaHJlZiA9ICJzOnd3dy5teWRvbWFpbi5jb20vcGF0aC8iOworZG9t
dXJsLnNlYXJjaCA9ICIlIjsKK3Nob3VsZEJlKCJkb211cmwuaHJlZiIsICInczp3d3cubXlkb21h
aW4uY29tL3BhdGgvPyUnIik7CisKK2RlYnVnKCJTZXQgc2VhcmNoIGNvbnRhaW5pbmcgJyMnIik7
Cit0cnkgeworZG9tdXJsLmhyZWYgPSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tl
eT12YWx1ZSNoYXNoIjsKK2RvbXVybC5zZWFyY2ggPSAiP3ZhbHVlI2tleSI7CitzaG91bGRCZSgi
ZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWx1ZSUyM2tl
eSNoYXNoJyIpOworfSBjYXRjaChlKSB7CitkZWJ1ZygiRXhjZXB0aW9uOiAiICsgZS5kZXNjcmlw
dGlvbik7Cit9CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGRvbXVybCBtYWxmb3JtZWQgVVJMIik7
Citkb211cmwuaHJlZiA9ICJiYWQ6L3wvdXJsIjsKK2RvbXVybC5zZWFyY2ggPSAiP3ZhbHVlPWtl
eSI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2JhZDovfC91cmw/dmFsdWU9a2V5JyIpOwor
CitkZWJ1ZygiU2V0IHNlYXJjaCB0byBudWxsIik7Citkb211cmwuaHJlZiA9ICJodHRwczovL3d3
dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlIjsKK2RvbXVybC5zZWFyY2ggPSBudWxsOwor
c2hvdWxkQmUoImRvbXVybC5ocmVmIiwgIidodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8n
Iik7CisKK2RlYnVnKCJTZXQgc2VhcmNoIHRvIGVtcHR5IHN0cmluZyIpOworZG9tdXJsLmhyZWYg
PSAiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSI7Citkb211cmwuc2Vh
cmNoID0gIiI7CitzaG91bGRCZSgiZG9tdXJsLmhyZWYiLCAiJ2h0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS9wYXRoLz8nIik7Cg==
</data>
<flag name="commit-queue"
          id="114837"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116327</attachid>
            <date>2011-11-23 01:34:10 -0800</date>
            <delta_ts>2011-11-24 23:02:52 -0800</delta_ts>
            <desc>Working Progress Patch</desc>
            <filename>71968-patch.txt</filename>
            <type>text/plain</type>
            <size>35281</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDExLTExLTIyICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBVUkwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgRE9NVVJMIElETCBhdHRyaWJ1dGVzLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rp
b25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LWhhc2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1ob3N0bmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwKKworICAg
ICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6RE9NVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRI
cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cHJvdG9jb2wpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVVJMOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnVz
ZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0VXNlcm5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpwYXNzd29yZCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OnNldFBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6aG9zdCk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpo
b3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhvc3RuYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVVSTDo6cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNl
dFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwYXRobmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01VUkw6OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6
c2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpmaWxlbmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01VUkw6OnNldEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6b3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6Y2xlYXJQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmg6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnRv
U3RyaW5nKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorCiAyMDExLTExLTIyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBbY2hyb21pdW1dIFN1cHBvcnQgQ29yZSBBbmltYXRpb24gcGx1Z2lucyBp
biBjb21wb3NpdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCShyZXZpc2lvbiAxMDEwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwzOCArMjUsNDkgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoQkxPQikKLQogI2luY2x1ZGUg
IkRPTVVSTC5oIgogCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIAorI2lmIEVOQUJMRShCTE9CKQorI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJC
bG9iVVJMLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVJlZ2lzdHJ5LmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLURPTVVSTDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQorRE9NVVJMOjpET01VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKDApCiB7CisgICAg
bV9ocmVmID0gS1VSTChLVVJMKCksIHVybCk7CisgICAgLy8gUmVzb2x2ZSB0aGUgVVJMIHJlbGF0
aXZlIHRvIGJhc2VVUkwgaWYgaXMgcHJvdmlkZS4KKyAgICBpZiAoIWJhc2VVUkwuaXNFbXB0eSgp
KQorICAgICAgICBtX2hyZWYgPSBLVVJMKG1faHJlZiwgYmFzZVVSTCk7CiB9CiAKIERPTVVSTDo6
fkRPTVVSTCgpCiB7CiB9CiAKK0RPTVVSTDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworfQorCiB2b2lkIERPTVVSTDo6Y29udGV4dERl
c3Ryb3llZCgpCiB7CiAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0
cm95ZWQoKTsKIAorI2lmIEVOQUJMRShCTE9CKQogICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0
b3IgcHVibGljQmxvYlVSTHNFbmQgPSBtX3B1YmxpY0Jsb2JVUkxzLmVuZCgpOwogICAgIGZvciAo
SGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNCbG9iVVJMcy5iZWdpbigp
OyBpdGVyICE9IHB1YmxpY0Jsb2JVUkxzRW5kOyArK2l0ZXIpCiAgICAgICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRl
cikpOwpAQCAtNjUsOCArNzcsMTAgQEAgdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95ZWQoKQog
ICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNTdHJlYW1V
UkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0VuZDsgKytpdGVyKQogICAgICAg
ICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVS
TChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKKyNp
ZiBFTkFCTEUoQkxPQikKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogU3RyaW5nIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKiBzdHJlYW0pCiB7CkBAIC0xMjQsNyArMTM4LDI0
NyBAQCB2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluCiAgICAgfQogI2Vu
ZGlmCiB9CisjZW5kaWYKKworS1VSTCBET01VUkw6OmhyZWYoKSBjb25zdAoreworICAgIHJldHVy
biBtX2hyZWY7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIcmVmKGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgbV9ocmVmID0gS1VSTChLVVJMKCksIHZhbHVlKTsKK30KKworU3RyaW5nIERPTVVS
TDo6cHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkucHJvdG9jb2woKSArICI6
IjsKK30KKwordm9pZCBET01VUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlID09ICJudWxsIikKKyAgICAgICAgcmV0dXJuOworCisgICAgS1VSTCB1
cmwgPSBocmVmKCk7CisgICAgdXJsLnNldFByb3RvY29sKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVy
bC5zdHJpbmcoKSk7Cit9CisKK1N0cmluZyBET01VUkw6OnVzZXJuYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaHJlZigpLnVzZXIoKTsKK30KKwordm9pZCBET01VUkw6OnNldFVzZXJuYW1lKGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgdXJsLnNl
dFVzZXIodmFsdWUpOworICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERP
TVVSTDo6cGFzc3dvcmQoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkucGFzcygpOworfQor
Cit2b2lkIERPTVVSTDo6c2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBL
VVJMIHVybCA9IGhyZWYoKTsKKyAgICB1cmwuc2V0UGFzcyh2YWx1ZSk7CisgICAgc2V0SHJlZih1
cmwuc3RyaW5nKCkpOworfQorCitTdHJpbmcgRE9NVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICBj
b25zdCBLVVJMJiB1cmwgPSBocmVmKCk7CisgICAgaWYgKHVybC5ob3N0RW5kKCkgPT0gdXJsLnBh
dGhTdGFydCgpKQorICAgICAgICByZXR1cm4gdXJsLmhvc3QoKTsKKyAgICBpZiAoaXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCksIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0
dXJuIHVybC5ob3N0KCk7CisgICAgcmV0dXJuIHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51
bWJlcih1cmwucG9ydCgpKTsKK30KKwordm9pZCBET01VUkw6OnNldEhvc3QoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgpIHx8IHZhbHVlID09ICJudWxsIikK
KyAgICAgICAgcmV0dXJuOworCisgICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwu
Y2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgY29sb24g
PSB2YWx1ZS5maW5kKCc6Jyk7CisgICAgaWYgKCFjb2xvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGNvbG9uID09IG5vdEZvdW5kKQorICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFs
dWUpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSBjb2xvbiArIDE7
CisgICAgICAgIHVuc2lnbmVkIHBvcnRFbmQgPSBwb3J0U3RhcnQ7CisKKyAgICAgICAgd2hpbGUg
KGlzQVNDSUlEaWdpdCh2YWx1ZVtwb3J0RW5kXSkpCisgICAgICAgICAgICArK3BvcnRFbmQ7CisK
KyAgICAgICAgdW5zaWduZWQgcG9ydCA9IHZhbHVlLnN1YnN0cmluZyhwb3J0U3RhcnQsIHBvcnRF
bmQgLSBwb3J0U3RhcnQpLnRvVUludCgpOworICAgICAgICBpZiAoIXBvcnQpCisgICAgICAgICAg
ICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIGNvbG9uICsgMSkgKyAiMCIp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wocG9ydCwgdXJsLnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0QW5k
UG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgY29sb24pKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQp
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK1N0
cmluZyBET01VUkw6Omhvc3RuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaHJlZigpLmhvc3Qo
KTsKK30KKwordm9pZCBET01VUkw6OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlID09ICJudWxsIikKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWdu
ZWQgaSA9IDA7CisgICAgdW5zaWduZWQgaG9zdExlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAg
IHdoaWxlICh2YWx1ZVtpXSA9PSAnLycpCisgICAgICAgIGkrKzsKKworICAgIGlmIChpID09IGhv
c3RMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAgIEtVUkwgdXJsID0gaHJlZigpOworICAg
IGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXJs
LnNldEhvc3QodmFsdWUuc3Vic3RyaW5nKGkpKTsKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7
Cit9CisKK1N0cmluZyBET01VUkw6OnBvcnQoKSBjb25zdAoreworICAgIGlmIChocmVmKCkuaGFz
UG9ydCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigpLnBvcnQoKSk7CisK
KyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBET01VUkw6OnNldFBvcnQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVy
bC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHBv
cnQgPSB2YWx1ZS50b1VJbnQoKTsKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQsIHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNl
CisgICAgICAgIHVybC5zZXRQb3J0KHZhbHVlLnRvVUludCgpKTsKKworICAgIHNldEhyZWYodXJs
LnN0cmluZygpKTsKK30KKworU3RyaW5nIERPTVVSTDo6cGF0aG5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiBocmVmKCkucGF0aCgpOworfQorCit2b2lkIERPTVVSTDo6c2V0UGF0aG5hbWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVy
bC5jYW5TZXRQYXRobmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmFsdWUgPT0g
Im51bGwiKQorICAgICAgICB1cmwuc2V0UGF0aChTdHJpbmcoKSk7CisgICAgZWxzZSB7CisgICAg
ICAgIFN0cmluZyBuZXdQYXRobmFtZSA9ICh2YWx1ZVswXSA9PSAnLycpID8gdmFsdWUgOiAoIi8i
ICsgdmFsdWUpOworICAgICAgICB1cmwuc2V0UGF0aChuZXdQYXRobmFtZSk7CisgICAgfQorICAg
IHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERPTVVSTDo6c2VhcmNoKCkgY29u
c3QKK3sKKyAgICBTdHJpbmcgcXVlcnkgPSBocmVmKCkucXVlcnkoKTsKKyAgICByZXR1cm4gcXVl
cnkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHF1ZXJ5OworfQorCit2b2lkIERP
TVVSTDo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VSTCB1cmwgPSBo
cmVmKCk7CisgICAgaWYgKHZhbHVlID09ICJudWxsIikKKyAgICAgICAgdXJsLnNldFF1ZXJ5KFN0
cmluZygpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgU3RyaW5nIG5ld1NlYXJjaCA9ICh2YWx1ZVsw
XSA9PSAnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAgICAgIHVybC5zZXRR
dWVyeShuZXdTZWFyY2gucmVwbGFjZSgnIycsICIlMjMiKSk7CisgICAgfQorICAgIHNldEhyZWYo
dXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERPTVVSTDo6aGFzaCgpIGNvbnN0Cit7CisgICAg
U3RyaW5nIGZyYWdtZW50ID0gaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJldHVy
biBmcmFnbWVudC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgZnJhZ21lbnQ7Cit9
CisKK3ZvaWQgRE9NVVJMOjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgS1VS
TCB1cmwgPSBocmVmKCk7CisgICAgaWYgKHZhbHVlID09ICJudWxsIiB8fCB2YWx1ZSA9PSAiIyIp
CisgICAgICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIoU3RyaW5nKCkpOworICAgIGVsc2Ug
eworICAgICAgICBTdHJpbmcgbmV3SGFzaCA9ICh2YWx1ZVswXSA9PSAnIycpID8gdmFsdWUuc3Vi
c3RyaW5nKDEpIDogdmFsdWU7CisgICAgICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIobmV3
SGFzaCk7CisgICAgfQorICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKworU3RyaW5nIERP
TVVSTDo6ZmlsZW5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkubGFzdFBhdGhDb21w
b25lbnQoKTsKK30KKwordm9pZCBET01VUkw6OnNldEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpCit7
CisgICAgLy8gRklYTUU6IE5lZWQgdG8gaW1wbGVtZW50LiBDdXJyZW50bHkgbm90IHN1cHBvcnRl
ZCBhcyBwZXIgZHJhZnQuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIERPTVVS
TDo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICByZXR1cm4gb3JpZ2luLT50b1N0
cmluZygpOworfQorCitTdHJpbmcgRE9NVVJMOjpnZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJikK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIERPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERP
TVVSTDo6YXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQordm9p
ZCBET01VUkw6OmNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwu
aAkocmV2aXNpb24gMTAxMDQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rv
cm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDkgKzI3LDkgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2lmIEVO
QUJMRShCTE9CKQotCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTQyLDI4ICs0Myw3NyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBj
bGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+LCBwdWJsaWMgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVS
TD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTCh1cmws
IGJhc2VVUkwpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgdXJsKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHVybCwgZW1wdHlTdHJp
bmcoKSkpOyB9CiAgICAgfkRPTVVSTCgpOwogCisgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyB1c2Vy
bmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAg
ICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0
cmluZyYpOworCisgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29u
c3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBvcnQoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFBvcnQoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcGF0aG5hbWUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5n
IHNlYXJjaCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2VhcmNoKGNvbnN0IFN0cmluZyYpOworCisg
ICAgU3RyaW5nIGhhc2goKSBjb25zdDsKKyAgICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5nJik7
CisKKyAgICBTdHJpbmcgZmlsZW5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OworCisgICAgS1VSTCBo
cmVmKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIcmVmKGNvbnN0IFN0cmluZyYpOworCisgICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ocmVmLnN0cmluZygpOyB9CisKKyAgICBT
dHJpbmcgZ2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kUGFyYW1l
dGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXBwZW5kUGFyYW1l
dGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOworICAg
IHZvaWQgY2xlYXJQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJik7CisKKyNpZiBFTkFCTEUoQkxPQikK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJM
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSopOwogI2VuZGlmCiAgICAgU3Ry
aW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iKik7CiAgICAgdm9pZCByZXZva2VPYmplY3RVUkwoY29u
c3QgU3RyaW5nJik7CisjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIEtVUkwgbV9ocmVmOworCisgICAgRE9NVVJMKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogCisjaWYgRU5BQkxFKEJMT0IpCisgICAgZXhw
bGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpOwogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGljQmxvYlVS
THM7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJs
aWNTdHJlYW1VUkxzOwogI2VuZGlmCisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9CKQotCiAjZW5kaWYgLy8gRE9NVVJMX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlzaW9uIDEwMTA0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE2ICsyNiwzNyBAQAogCiBtb2R1bGUgaHRtbCB7CiAgICAg
aW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENvbnN0
cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgR2VuZXJh
dGVUb0pTLAotICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgICAgICBOb1N0YXRpY1RhYmxlcywK
KyAgICAgICAgUmVwbGFjZWFibGUsCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1
cmwsIGluIFtPcHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIGJhc2VVUkwpCiAg
ICAgXSBET01VUkwgeworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOworICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVzZXJuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHBhc3N3b3JkOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3Q7CisgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgcG9ydDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwYXRobmFtZTsKKyAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBzZWFyY2g7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgaGFzaDsKKworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZpbGVuYW1lOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG9yaWdpbjsKKyAgICAgICAgc3RyaW5naWZp
ZXIgYXR0cmlidXRlIERPTVN0cmluZyBocmVmOworCisgICAgICAgIFtEb250RW51bV0gRE9NU3Ry
aW5nIHRvU3RyaW5nKCk7CisgICAgICAgIERPTVN0cmluZyBnZXRQYXJhbWV0ZXIoaW4gRE9NU3Ry
aW5nIG5hbWUpOworICAgICAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFt
ZSwgaW4gRE9NU3RyaW5nIHZhbHVlcyk7CisgICAgICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGlu
IERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmdbXSB2YWx1ZXMpOworICAgICAgICB2b2lkIGNs
ZWFyUGFyYW1ldGVyKGluIERPTVN0cmluZyBuYW1lKTsKKwogI2lmIGRlZmluZWQoRU5BQkxFX01F
RElBX1NUUkVBTSkgJiYgRU5BQkxFX01FRElBX1NUUkVBTQotICAgICAgICBbQ29udmVydE51bGxT
dHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJl
YW0gc3RyZWFtKTsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUJMT0JdIFtDb252ZXJ0TnVsbFN0cmlu
Z1RvPVVuZGVmaW5lZF0gc3RhdGljIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFT
dHJlYW0gc3RyZWFtKTsKKwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVu
ZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAg
ICB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgW0NvbmRp
dGlvbmFsPUJMT0JdIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gc3RhdGljIERPTVN0
cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsKKyAgICAgICAgW0NvbmRpdGlvbmFs
PUJMT0JdIHN0YXRpYyB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKICAg
ICB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMTAxMDQ0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC04MTIsNyArODEyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtD
b25kaXRpb25hbD1CTE9CXSBXZWJLaXRCbG9iQnVpbGRlckNvbnN0cnVjdG9yIFdlYktpdEJsb2JC
dWlsZGVyOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0g
RE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRlIERPTVVSTENvbnN0cnVjdG9yIHdl
YmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1FVT1RBKSAmJiBFTkFCTEVfUVVPVEEKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPVF1b3RhXSBTdG9yYWdl
SW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTA0NCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEx
LTExLTIyICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBVUkwgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzE5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIElETCBBdHRyaWJ1dGVz
LiBBZGRlZCB0ZXN0IGNhc2VzLgorCisgICAgICAgICogZmFzdC9kb20vRE9NVVJMOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rp
b25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNr
LWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFzaC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaG9zdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5h
bWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9k
b211cmwtYXR0cmlidXRlLXBvcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9N
VVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1zZWFyY2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML3N0cmlu
Z2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRt
bDogQWRkZWQuCisKIDIwMTEtMTEtMjIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdW0dUS10gZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFz
eW5jLmh0bWwgZmFpbHMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1p
bnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlv
bnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKK1Rlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHBy
b3BlcnRpZXMgb2Ygd2Via2l0VVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyAncHJvdG9jb2wnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAndXNlcm5hbWUnIGlu
IHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAncGFzc3dvcmQnIGluIHdlYmtpdFVSTCBpcyBmYWxz
ZQorUEFTUyAnaG9zdCcgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdob3N0bmFtZScgaW4g
d2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdwb3J0JyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BB
U1MgJ3BhdGhuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3NlYXJjaCcgaW4gd2Vi
a2l0VVJMIGlzIGZhbHNlCitQQVNTICdoYXNoJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1Mg
J2ZpbGVuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ29yaWdpbicgaW4gd2Via2l0
VVJMIGlzIGZhbHNlCitQQVNTICdwYXJhbWV0ZXJOYW1lcycgaW4gd2Via2l0VVJMIGlzIGZhbHNl
CitQQVNTICdnZXRQYXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2dl
dFBhcmFtZXRlckFsbG5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnYXBwZW5kUGFy
YW1ldGVyJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2NsZWFyUGFyYW1ldGVybmFtZScg
aW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdocmVmJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UK
K1BBU1MgdXJsIGluc3RhbmNlb2Ygd2Via2l0VVJMIGlzIHRydWUKK1BBU1MgdXJsLmhhc093blBy
b3BlcnR5KCdnZXRQYXJhbWV0ZXInKSBpcyBmYWxzZQorUEFTUyB1cmwuaGFzT3duUHJvcGVydHko
J2FwcGVuZFBhcmFtZXRlcicpIGlzIGZhbHNlCitQQVNTIHVybC5oYXNPd25Qcm9wZXJ0eSgnY2xl
YXJQYXJhbWV0ZXInKSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVj
ay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5z
dGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4iKTsKKwor
dmFyIHVybCA9IG5ldyB3ZWJraXRVUkwoInd3dy53ZWJraXQub3JnIik7CisKK3Nob3VsZEJlRmFs
c2UoIidwcm90b2NvbCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIndXNlcm5hbWUn
IGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3Bhc3N3b3JkJyBpbiB3ZWJraXRVUkwi
KTsKK3Nob3VsZEJlRmFsc2UoIidob3N0JyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2Uo
Iidob3N0bmFtZScgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncG9ydCcgaW4gd2Vi
a2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncGF0aG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hv
dWxkQmVGYWxzZSgiJ3NlYXJjaCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInaGFz
aCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInZmlsZW5hbWUnIGluIHdlYmtpdFVS
TCIpOworc2hvdWxkQmVGYWxzZSgiJ29yaWdpbicgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZh
bHNlKCIncGFyYW1ldGVyTmFtZXMnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2dl
dFBhcmFtZXRlcm5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2dldFBhcmFt
ZXRlckFsbG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2FwcGVuZFBhcmFt
ZXRlcicgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInY2xlYXJQYXJhbWV0ZXJuYW1l
JyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidocmVmJyBpbiB3ZWJraXRVUkwiKTsK
KworLy9zaG91bGRCZVRydWUoIidjcmVhdGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworLy9z
aG91bGRCZVRydWUoIidyZXZva2VPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworCitzaG91bGRC
ZVRydWUoInVybCBpbnN0YW5jZW9mIHdlYmtpdFVSTCIpCitzaG91bGRCZUZhbHNlKCJ1cmwuaGFz
T3duUHJvcGVydHkoJ2dldFBhcmFtZXRlcicpIikKK3Nob3VsZEJlRmFsc2UoInVybC5oYXNPd25Q
cm9wZXJ0eSgnYXBwZW5kUGFyYW1ldGVyJykiKQorc2hvdWxkQmVGYWxzZSgidXJsLmhhc093blBy
b3BlcnR5KCdjbGVhclBhcmFtZXRlcicpIikKKy8vc2hvdWxkQmVVbmRlZmluZWQoInVybC5jcmVh
dGVPYmplY3RVUkwiKTsKKy8vc2hvdWxkQmVVbmRlZmluZWQoInVybC5yZXZva2VPYmplY3RVUkwi
KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNo
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIxIEBACitUZXN0IHNldHRpbmcgdGhlIGhhc2ggYXR0cmlidXRlIG9mIHRoZSBET01VUkwu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitIYXNoIHZhbHVlIHN0YXJ0IHdpdGgg
IworUEFTUyBkb211cmwuaGFzaCBpcyAiI21pZGRsZSIKKyc/JyBpbiBoYXNoIHZhbHVlCitQQVNT
IGRvbXVybC5oYXNoIGlzICIjaGFzaD92YWx1ZSIKKycjJyBpbiBoYXNoIHZhbHVlLCBhbmQgaWxs
ZWdhbCBjaGFyYWN0ZXJzIGluIGhvc3RuYW1lCitQQVNTIGRvbXVybC5oYXNoIGlzICIiCitudWxs
IGhhc2gKK1BBU1MgZG9tdXJsLmhhc2ggaXMgIiIKK2hhc2ggdG8gbWFpbHRvOiBwcm90b2NvbAor
UEFTUyBkb211cmwuaGFzaCBpcyAiI2hhc2gtdmFsdWUiCitBZGQgaGFzaCB0byBub24tc3RhbmRh
cmQgcHJvdG9jb2wKK1BBU1MgZG9tdXJsLmhhc2ggaXMgIiNoYXNoIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2guaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0
ZS1oYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhhc2gg
YXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK2RlYnVnKCJIYXNoIHZhbHVlIHN0YXJ0IHdp
dGggIyIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb211cmwuaGFzaCIsICIjbWlkZGxlIik7CisKK2RlYnVnKCInPycgaW4gaGFzaCB2YWx1
ZSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHA6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvdGVzdHVybC5odG1sI2hhc2g/dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9tdXJsLmhhc2giLCAiI2hhc2g/dmFsdWUiKTsKKworZGVidWcoIicjJyBpbiBoYXNoIHZhbHVl
LCBhbmQgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGhvc3RuYW1lIik7Cit2YXIgZG9tdXJsID0gbmV3
IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlcImQoKXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVy
bC5odG1sI21pZGRsZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuaGFzaCIsICIi
KTsKKworZGVidWcoIm51bGwgaGFzaCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0
dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCMiKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiIik7CisKK2RlYnVnKCJoYXNoIHRvIG1haWx0bzog
cHJvdG9jb2wiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJtYWlsdG86ZS1tYWlsX2Fk
ZHJlc3NAZ29lc19oZXJlI2hhc2gtdmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9t
dXJsLmhhc2giLCAiI2hhc2gtdmFsdWUiKTsKKworZGVidWcoIkFkZCBoYXNoIHRvIG5vbi1zdGFu
ZGFyZCBwcm90b2NvbCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImZvbzpiYXIjaGFz
aCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuaGFzaCIsICIjaGFzaCIpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwt
YXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBA
CitUZXN0IHNldHRpbmcgdGhlIGhvc3QgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyB0ZXN0CitQQVNTIGRvbXVybC5ob3N0IGlz
ICJ3d3cubXlkb21haW4uY29tOjgwODAiCitEZWZhdWx0CitQQVNTIGRvbXVybC5ob3N0IGlzICJ3
d3cub3RoZXJkb21haW4uY29tIgorSG9zdCBVUkwgY29udGFpbmluZyB1c2VybmFtZQorUEFTUyBk
b211cmwuaG9zdCBpcyAiZG9tYWluLmNvbToyNSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBob3N0IGF0dHJpYnV0ZSBv
ZiB0aGUgRE9NVVJMLicpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOwordmFyIGRvbXVybCA9IG5l
dyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5ob3N0IiwgInd3dy5teWRvbWFpbi5jb206ODA4MCIp
OworCitkZWJ1ZygiRGVmYXVsdCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBz
Oi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b211cmwuaG9zdCIsICJ3d3cub3RoZXJkb21haW4uY29tIik7CisKK2RlYnVnKCJIb3N0IFVSTCBj
b250YWluaW5nIHVzZXJuYW1lIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6
Ly9yd3dteUBkb21haW4uY29tOjI1L3BhLi50aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9tdXJsLmhvc3QiLCAiZG9tYWluLmNvbToyNSIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1o
b3N0bmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3Qg
c2V0dGluZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyB0ZXN0CitQQVNTIGRvbXVybC5ob3N0bmFtZSBp
cyAid3d3Lm15ZG9tYWluLmNvbSIKK0hvc3RuYW1lIHdpdGggZm9vOiBwcm90b2NvbAorUEFTUyBk
b211cmwuaG9zdG5hbWUgaXMgInd3dy5teWRvbWFpbi5jb20iCitTZXQgZG9tdXJsIGhvc3RuYW1l
IHRoYXQgY29udGFpbnMgc3BhY2UgaW4gaXQKK1BBU1MgZG9tdXJsLmhvc3RuYW1lIGlzICIiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1ob3N0bmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
RE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3Qgc2V0dGluZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7
CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0
cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9tdXJsLmhvc3RuYW1lIiwgInd3dy5teWRvbWFpbi5jb20iKTsKKworZGVidWcoIkhvc3Ru
YW1lIHdpdGggZm9vOiBwcm90b2NvbCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImZv
bzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9t
dXJsLmhvc3RuYW1lIiwgInd3dy5teWRvbWFpbi5jb20iKTsKKworZGVidWcoIlNldCBkb211cmwg
aG9zdG5hbWUgdGhhdCBjb250YWlucyBzcGFjZSBpbiBpdCIpOwordmFyIGRvbXVybCA9IG5ldyB3
ZWJraXRVUkwoImh0dHA6Ly93d3cubXkgZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb211cmwuaG9zdG5hbWUiLCAiIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LXBhdGhuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVz
dCBzZXR0aW5nIHRoZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIFRlc3QKK1BBU1MgZG9tdXJsLnBhdGhuYW1l
IGlzICIvcGF0aC90ZXN0dXJsLmh0bWwiCitQYXRobmFtZSB3aXRoIHN5bWJvbHMKK1BBU1MgZG9t
dXJsLnBhdGhuYW1lIGlzICIvcGElM0Z0aCIKK3BhdGhuYW1lIHRvIG51bGwKK1BBU1MgZG9tdXJs
LnBhdGhuYW1lIGlzICIvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0
cmlidXRlLXBhdGhuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
RE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0
ZSBvZiB0aGUgRE9NVVJMLicpOworCitkZWJ1ZygiQmFzaWMgVGVzdCIpOwordmFyIGRvbXVybCA9
IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRt
bD9rZXk9dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnBhdGhuYW1lIiwg
Ii9wYXRoL3Rlc3R1cmwuaHRtbCIpOworCitkZWJ1ZygiUGF0aG5hbWUgd2l0aCBzeW1ib2xzIik7
Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3Bh
JTNGdGg/a2V5PXZhbHVlIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wYXRobmFt
ZSIsICIvcGElM0Z0aCIpOworCitkZWJ1ZygicGF0aG5hbWUgdG8gbnVsbCIpOwordmFyIGRvbXVy
bCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wYXRobmFtZSIsICIvIik7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAor
VGVzdCBnZXR0aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworRGVmYXVsdCBvciBVbnNwZWNpZmllZCBwb3J0IGlzIGVt
cHR5CitQQVNTIGRvbXVybC5wb3J0IGlzICcnCitFbXB0eSBwb3J0IHNob3VsZCBiZSBlbXB0eQor
UEFTUyBkb211cmwucG9ydCBpcyAnJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGdldHRpbmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBE
T01VUkwuJyk7CisKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwOi8vd2Via2l0Lm9y
ZyIpOworZGVidWcoIkRlZmF1bHQgb3IgVW5zcGVjaWZpZWQgcG9ydCBpcyBlbXB0eSIpOworc2hv
dWxkQmUoImRvbXVybC5wb3J0IiwgIicnIik7CisKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJM
KCJodHRwOi8vd2Via2l0Lm9yZzovIik7CitkZWJ1ZygiRW1wdHkgcG9ydCBzaG91bGQgYmUgZW1w
dHkiKTsKK3Nob3VsZEJlKCJkb211cmwucG9ydCIsICInJyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitU
ZXN0IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBkb211cmwucHJvdG9j
b2wgaXMgImh0dHAtZm9vOiIKK1Byb3RvY29sIG9uIG1hbGZvcm1lZCBVUkwKK1BBU1MgZG9tdXJs
LnByb3RvY29sIGlzICJmb286IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwt
YXR0cmlidXRlLXByb3RvY29sLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJp
YnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7Cit2YXIgZG9t
dXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cC1mb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wcm90b2NvbCIsImh0dHAtZm9vOiIpOwor
CitkZWJ1ZygiUHJvdG9jb2wgb24gbWFsZm9ybWVkIFVSTCIpOwordmFyIGRvbXVybCA9IG5ldyB3
ZWJraXRVUkwoImZvbzo/P2JhciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwucHJv
dG9jb2wiLCAiZm9vOiIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVy
bC1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgc2VhcmNoIGF0
dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
QmFzaWMgVGVzdAorUEFTUyBkb211cmwuc2VhcmNoIGlzICI/a2V5PXZhbHVlIgorU2VhcmNoIHRo
YXQgc3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBzcGFjZXMKK1BBU1MgZG9tdXJsLnNlYXJj
aCBpcyAiP3ZhbCUyMHVlPSUyMGtleT8iCitTZWFyY2ggb24gbWFsZm9ybWVkIFVSTAorUEFTUyBk
b211cmwuc2VhcmNoIGlzICI/JSIKK1NlYXJjaCBjb250YWluaW5nICcjJworUEFTUyBkb211cmwu
c2VhcmNoIGlzICI/a2V5PXZhbHVlIgorU2VhcmNoIHRvIGVtcHR5CitQQVNTIGRvbXVybC5zZWFy
Y2ggaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1z
ZWFyY2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRlIG9mIHRoZSBET01VUkwu
Jyk7CisKK2RlYnVnKCJCYXNpYyBUZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj9rZXk9dmFsdWUiKTsKKworZGVidWcoIlNlYXJj
aCB0aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29udGFpbnMgc3BhY2VzIik7Cit2YXIgZG9tdXJs
ID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbCUyMHVl
PSUyMGtleT8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnNlYXJjaCIsICI/dmFs
JTIwdWU9JTIwa2V5PyIpOworCitkZWJ1ZygiU2VhcmNoIG9uIG1hbGZvcm1lZCBVUkwiKTsKK3Zh
ciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJzOnd3dy5teWRvbWFpbi5jb20vcGF0aC8/JSIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj8lIik7CisKK2RlYnVnKCJT
ZWFyY2ggY29udGFpbmluZyAnIyciKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRw
czovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlI2hhc2giKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9tdXJsLnNlYXJjaCIsICI/a2V5PXZhbHVlIik7CisKK2RlYnVnKCJTZWFy
Y2ggdG8gZW1wdHkiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5t
eWRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnNlYXJj
aCIsICIiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc3Ry
aW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmli
dXRlLWhyZWYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0
IHN0cmluZ2lmaWVyIHByb3BlcnR5IG9mIGhyZWYgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHVybC50b1N0cmluZygpIGlzIHVy
bC5ocmVmCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1h
dHRyaWJ1dGUtaHJlZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmli
dXRlLWhyZWYuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5naWZpZXIgcHJv
cGVydHkgb2YgaHJlZiBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4iKTsKKwordmFyIHVybCA9IG5l
dyB3ZWJraXRVUkwoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKK3Nob3VsZEJlKCJ1cmwudG9T
dHJpbmcoKSIsICJ1cmwuaHJlZiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116565</attachid>
            <date>2011-11-24 23:02:52 -0800</date>
            <delta_ts>2011-12-06 04:35:30 -0800</delta_ts>
            <desc>Update Patch</desc>
            <filename>71968-patch.txt</filename>
            <type>text/plain</type>
            <size>33647</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTE0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDExLTExLTIyICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBVUkwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgRE9NVVJMIElETCBhdHRyaWJ1dGVzLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rp
b25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LWhhc2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1ob3N0bmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwKKworICAg
ICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6RE9NVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRI
cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cHJvdG9jb2wpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVVJMOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnVz
ZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0VXNlcm5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpwYXNzd29yZCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OnNldFBhc3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6aG9zdCk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpo
b3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhvc3RuYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVVSTDo6cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNl
dFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwYXRobmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01VUkw6OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6
c2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpmaWxlbmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01VUkw6OnNldEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6b3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVVSTDo6Y2xlYXJQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvRE9NVVJMLmg6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnRv
U3RyaW5nKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorCiAyMDExLTExLTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gQnVpbGQgZml4IGZvciBOT1QgRU5BQkxFX1dFQl9T
T0NLRVRTLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAkocmV2aXNpb24gMTAxMTQ3KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMzggKzI1LDQ5IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEJMT0IpCi0KICNpbmNsdWRlICJET01V
UkwuaCIKIAotI2luY2x1ZGUgIkJsb2IuaCIKLSNpbmNsdWRlICJCbG9iVVJMLmgiCiAjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKKyNpZiBFTkFCTEUoQkxPQikKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiQmxvYlVS
TC5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJl
YW1SZWdpc3RyeS5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1E
T01VUkw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKK0RPTVVSTDo6RE9NVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigwKQogeworICAgIG1faHJl
ZiA9IEtVUkwoS1VSTCgpLCB1cmwpOworICAgIC8vIFJlc29sdmUgdGhlIFVSTCByZWxhdGl2ZSB0
byBiYXNlVVJMIGlmIGlzIHByb3ZpZGUuCisgICAgaWYgKCFiYXNlVVJMLmlzRW1wdHkoKSkKKyAg
ICAgICAgbV9ocmVmID0gS1VSTChtX2hyZWYsIGJhc2VVUkwpOwogfQogCiBET01VUkw6On5ET01V
UkwoKQogewogfQogCitET01VUkw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKK30KKwogdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95
ZWQoKQogewogICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVk
KCk7CiAKKyNpZiBFTkFCTEUoQkxPQikKICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1
YmxpY0Jsb2JVUkxzRW5kID0gbV9wdWJsaWNCbG9iVVJMcy5lbmQoKTsKICAgICBmb3IgKEhhc2hT
ZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljQmxvYlVSTHMuYmVnaW4oKTsgaXRl
ciAhPSBwdWJsaWNCbG9iVVJMc0VuZDsgKytpdGVyKQogICAgICAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsK
QEAgLTY1LDggKzc3LDEwIEBAIHZvaWQgRE9NVVJMOjpjb250ZXh0RGVzdHJveWVkKCkKICAgICBm
b3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljU3RyZWFtVVJMcy5i
ZWdpbigpOyBpdGVyICE9IHB1YmxpY1N0cmVhbVVSTHNFbmQ7ICsraXRlcikKICAgICAgICAgTWVk
aWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CiAjZW5kaWYKKyNlbmRpZgogfQogCisjaWYgRU5B
QkxFKEJMT0IpCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIFN0cmluZyBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChNZWRpYVN0cmVhbSogc3RyZWFtKQogewpAQCAtMTI0LDcgKzEzOCwxNTQgQEAg
dm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbgogICAgIH0KICNlbmRpZgog
fQorI2VuZGlmCisKK1N0cmluZyBET01VUkw6Omhvc3QoKSBjb25zdAoreworICAgIGlmIChtX2hy
ZWYuaG9zdEVuZCgpID09IG1faHJlZi5wYXRoU3RhcnQoKSkKKyAgICAgICAgcmV0dXJuIG1faHJl
Zi5ob3N0KCk7CisgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2hyZWYucG9ydCgp
LCBtX2hyZWYucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiBtX2hyZWYuaG9zdCgpOworICAg
IHJldHVybiBtX2hyZWYuaG9zdCgpICsgIjoiICsgU3RyaW5nOjpudW1iZXIobV9ocmVmLnBvcnQo
KSk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCB2YWx1ZSA9PSAibnVsbCIpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9ocmVmLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2l6ZV90IGNvbG9uID0gdmFsdWUuZmluZCgnOicpOworICAgIGlmICghY29sb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjb2xvbiA9PSBub3RGb3VuZCkKKyAgICAgICAg
bV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5zaWdu
ZWQgcG9ydFN0YXJ0ID0gY29sb24gKyAxOworICAgICAgICB1bnNpZ25lZCBwb3J0RW5kID0gcG9y
dFN0YXJ0OworCisgICAgICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQodmFsdWVbcG9ydEVuZF0pKQor
ICAgICAgICAgICAgKytwb3J0RW5kOworCisgICAgICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS5z
dWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0YXJ0KS50b1VJbnQoKTsKKyAgICAg
ICAgaWYgKCFwb3J0KQorICAgICAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1
YnN0cmluZygwLCBjb2xvbiArIDEpICsgIjAiKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIG1faHJlZi5wcm90b2NvbCgpKSkK
KyAgICAgICAgICAgICAgICBtX2hyZWYuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAs
IGNvbG9uKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9ocmVmLnNldEhv
c3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5kKSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2lnbmVkIGhvc3RMZW5ndGggPSB2YWx1ZS5sZW5n
dGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0gPT0gJy8nKQorICAgICAgICBpKys7CisKKyAgICBp
ZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faHJlZi5j
YW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faHJlZi5zZXRIb3N0
KHZhbHVlLnN1YnN0cmluZyhpKSk7Cit9CisKK1N0cmluZyBET01VUkw6OnBvcnQoKSBjb25zdAor
eworICAgIGlmIChocmVmKCkuaGFzUG9ydCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1i
ZXIoaHJlZigpLnBvcnQoKSk7CisKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordm9p
ZCBET01VUkw6OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAoIW1faHJl
Zi5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHBv
cnQgPSB2YWx1ZS50b1VJbnQoKTsKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBv
cnQsIG1faHJlZi5wcm90b2NvbCgpKSkKKyAgICAgICAgbV9ocmVmLnJlbW92ZVBvcnQoKTsKKyAg
ICBlbHNlCisgICAgICAgIG1faHJlZi5zZXRQb3J0KHZhbHVlLnRvVUludCgpKTsKK30KKwordm9p
ZCBET01VUkw6OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKCFt
X2hyZWYuY2FuU2V0UGF0aG5hbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIG5l
d1BhdGhuYW1lID0gKHZhbHVlWzBdID09ICcvJykgPyB2YWx1ZSA6ICgiLyIgKyB2YWx1ZSk7Cisg
ICAgbV9ocmVmLnNldFBhdGgobmV3UGF0aG5hbWUpOworfQorCitTdHJpbmcgRE9NVVJMOjpzZWFy
Y2goKSBjb25zdAoreworICAgIFN0cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgpOworICAgIHJl
dHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8iICsgcXVlcnk7Cit9CisK
K3ZvaWQgRE9NVVJMOjpzZXRTZWFyY2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBTdHJp
bmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2
YWx1ZTsKKyAgICBtX2hyZWYuc2V0UXVlcnkobmV3U2VhcmNoLnJlcGxhY2UoJyMnLCAiJTIzIikp
OworfQorCitTdHJpbmcgRE9NVVJMOjpoYXNoKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgZnJhZ21l
bnQgPSBocmVmKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGZyYWdtZW50Lmlz
RW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBmcmFnbWVudDsKK30KKwordm9pZCBET01V
Ukw6OnNldEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBTdHJpbmcgbmV3SGFzaCA9
ICh2YWx1ZVswXSA9PSAnIycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAgbV9o
cmVmLnNldEZyYWdtZW50SWRlbnRpZmllcihuZXdIYXNoKTsKK30KKwordm9pZCBET01VUkw6OnNl
dEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4K
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgRE9NVVJMOjpvcmlnaW4oKSBjb25z
dAoreworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShocmVmKCkpOworICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBET01VUkw6OmdldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK3ZvaWQgRE9NVVJMOjphcHBlbmRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjphcHBlbmRQYXJh
bWV0ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9Cit2b2lkIERPTVVSTDo6Y2xlYXJQ
YXJhbWV0ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIEVOQUJMRShCTE9CKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCShyZXZpc2lvbiAxMDEx
NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjcsOSBAQAogI2lm
bmRlZiBET01VUkxfaAogI2RlZmluZSBET01VUkxfaAogCi0jaWYgRU5BQkxFKEJMT0IpCi0KICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDIsMjggKzQz
LDc3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIERPTVVSTCA6IHB1
YmxpYyBSZWZDb3VudGVkPERPTVVSTD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxET01VUkw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHVybCwgYmFzZVVSTCkpOyB9Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwodXJsLCBlbXB0eVN0cmluZygpKSk7IH0KICAgICB+
RE9NVVJMKCk7CiAKKyAgICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdCB7IHJldHVybiBocmVmKCku
cHJvdG9jb2woKSArICI6IjsgfQorICAgIHZvaWQgc2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB2
YWx1ZSkgeyBtX2hyZWYuc2V0UHJvdG9jb2wodmFsdWUpOyB9CisKKyAgICBTdHJpbmcgdXNlcm5h
bWUoKSBjb25zdCB7IHJldHVybiBocmVmKCkudXNlcigpOyB9CisgICAgdm9pZCBzZXRVc2VybmFt
ZShjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZi5zZXRVc2VyKHZhbHVlKTsgfQorCisgICAg
U3RyaW5nIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLnBhc3MoKTsgfQorICAgIHZv
aWQgc2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyAgbV9ocmVmLnNldFBhc3ModmFs
dWUpOyB9CisKKyAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OworICAgIHZvaWQgc2V0SG9zdChjb25z
dCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBob3N0bmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYo
KS5ob3N0KCk7IH0KKyAgICB2b2lkIHNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAg
U3RyaW5nIHBvcnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFBvcnQoY29uc3QgU3RyaW5nJik7CisK
KyAgICBTdHJpbmcgcGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBocmVmKCkucGF0aCgpOyB9Cisg
ICAgdm9pZCBzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBzZWFyY2go
KSBjb25zdDsKKyAgICB2b2lkIHNldFNlYXJjaChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmlu
ZyBoYXNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIYXNoKGNvbnN0IFN0cmluZyYpOworCisgICAg
U3RyaW5nIGZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLmxhc3RQYXRoQ29tcG9uZW50
KCk7IH0KKyAgICB2b2lkIHNldEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5n
IG9yaWdpbigpIGNvbnN0OworCisgICAgS1VSTCBocmVmKCkgY29uc3QgeyByZXR1cm4gbV9ocmVm
OyB9CisgICAgdm9pZCBzZXRIcmVmKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV9ocmVmID0gS1VS
TChLVVJMKCksIHZhbHVlKTsgfQorCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9ocmVmLnN0cmluZygpOyB9CisKKyAgICBTdHJpbmcgZ2V0UGFyYW1ldGVyKGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOworICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXIoY29uc3Qg
U3RyaW5nJik7CisKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01V
Ukw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsg
fQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChN
ZWRpYVN0cmVhbSopOwogI2VuZGlmCiAgICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iKik7
CiAgICAgdm9pZCByZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKIAogcHJp
dmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAg
IEtVUkwgbV9ocmVmOworCisgICAgRE9NVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OwogCisjaWYgRU5BQkxFKEJMT0IpCisgICAgZXhwbGljaXQgRE9NVVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fcHVibGljQmxvYlVSTHM7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNTdHJlYW1VUkxzOwogI2VuZGlmCisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9C
KQotCiAjZW5kaWYgLy8gRE9NVVJMX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJM
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwJKHJldmlz
aW9uIDEwMTE0NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBN
b2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE2ICsy
NiwzNyBAQAogCiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0
aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5h
dGl2ZUNvbnZlcnRlciwKICAgICAgICAgR2VuZXJhdGVUb0pTLAotICAgICAgICBOb1N0YXRpY1Rh
YmxlcworICAgICAgICBOb1N0YXRpY1RhYmxlcywKKyAgICAgICAgUmVwbGFjZWFibGUsCisgICAg
ICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIFtPcHRpb25hbD1DYWxsV2l0aE51
bGxWYWx1ZV0gRE9NU3RyaW5nIGJhc2VVUkwpCiAgICAgXSBET01VUkwgeworICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVz
ZXJuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBhc3N3b3JkOworICAgICAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3Q7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaG9z
dG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcG9ydDsKKyAgICAgICAgYXR0cmli
dXRlIERPTVN0cmluZyBwYXRobmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBzZWFy
Y2g7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaGFzaDsKKworICAgICAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGZpbGVuYW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIG9yaWdpbjsKKyAgICAgICAgc3RyaW5naWZpZXIgYXR0cmlidXRlIERPTVN0cmluZyBocmVm
OworCisgICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7CisgICAgICAgIERP
TVN0cmluZyBnZXRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICB2b2lkIGFw
cGVuZFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZhbHVlcyk7Cisg
ICAgICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJp
bmdbXSB2YWx1ZXMpOworICAgICAgICB2b2lkIGNsZWFyUGFyYW1ldGVyKGluIERPTVN0cmluZyBu
YW1lKTsKKwogI2lmIGRlZmluZWQoRU5BQkxFX01FRElBX1NUUkVBTSkgJiYgRU5BQkxFX01FRElB
X1NUUkVBTQotICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRdIERPTVN0cmlu
ZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKTsKKyAgICAgICAgW0NvbmRp
dGlvbmFsPUJMT0JdIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gc3RhdGljIERPTVN0
cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKTsKKwogI2VuZGlmCi0g
ICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9i
amVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAgICB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBE
T01TdHJpbmcgdXJsKTsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUJMT0JdIFtDb252ZXJ0TnVsbFN0
cmluZ1RvPVVuZGVmaW5lZF0gc3RhdGljIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxv
YiBibG9iKTsKKyAgICAgICAgW0NvbmRpdGlvbmFsPUJMT0JdIHN0YXRpYyB2b2lkIHJldm9rZU9i
amVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAkocmV2aXNpb24gMTAxMTQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNyArODEzLDcgQEAgbW9kdWxlIHdp
bmRvdyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJLaXRCbG9i
QnVpbGRlckNvbnN0cnVjdG9yIFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAg
YXR0cmlidXRlIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX1FVT1RBKSAmJiBFTkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtF
bmFibGVkQXRSdW50aW1lPVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEwMTE0NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTIyICBLYXVzdHViaCBBdHJhd2Fsa2Fy
ICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBVUkwgQVBJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5NjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIGlt
cGxlbWVudGF0aW9uIG9mIElETCBBdHRyaWJ1dGVzLiBBZGRlZCB0ZXN0IGNhc2VzLgorCisgICAg
ICAgICogZmFzdC9kb20vRE9NVVJMOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9u
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0
ZS1oYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2Rv
bXVybC1hdHRyaWJ1dGUtaGFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhv
c3RuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0
cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
RE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9j
b2wtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJl
Zi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zdHJpbmdp
Zmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMjQgIEFy
a28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPgogCiAgICAgICAgIE1pY3JvZGF0YTogU3VwcG9y
dCBmb3IgcHJvcGVydGllcyBhdHRyaWJ1dGUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1k
b211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACitUZXN0IGluc3RhbmNlb2YgZnVu
Y3Rpb25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgJ3Byb3RvY29sJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1Mg
J3VzZXJuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3Bhc3N3b3JkJyBpbiB3ZWJr
aXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2hvc3QnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAn
aG9zdG5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAncG9ydCcgaW4gd2Via2l0VVJM
IGlzIGZhbHNlCitQQVNTICdwYXRobmFtZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdz
ZWFyY2gnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnaGFzaCcgaW4gd2Via2l0VVJMIGlz
IGZhbHNlCitQQVNTICdmaWxlbmFtZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdvcmln
aW4nIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAncGFyYW1ldGVyTmFtZXMnIGluIHdlYmtp
dFVSTCBpcyBmYWxzZQorUEFTUyAnZ2V0UGFyYW1ldGVybmFtZScgaW4gd2Via2l0VVJMIGlzIGZh
bHNlCitQQVNTICdnZXRQYXJhbWV0ZXJBbGxuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BB
U1MgJ2FwcGVuZFBhcmFtZXRlcicgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdjbGVhclBh
cmFtZXRlcm5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnaHJlZicgaW4gd2Via2l0
VVJMIGlzIGZhbHNlCitQQVNTIHVybCBpbnN0YW5jZW9mIHdlYmtpdFVSTCBpcyB0cnVlCitQQVNT
IHVybC5oYXNPd25Qcm9wZXJ0eSgnZ2V0UGFyYW1ldGVyJykgaXMgZmFsc2UKK1BBU1MgdXJsLmhh
c093blByb3BlcnR5KCdhcHBlbmRQYXJhbWV0ZXInKSBpcyBmYWxzZQorUEFTUyB1cmwuaGFzT3du
UHJvcGVydHkoJ2NsZWFyUGFyYW1ldGVyJykgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJs
LWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGluc3RhbmNlb2YgZnVuY3Rp
b25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJr
aXRVUkwoInd3dy53ZWJraXQub3JnIik7CisKK3Nob3VsZEJlRmFsc2UoIidwcm90b2NvbCcgaW4g
d2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIndXNlcm5hbWUnIGluIHdlYmtpdFVSTCIpOwor
c2hvdWxkQmVGYWxzZSgiJ3Bhc3N3b3JkJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2Uo
Iidob3N0JyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidob3N0bmFtZScgaW4gd2Vi
a2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncG9ydCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRC
ZUZhbHNlKCIncGF0aG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3NlYXJj
aCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInaGFzaCcgaW4gd2Via2l0VVJMIik7
CitzaG91bGRCZUZhbHNlKCInZmlsZW5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxz
ZSgiJ29yaWdpbicgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncGFyYW1ldGVyTmFt
ZXMnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2dldFBhcmFtZXRlcm5hbWUnIGlu
IHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2dldFBhcmFtZXRlckFsbG5hbWUnIGluIHdl
YmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2FwcGVuZFBhcmFtZXRlcicgaW4gd2Via2l0VVJM
Iik7CitzaG91bGRCZUZhbHNlKCInY2xlYXJQYXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwiKTsK
K3Nob3VsZEJlRmFsc2UoIidocmVmJyBpbiB3ZWJraXRVUkwiKTsKKworLy9zaG91bGRCZVRydWUo
IidjcmVhdGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworLy9zaG91bGRCZVRydWUoIidyZXZv
a2VPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworCitzaG91bGRCZVRydWUoInVybCBpbnN0YW5j
ZW9mIHdlYmtpdFVSTCIpCitzaG91bGRCZUZhbHNlKCJ1cmwuaGFzT3duUHJvcGVydHkoJ2dldFBh
cmFtZXRlcicpIikKK3Nob3VsZEJlRmFsc2UoInVybC5oYXNPd25Qcm9wZXJ0eSgnYXBwZW5kUGFy
YW1ldGVyJykiKQorc2hvdWxkQmVGYWxzZSgidXJsLmhhc093blByb3BlcnR5KCdjbGVhclBhcmFt
ZXRlcicpIikKKy8vc2hvdWxkQmVVbmRlZmluZWQoInVybC5jcmVhdGVPYmplY3RVUkwiKTsKKy8v
c2hvdWxkQmVVbmRlZmluZWQoInVybC5yZXZva2VPYmplY3RVUkwiKTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LWhhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACitUZXN0IHNl
dHRpbmcgdGhlIGhhc2ggYXR0cmlidXRlIG9mIHRoZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitIYXNoIHZhbHVlIHN0YXJ0IHdpdGggIworUEFTUyBkb211cmwuaGFz
aCBpcyAiI21pZGRsZSIKKyc/JyBpbiBoYXNoIHZhbHVlCitQQVNTIGRvbXVybC5oYXNoIGlzICIj
aGFzaD92YWx1ZSIKKycjJyBpbiBoYXNoIHZhbHVlLCBhbmQgaWxsZWdhbCBjaGFyYWN0ZXJzIGlu
IGhvc3RuYW1lCitQQVNTIGRvbXVybC5oYXNoIGlzICIiCitudWxsIGhhc2gKK1BBU1MgZG9tdXJs
Lmhhc2ggaXMgIiIKK2hhc2ggdG8gbWFpbHRvOiBwcm90b2NvbAorUEFTUyBkb211cmwuaGFzaCBp
cyAiI2hhc2gtdmFsdWUiCitBZGQgaGFzaCB0byBub24tc3RhbmRhcmQgcHJvdG9jb2wKK1BBU1Mg
ZG9tdXJsLmhhc2ggaXMgIiNoYXNoIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLWhhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0
aGUgaGFzaCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsKKworZGVidWcoIkhhc2ggdmFsdWUg
c3RhcnQgd2l0aCAjIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tOjgwODAvcGF0aC90ZXN0dXJsLmh0bWwjbWlkZGxlIik7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNtaWRkbGUiKTsKKworZGVidWcoIic/JyBpbiBo
YXNoIHZhbHVlIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cDovL3d3dy5teWRv
bWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwjaGFzaD92YWx1ZSIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb211cmwuaGFzaCIsICIjaGFzaD92YWx1ZSIpOworCitkZWJ1ZygiJyMnIGluIGhh
c2ggdmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaG9zdG5hbWUiKTsKK3ZhciBkb211
cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teVwiZCgpe318fm9tP2FpbiNjb20vcGF0
aC90ZXN0dXJsLmh0bWwjbWlkZGxlIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5o
YXNoIiwgIiIpOworCitkZWJ1ZygibnVsbCBoYXNoIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtp
dFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sIyIpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuaGFzaCIsICIiKTsKKworZGVidWcoImhhc2ggdG8g
bWFpbHRvOiBwcm90b2NvbCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoIm1haWx0bzpl
LW1haWxfYWRkcmVzc0Bnb2VzX2hlcmUjaGFzaC12YWx1ZSIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb211cmwuaGFzaCIsICIjaGFzaC12YWx1ZSIpOworCitkZWJ1ZygiQWRkIGhhc2ggdG8g
bm9uLXN0YW5kYXJkIHByb3RvY29sIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiZm9v
OmJhciNoYXNoIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNo
Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3Qt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJM
L2RvbXVybC1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTUgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgZG9tdXJs
Lmhvc3QgaXMgInd3dy5teWRvbWFpbi5jb206ODA4MCIKK0RlZmF1bHQKK1BBU1MgZG9tdXJsLmhv
c3QgaXMgInd3dy5vdGhlcmRvbWFpbi5jb20iCitIb3N0IFVSTCBjb250YWluaW5nIHVzZXJuYW1l
CitQQVNTIGRvbXVybC5ob3N0IGlzICJkb21haW4uY29tOjI1IgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1o
b3N0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3Qgc2V0dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsKKworZGVi
dWcoIkJhc2ljIHRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3
dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211
cmwuaG9zdCIsICJ3d3cubXlkb21haW4uY29tOjgwODAiKTsKKworZGVidWcoIkRlZmF1bHQiKTsK
K3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5vdGhlcmRvbWFpbi5jb20v
cGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3QiLCAid3d3Lm90aGVy
ZG9tYWluLmNvbSIpOworCitkZWJ1ZygiSG9zdCBVUkwgY29udGFpbmluZyB1c2VybmFtZSIpOwor
dmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vcnd3bXlAZG9tYWluLmNvbToyNS9w
YS4udGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5ob3N0IiwgImRvbWFpbi5j
b206MjUiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitUZXN0IHNldHRpbmcgdGhlIGhvc3RuYW1lIGF0
dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
QmFzaWMgdGVzdAorUEFTUyBkb211cmwuaG9zdG5hbWUgaXMgInd3dy5teWRvbWFpbi5jb20iCitI
b3N0bmFtZSB3aXRoIGZvbzogcHJvdG9jb2wKK1BBU1MgZG9tdXJsLmhvc3RuYW1lIGlzICJ3d3cu
bXlkb21haW4uY29tIgorU2V0IGRvbXVybCBob3N0bmFtZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGlu
IGl0CitQQVNTIGRvbXVybC5ob3N0bmFtZSBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LWhvc3RuYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwu
Jyk7CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygiZG9tdXJsLmhvc3RuYW1lIiwgInd3dy5teWRvbWFpbi5jb20iKTsKKworZGVidWcoIkhv
c3RuYW1lIHdpdGggZm9vOiBwcm90b2NvbCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwo
ImZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9tdXJsLmhvc3RuYW1lIiwgInd3dy5teWRvbWFpbi5jb20iKTsKKworZGVidWcoIlNldCBkb211
cmwgaG9zdG5hbWUgdGhhdCBjb250YWlucyBzcGFjZSBpbiBpdCIpOwordmFyIGRvbXVybCA9IG5l
dyB3ZWJraXRVUkwoImh0dHA6Ly93d3cubXkgZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb211cmwuaG9zdG5hbWUiLCAiIik7CisKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1h
dHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAor
VGVzdCBzZXR0aW5nIHRoZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIFRlc3QKK1BBU1MgZG9tdXJsLnBhdGhu
YW1lIGlzICIvcGF0aC90ZXN0dXJsLmh0bWwiCitQYXRobmFtZSB3aXRoIHN5bWJvbHMKK1BBU1Mg
ZG9tdXJsLnBhdGhuYW1lIGlzICIvcGElM0Z0aCIKK3BhdGhuYW1lIHRvIG51bGwKK1BBU1MgZG9t
dXJsLnBhdGhuYW1lIGlzICIvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwt
YXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qg
c2V0dGluZyB0aGUgcGF0aG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK2RlYnVn
KCJCYXNpYyBUZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb211cmwucGF0aG5hbWUiLCAiL3BhdGgvdGVzdHVybC5odG1sIik7CisKK2Rl
YnVnKCJQYXRobmFtZSB3aXRoIHN5bWJvbHMiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJM
KCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGElM0Z0aD9rZXk9dmFsdWUiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9tdXJsLnBhdGhuYW1lIiwgIi9wYSUzRnRoIik7CisKK2RlYnVnKCJw
YXRobmFtZSB0byBudWxsIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9t
dXJsLnBhdGhuYW1lIiwgIi8iKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUZXN0IGdldHRpbmcgdGhlIHBvcnQgYXR0cmli
dXRlIG9mIHRoZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEZWZh
dWx0IG9yIFVuc3BlY2lmaWVkIHBvcnQgaXMgZW1wdHkKK1BBU1MgZG9tdXJsLnBvcnQgaXMgJycK
K0VtcHR5IHBvcnQgc2hvdWxkIGJlIGVtcHR5CitQQVNTIGRvbXVybC5wb3J0IGlzICcnCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBv
cnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCBnZXR0aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgRE9N
VVJMLicpOworCit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cDovL3dlYmtpdC5vcmci
KTsKK2RlYnVnKCJEZWZhdWx0IG9yIFVuc3BlY2lmaWVkIHBvcnQgaXMgZW1wdHkiKTsKK3Nob3Vs
ZEJlKCJkb211cmwucG9ydCIsICInJyIpOworCit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgi
aHR0cDovL3dlYmtpdC5vcmc6LyIpOworZGVidWcoIkVtcHR5IHBvcnQgc2hvdWxkIGJlIGVtcHR5
Iik7CitzaG91bGRCZSgiZG9tdXJsLnBvcnQiLCAiJyciKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LXByb3RvY29sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGVz
dCBzZXR0aW5nIHRoZSBwcm90b2NvbCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgZG9tdXJsLnByb3RvY29s
IGlzICJodHRwLWZvbzoiCitQcm90b2NvbCBvbiBtYWxmb3JtZWQgVVJMCitQQVNTIGRvbXVybC5w
cm90b2NvbCBpcyAiZm9vOiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1wcm90b2NvbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNl
dHRpbmcgdGhlIHByb3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCisKK2RlYnVn
KCJCYXNpYyB0ZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cC1mb286Ly93
d3cubXlkb21haW4uY29tL3BhdGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5w
cm90b2NvbCIsImh0dHAtZm9vOiIpOworCitkZWJ1ZygiUHJvdG9jb2wgb24gbWFsZm9ybWVkIFVS
TCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImZvbzo/P2JhciIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb211cmwucHJvdG9jb2wiLCAiZm9vOiIpOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLXNlYXJjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKK1Rl
c3Qgc2V0dGluZyB0aGUgc2VhcmNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgVGVzdAorUEFTUyBkb211cmwuc2VhcmNoIGlz
ICI/a2V5PXZhbHVlIgorU2VhcmNoIHRoYXQgc3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBz
cGFjZXMKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiP3ZhbCUyMHVlPSUyMGtleT8iCitTZWFyY2gg
b24gbWFsZm9ybWVkIFVSTAorUEFTUyBkb211cmwuc2VhcmNoIGlzICI/JSIKK1NlYXJjaCBjb250
YWluaW5nICcjJworUEFTUyBkb211cmwuc2VhcmNoIGlzICI/a2V5PXZhbHVlIgorU2VhcmNoIHRv
IGVtcHR5CitQQVNTIGRvbXVybC5zZWFyY2ggaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNl
YXJjaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCdUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsKKwor
ZGVidWcoIkJhc2ljIFRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczov
L3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRvbXVybC5zZWFyY2giLCAiP2tleT12YWx1ZSIpOworCitkZWJ1ZygiU2VhcmNoIHRoYXQg
c3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBzcGFjZXMiKTsKK3ZhciBkb211cmwgPSBuZXcg
d2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsJTIwdWU9JTIwa2V5
PyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj92YWwlMjB1ZT0l
MjBrZXk/Iik7CisKK2RlYnVnKCJTZWFyY2ggb24gbWFsZm9ybWVkIFVSTCIpOwordmFyIGRvbXVy
bCA9IG5ldyB3ZWJraXRVUkwoInM6d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8lIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImRvbXVybC5zZWFyY2giLCAiPyUiKTsKKworZGVidWcoIlNlYXJjaCBj
b250YWluaW5nICcjJyIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3
Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUjaGFzaCIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb211cmwuc2VhcmNoIiwgIj9rZXk9dmFsdWUiKTsKKworZGVidWcoIlNlYXJjaCB0byBl
bXB0eSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWlu
LmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIiIp
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmll
ci1kb211cmwtYXR0cmlidXRlLWhyZWYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJl
Zi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3Qgc3RyaW5n
aWZpZXIgcHJvcGVydHkgb2YgaHJlZiBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdXJsLnRvU3RyaW5nKCkgaXMgdXJsLmhyZWYK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0
ZS1ocmVmLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0
cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJl
Zi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0IHN0cmluZ2lmaWVyIHByb3BlcnR5IG9mIGhyZWYgYXR0cmlidXRlIG9mIHRoZSBET01VUkwu
Iik7CisKK3ZhciB1cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIik7
CitzaG91bGRCZSgidXJsLnRvU3RyaW5nKCkiLCAidXJsLmhyZWYiKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118024</attachid>
            <date>2011-12-06 04:35:30 -0800</date>
            <delta_ts>2011-12-06 13:45:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>71968_patch.txt</filename>
            <type>text/plain</type>
            <size>36744</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjEyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDExLTEyLTA2ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBVUkwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgRE9NVVJMIElETCBhdHRyaWJ1dGVzLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rp
b25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LWhhc2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1ob3N0bmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwKKworICAg
ICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6RE9NVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01VUkw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6Omhvc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01VUkw6OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2VhcmNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01VUkw6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmdldFBhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmFwcGVuZFBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpET01VUkw6OmNsZWFyUGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5o
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVVJMOjpwcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFByb3RvY29s
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6dXNlcm5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpzZXRVc2VybmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBhc3N3
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UGFzc3dvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NVVJMOjpob3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBh
dGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6ZmlsZW5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NVVJMOjpocmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0SHJl
Zik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnRvU3RyaW5nKToKKyAgICAgICAgKiBodG1s
L0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDExLTEyLTA2
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTAyMTExLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNw
cAkocmV2aXNpb24gMTAyMDk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjQsNDUgKzI1LDYzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KEJMT0IpCi0KICNpbmNsdWRlICJET01VUkwuaCIKIAotI2luY2x1ZGUgIkJsb2IuaCIKLSNpbmNs
dWRlICJCbG9iVVJMLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlRo
cmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpZiBFTkFCTEUoQkxPQikKKyNpbmNsdWRlICJC
bG9iLmgiCisjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCIKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgogI2VuZGlmCisjZW5kaWYKKwor
I2lmIEVOQUJMRShCTE9CKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitIYXNoU2V0PFN0cmlu
Zz4gcHVibGljU3RyZWFtVVJMczsKKyNlbmRpZgorSGFzaFNldDxTdHJpbmc+IHB1YmxpY0Jsb2JV
UkxzOworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NVVJMOjpET01VUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICA6IENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCitET01VUkw6OkRP
TVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQorICAgIDogQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoMCkKIHsKKyAgICBtX2hyZWYgPSBLVVJMKEtVUkwoKSwg
dXJsKTsKKyAgICAvLyBSZXNvbHZlIHRoZSBVUkwgcmVsYXRpdmUgdG8gYmFzZVVSTCBpZiBpcyBw
cm92aWRlLgorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkpCisgICAgICAgIG1faHJlZiA9IEtV
UkwobV9ocmVmLCBiYXNlVVJMKTsKIH0KIAogRE9NVVJMOjp+RE9NVVJMKCkKIHsKIH0KIAorI2lm
IEVOQUJMRShCTE9CKQorRE9NVVJMOjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7Cit9CisKIHZvaWQgRE9NVVJMOjpjb250ZXh0RGVzdHJv
eWVkKCkKIHsKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3ll
ZCgpOwogCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNCbG9iVVJMc0VuZCA9
IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJh
dG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljQmxvYlVS
THNFbmQ7ICsraXRlcikKKyAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1YmxpY0Jsb2JV
UkxzRW5kID0gcHVibGljQmxvYlVSTHMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFN0cmluZz46
Oml0ZXJhdG9yIGl0ZXIgPSBwdWJsaWNCbG9iVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY0Js
b2JVUkxzRW5kOyArK2l0ZXIpCiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOwogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1YmxpY1N0cmVh
bVVSTHNFbmQgPSBtX3B1YmxpY1N0cmVhbVVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0
cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY1N0cmVhbVVSTHMuYmVnaW4oKTsgaXRlciAh
PSBwdWJsaWNTdHJlYW1VUkxzRW5kOyArK2l0ZXIpCisgICAgSGFzaFNldDxTdHJpbmc+OjppdGVy
YXRvciBwdWJsaWNTdHJlYW1VUkxzRW5kID0gcHVibGljU3RyZWFtVVJMcy5lbmQoKTsKKyAgICBm
b3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IHB1YmxpY1N0cmVhbVVSTHMuYmVn
aW4oKTsgaXRlciAhPSBwdWJsaWNTdHJlYW1VUkxzRW5kOyArK2l0ZXIpCiAgICAgICAgIE1lZGlh
U3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOwogI2VuZGlmCiB9CkBAIC03MCwxMCArODksMTAgQEAg
dm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95ZWQoKQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsK
LSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQorICAgIGlmICgg
IXN0cmVhbSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwg
PSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1Ymxp
Y1VSTChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkuZ2V0KCkpOwogICAgIGlmIChwdWJs
aWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTgxLDcgKzEw
MCw3IEBAIFN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmUKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnko
KS5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHB1YmxpY1VSTCwgc3RyZWFtKTsKLSAgICBtX3B1Ymxp
Y1N0cmVhbVVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAgcHVibGljU3RyZWFtVVJM
cy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5n
KCk7CiB9CkBAIC04OSw0MiArMTA4LDE4NSBAQCBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoTWVkaWFTdHJlCiAKIFN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChCbG9iKiBibG9i
KQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQorICAgIGlm
ICghYmxvYikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwg
PSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1Ymxp
Y1VSTChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkuZ2V0KCkpOwogICAgIGlmIChwdWJs
aWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGljVVJMLCBibG9iLT51cmwoKSk7
Ci0gICAgbV9wdWJsaWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKKyAgICBwdWJs
aWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNV
Ukwuc3RyaW5nKCk7CiB9CiAKIHZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3RyaW5nKTsKIAotICAg
IGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBpZiAo
cHVibGljQmxvYlVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgICAgICBtX3B1Ymxp
Y0Jsb2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBwdWJsaWNCbG9iVVJMcy5y
ZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9Ci0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgIGlmIChtX3B1YmxpY1N0cmVhbVVSTHMuY29udGFpbnModXJsLnN0cmluZygpKSkgeworICAg
IGlmIChwdWJsaWNTdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAg
Ly8gRklYTUU6IG1ha2Ugc3VyZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVj
IHF1ZXN0aW9uIGlmIHJlcXVpcmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5v
dCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQu
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVn
aXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVybCk7Ci0gICAgICAg
IG1fcHVibGljU3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgcHVibGlj
U3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0KKyNlbmRp
ZgorCitTdHJpbmcgRE9NVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICBpZiAobV9ocmVmLmhvc3RF
bmQoKSA9PSBtX2hyZWYucGF0aFN0YXJ0KCkpCisgICAgICAgIHJldHVybiBtX2hyZWYuaG9zdCgp
OworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9ocmVmLnBvcnQoKSwgbV9ocmVm
LnByb3RvY29sKCkpKQorICAgICAgICByZXR1cm4gbV9ocmVmLmhvc3QoKTsKKyAgICByZXR1cm4g
bV9ocmVmLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKG1faHJlZi5wb3J0KCkpOworfQor
Cit2b2lkIERPTVVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2
YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9ocmVmLmNhblNl
dEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGNvbG9uID0gdmFs
dWUuZmluZCgnOicpOworICAgIGlmICghY29sb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChjb2xvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVl
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgcG9ydFN0YXJ0ID0gY29sb24gKyAxOwor
ICAgICAgICB1bnNpZ25lZCBwb3J0RW5kID0gcG9ydFN0YXJ0OworCisgICAgICAgIHdoaWxlIChp
c0FTQ0lJRGlnaXQodmFsdWVbcG9ydEVuZF0pKQorICAgICAgICAgICAgKytwb3J0RW5kOworCisg
ICAgICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5k
IC0gcG9ydFN0YXJ0KS50b1VJbnQoKTsKKyAgICAgICAgaWYgKCFwb3J0KQorICAgICAgICAgICAg
bV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBjb2xvbiArIDEpICsgIjAi
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQsIG1faHJlZi5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICBtX2hyZWYuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIGNvbG9uKSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygw
LCBwb3J0RW5kKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIb3N0
bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVu
c2lnbmVkIGhvc3RMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0g
PT0gJy8nKQorICAgICAgICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1faHJlZi5zZXRIb3N0KHZhbHVlLnN1YnN0cmluZyhpKSk7Cit9CisK
K1N0cmluZyBET01VUkw6OnBvcnQoKSBjb25zdAoreworICAgIGlmIChocmVmKCkuaGFzUG9ydCgp
KQorICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigpLnBvcnQoKSk7CisKKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBET01VUkw6OnNldFBvcnQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsKKyAgICBp
ZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIG1faHJlZi5wcm90b2NvbCgpKSkKKyAg
ICAgICAgbV9ocmVmLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIG1faHJlZi5zZXRQ
b3J0KHZhbHVlLnRvVUludCgpKTsKK30KKwordm9pZCBET01VUkw6OnNldFBhdGhuYW1lKGNvbnN0
IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKCFtX2hyZWYuY2FuU2V0UGF0aG5hbWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIG5ld1BhdGhuYW1lID0gKHZhbHVlWzBdID09ICcv
JykgPyB2YWx1ZSA6ICgiLyIgKyB2YWx1ZSk7CisgICAgbV9ocmVmLnNldFBhdGgobmV3UGF0aG5h
bWUpOworfQorCitTdHJpbmcgRE9NVVJMOjpzZWFyY2goKSBjb25zdAoreworICAgIFN0cmluZyBx
dWVyeSA9IGhyZWYoKS5xdWVyeSgpOworICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogIj8iICsgcXVlcnk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRTZWFyY2goY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09
ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICBtX2hyZWYuc2V0UXVlcnko
bmV3U2VhcmNoKTsKK30KKworU3RyaW5nIERPTVVSTDo6aGFzaCgpIGNvbnN0Cit7CisgICAgU3Ry
aW5nIGZyYWdtZW50ID0gaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJldHVybiBm
cmFnbWVudC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgZnJhZ21lbnQ7Cit9CisK
K3ZvaWQgRE9NVVJMOjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgU3RyaW5n
IG5ld0hhc2ggPSAodmFsdWVbMF0gPT0gJyMnKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVl
OworICAgIG1faHJlZi5zZXRGcmFnbWVudElkZW50aWZpZXIobmV3SGFzaCk7Cit9CisKK3ZvaWQg
RE9NVVJMOjpzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIERPTVVSTDo6b3Jp
Z2luKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICByZXR1cm4gb3JpZ2luLT50b1N0cmluZygp
OworfQorCitTdHJpbmcgRE9NVVJMOjpnZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCit2b2lkIERPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERPTVVSTDo6
YXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQordm9pZCBET01V
Ukw6OmNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2
aXNpb24gMTAyMDk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBN
b2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI3
LDkgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2lmIEVOQUJMRShC
TE9CKQotCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NU3RyaW5n
TGlzdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTQyLDI4ICs0Myw3MiBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBE
T01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01VUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTCh1cmwsIGJhc2VV
UkwpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdXJsKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHVybCwgZW1wdHlTdHJpbmcoKSkp
OyB9CiAgICAgfkRPTVVSTCgpOwogCisgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3QgeyByZXR1
cm4gaHJlZigpLnByb3RvY29sKCkgKyAiOiI7IH0KKyAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0
IFN0cmluZyYgdmFsdWUpIHsgbV9ocmVmLnNldFByb3RvY29sKHZhbHVlKTsgfQorCisgICAgU3Ry
aW5nIHVzZXJuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLnVzZXIoKTsgfQorICAgIHZvaWQg
c2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX2hyZWYuc2V0VXNlcih2YWx1ZSk7
IH0KKworICAgIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5wYXNzKCk7
IH0KKyAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgIG1faHJlZi5z
ZXRQYXNzKHZhbHVlKTsgfQorCisgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEhvc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdCB7IHJl
dHVybiBocmVmKCkuaG9zdCgpOyB9CisgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcm
KTsKKworICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3J0KGNvbnN0IFN0
cmluZyYpOworCisgICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLnBh
dGgoKTsgfQorICAgIHZvaWQgc2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJp
bmcgc2VhcmNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTZWFyY2goY29uc3QgU3RyaW5nJik7CisK
KyAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzaChjb25zdCBTdHJpbmcm
KTsKKworICAgIFN0cmluZyBmaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5sYXN0UGF0
aENvbXBvbmVudCgpOyB9CisgICAgdm9pZCBzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKwor
ICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKKworICAgIEtVUkwgaHJlZigpIGNvbnN0IHsgcmV0
dXJuIG1faHJlZjsgfQorICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1f
aHJlZiA9IEtVUkwoS1VSTCgpLCB2YWx1ZSk7IH0KKworICAgIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0IHsgcmV0dXJuIG1faHJlZi5zdHJpbmcoKTsgfQorCisgICAgU3RyaW5nIGdldFBhcmFtZXRl
cihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KTsKKyAgICB2b2lkIGNsZWFyUGFyYW1l
dGVyKGNvbnN0IFN0cmluZyYpOworCisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iKik7Cisg
ICAgc3RhdGljIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOwogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSop
OworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKik7CisjZW5k
aWYKICNlbmRpZgotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoQmxvYiopOwotICAgIHZvaWQg
cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IERPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgS1VSTCBtX2hyZWY7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworICAgIERPTVVSTChjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JV
UkxzOwotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVi
bGljU3RyZWFtVVJMczsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBleHBsaWNpdCBET01VUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVk
KCk7CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShCTE9CKQotCiAjZW5kaWYgLy8gRE9NVVJMX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5p
ZGwJKHJldmlzaW9uIDEwMjA5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBN
b3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI1LDE2ICsyNiwzNiBAQAogCiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAg
ICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yLAogICAgICAgICBH
ZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgR2VuZXJhdGVUb0pTLAotICAgICAgICBO
b1N0YXRpY1RhYmxlcworICAgICAgICBOb1N0YXRpY1RhYmxlcywKKyAgICAgICAgUmVwbGFjZWFi
bGUsCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyB1cmwsIGluIFtPcHRpb25hbD1D
YWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIGJhc2VVUkwpCiAgICAgXSBET01VUkwgeworICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb3RvY29sOworICAgICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHVzZXJuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBhc3N3b3JkOwor
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3Q7CisgICAgICAgIGF0dHJpYnV0ZSBET01T
dHJpbmcgaG9zdG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcG9ydDsKKyAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBwYXRobmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyBzZWFyY2g7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaGFzaDsKKworICAgICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZpbGVuYW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG9yaWdpbjsKKyAgICAgICAgc3RyaW5naWZpZXIgYXR0cmlidXRlIERPTVN0
cmluZyBocmVmOworCisgICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7Cisg
ICAgICAgIERPTVN0cmluZyBnZXRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAg
ICB2b2lkIGFwcGVuZFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZh
bHVlcyk7CisgICAgICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGluIERPTVN0cmluZyBuYW1lLCBp
biBET01TdHJpbmdbXSB2YWx1ZXMpOworICAgICAgICB2b2lkIGNsZWFyUGFyYW1ldGVyKGluIERP
TVN0cmluZyBuYW1lKTsKKwogI2lmIGRlZmluZWQoRU5BQkxFX01FRElBX1NUUkVBTSkgJiYgRU5B
QkxFX01FRElBX1NUUkVBTQotICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWRd
IERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gTWVkaWFTdHJlYW0gc3RyZWFtKTsKKyAgICAg
ICAgW0NvbmRpdGlvbmFsPUJMT0JdIHN0YXRpYyBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGlu
IE1lZGlhU3RyZWFtIHN0cmVhbSk7CiAjZW5kaWYKLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5n
VG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7Ci0g
ICAgICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOworICAgICAgICBb
Q29uZGl0aW9uYWw9QkxPQl0gc3RhdGljIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxv
YiBibG9iKTsKKyAgICAgICAgc3RhdGljIFtDb25kaXRpb25hbD1CTE9CXSB2b2lkIHJldm9rZU9i
amVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKICAgICB9OwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAkocmV2aXNpb24gMTAyMDk4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNyArODEzLDcgQEAgbW9kdWxlIHdp
bmRvdyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJLaXRCbG9i
QnVpbGRlckNvbnN0cnVjdG9yIFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAg
YXR0cmlidXRlIERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX1FVT1RBKSAmJiBFTkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtF
bmFibGVkQXRSdW50aW1lPVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEwMjEyMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDExLTEyLTA2ICBLYXVzdHViaCBBdHJhd2Fsa2Fy
ICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBVUkwgQVBJLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5NjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIGlt
cGxlbWVudGF0aW9uIG9mIElETCBBdHRyaWJ1dGVzLiBBZGRlZCB0ZXN0IGNhc2VzLgorCisgICAg
ICAgICogZmFzdC9kb20vRE9NVVJMOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9u
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0
ZS1oYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2Rv
bXVybC1hdHRyaWJ1dGUtaGFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhv
c3RuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0
cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
RE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9j
b2wtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJl
Zi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zdHJpbmdp
Zmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbDogQWRkZWQuCisKIDIwMTEtMTItMDYgIENz
YWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIGh0dHAv
dGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291cmNlLWNyYXNoLmh0bWwgYW5k
IGZhc3QvZXZlbnRzL2RyYWctc2VsZWN0cy1pbWFnZS5odG1sIGZhaWxzIHdpdGggdGltZW91dApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJs
LWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFu
Y2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNCBAQAorVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJr
aXRVUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdwcm90b2NvbCcg
aW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICd1c2VybmFtZScgaW4gd2Via2l0VVJMIGlzIGZh
bHNlCitQQVNTICdwYXNzd29yZCcgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdob3N0JyBp
biB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2hvc3RuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFs
c2UKK1BBU1MgJ3BvcnQnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAncGF0aG5hbWUnIGlu
IHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnc2VhcmNoJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UK
K1BBU1MgJ2hhc2gnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnZmlsZW5hbWUnIGluIHdl
YmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnb3JpZ2luJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BB
U1MgJ3BhcmFtZXRlck5hbWVzJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2dldFBhcmFt
ZXRlcm5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnZ2V0UGFyYW1ldGVyQWxsbmFt
ZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdhcHBlbmRQYXJhbWV0ZXInIGluIHdlYmtp
dFVSTCBpcyBmYWxzZQorUEFTUyAnY2xlYXJQYXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwgaXMg
ZmFsc2UKK1BBU1MgJ2hyZWYnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnY3JlYXRlT2Jq
ZWN0VVJMJyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyAncmV2b2tlT2JqZWN0VVJMJyBpbiB3
ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyB1cmwgaW5zdGFuY2VvZiB3ZWJraXRVUkwgaXMgdHJ1ZQor
UEFTUyB1cmwuaGFzT3duUHJvcGVydHkoJ2dldFBhcmFtZXRlcicpIGlzIGZhbHNlCitQQVNTIHVy
bC5oYXNPd25Qcm9wZXJ0eSgnYXBwZW5kUGFyYW1ldGVyJykgaXMgZmFsc2UKK1BBU1MgdXJsLmhh
c093blByb3BlcnR5KCdjbGVhclBhcmFtZXRlcicpIGlzIGZhbHNlCitQQVNTIHVybC5jcmVhdGVP
YmplY3RVUkwgaXMgdW5kZWZpbmVkLgorUEFTUyB1cmwucmV2b2tlT2JqZWN0VVJMIGlzIHVuZGVm
aW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211
cmwtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1
bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVS
TC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJraXRVUkwoInd3dy53ZWJraXQub3JnIik7CisKK3No
b3VsZEJlRmFsc2UoIidwcm90b2NvbCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIn
dXNlcm5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3Bhc3N3b3JkJyBpbiB3
ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidob3N0JyBpbiB3ZWJraXRVUkwiKTsKK3Nob3Vs
ZEJlRmFsc2UoIidob3N0bmFtZScgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncG9y
dCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncGF0aG5hbWUnIGluIHdlYmtpdFVS
TCIpOworc2hvdWxkQmVGYWxzZSgiJ3NlYXJjaCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZh
bHNlKCInaGFzaCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInZmlsZW5hbWUnIGlu
IHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ29yaWdpbicgaW4gd2Via2l0VVJMIik7Citz
aG91bGRCZUZhbHNlKCIncGFyYW1ldGVyTmFtZXMnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVG
YWxzZSgiJ2dldFBhcmFtZXRlcm5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgi
J2dldFBhcmFtZXRlckFsbG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2Fw
cGVuZFBhcmFtZXRlcicgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInY2xlYXJQYXJh
bWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidocmVmJyBpbiB3ZWJr
aXRVUkwiKTsKKworc2hvdWxkQmVUcnVlKCInY3JlYXRlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwi
KTsKK3Nob3VsZEJlVHJ1ZSgiJ3Jldm9rZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIik7CisKK3No
b3VsZEJlVHJ1ZSgidXJsIGluc3RhbmNlb2Ygd2Via2l0VVJMIikKK3Nob3VsZEJlRmFsc2UoInVy
bC5oYXNPd25Qcm9wZXJ0eSgnZ2V0UGFyYW1ldGVyJykiKQorc2hvdWxkQmVGYWxzZSgidXJsLmhh
c093blByb3BlcnR5KCdhcHBlbmRQYXJhbWV0ZXInKSIpCitzaG91bGRCZUZhbHNlKCJ1cmwuaGFz
T3duUHJvcGVydHkoJ2NsZWFyUGFyYW1ldGVyJykiKQorc2hvdWxkQmVVbmRlZmluZWQoInVybC5j
cmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2JqZWN0VVJM
Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFz
aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMSBAQAorVGVzdCBzZXR0aW5nIHRoZSBoYXNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJM
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSGFzaCB2YWx1ZSBzdGFydCB3aXRo
ICMKK1BBU1MgZG9tdXJsLmhhc2ggaXMgIiNtaWRkbGUiCisnPycgaW4gaGFzaCB2YWx1ZQorUEFT
UyBkb211cmwuaGFzaCBpcyAiI2hhc2g/dmFsdWUiCisnIycgaW4gaGFzaCB2YWx1ZSwgYW5kIGls
bGVnYWwgY2hhcmFjdGVycyBpbiBob3N0bmFtZQorUEFTUyBkb211cmwuaGFzaCBpcyAiIgorbnVs
bCBoYXNoCitQQVNTIGRvbXVybC5oYXNoIGlzICIiCitoYXNoIHRvIG1haWx0bzogcHJvdG9jb2wK
K1BBU1MgZG9tdXJsLmhhc2ggaXMgIiNoYXNoLXZhbHVlIgorQWRkIGhhc2ggdG8gbm9uLXN0YW5k
YXJkIHByb3RvY29sCitQQVNTIGRvbXVybC5oYXNoIGlzICIjaGFzaCIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFzaC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaGFzaC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhhc2ggYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisK
K2RlYnVnKCJIYXNoIHZhbHVlIHN0YXJ0IHdpdGggIyIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJr
aXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvdGVzdHVybC5odG1sI21p
ZGRsZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuaGFzaCIsICIjbWlkZGxlIik7
CisKK2RlYnVnKCInPycgaW4gaGFzaCB2YWx1ZSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRV
UkwoImh0dHA6Ly93d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sI2hhc2g/dmFsdWUi
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiI2hhc2g/dmFsdWUiKTsK
KworZGVidWcoIicjJyBpbiBoYXNoIHZhbHVlLCBhbmQgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGhv
c3RuYW1lIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlcImQo
KXt9fH5vbT9haW4jY29tL3BhdGgvdGVzdHVybC5odG1sI21pZGRsZSIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb211cmwuaGFzaCIsICIiKTsKKworZGVidWcoIm51bGwgaGFzaCIpOwordmFy
IGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rl
c3R1cmwuaHRtbCMiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiIik7
CisKK2RlYnVnKCJoYXNoIHRvIG1haWx0bzogcHJvdG9jb2wiKTsKK3ZhciBkb211cmwgPSBuZXcg
d2Via2l0VVJMKCJtYWlsdG86ZS1tYWlsX2FkZHJlc3NAZ29lc19oZXJlI2hhc2gtdmFsdWUiKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiI2hhc2gtdmFsdWUiKTsKKwor
ZGVidWcoIkFkZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2NvbCIpOwordmFyIGRvbXVybCA9
IG5ldyB3ZWJraXRVUkwoImZvbzpiYXIjaGFzaCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b211cmwuaGFzaCIsICIjaGFzaCIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitUZXN0IHNldHRpbmcgdGhlIGhvc3QgYXR0cmli
dXRlIG9mIHRoZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNp
YyB0ZXN0CitQQVNTIGRvbXVybC5ob3N0IGlzICJ3d3cubXlkb21haW4uY29tOjgwODAiCitEZWZh
dWx0CitQQVNTIGRvbXVybC5ob3N0IGlzICJ3d3cub3RoZXJkb21haW4uY29tIgorSG9zdCBVUkwg
Y29udGFpbmluZyB1c2VybmFtZQorUEFTUyBkb211cmwuaG9zdCBpcyAiZG9tYWluLmNvbToyNSIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaG9zdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJM
L2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBA
Cis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhvc3QgYXR0cmlidXRlIG9mIHRo
ZSBET01VUkwuJyk7CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdl
YmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3QiLCAid3d3Lm15ZG9tYWluLmNvbTo4MDgwIik7CisK
K2RlYnVnKCJEZWZhdWx0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93
d3cub3RoZXJkb21haW4uY29tL3BhdGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVy
bC5ob3N0IiwgInd3dy5vdGhlcmRvbWFpbi5jb20iKTsKKworZGVidWcoIkhvc3QgVVJMIGNvbnRh
aW5pbmcgdXNlcm5hbWUiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3J3
d215QGRvbWFpbi5jb206MjUvcGEuLnRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211
cmwuaG9zdCIsICJkb21haW4uY29tOjI1Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUt
aG9zdG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3Ru
YW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBzZXR0
aW5nIHRoZSBob3N0bmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgZG9tdXJsLmhvc3RuYW1lIGlzICJ3
d3cubXlkb21haW4uY29tIgorSG9zdG5hbWUgd2l0aCBmb286IHByb3RvY29sCitQQVNTIGRvbXVy
bC5ob3N0bmFtZSBpcyAid3d3Lm15ZG9tYWluLmNvbSIKK1NldCBkb211cmwgaG9zdG5hbWUgdGhh
dCBjb250YWlucyBzcGFjZSBpbiBpdAorUEFTUyBkb211cmwuaG9zdG5hbWUgaXMgIiIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LWhvc3RuYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI1IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhvc3RuYW1lIGF0dHJp
YnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOwordmFyIGRvbXVy
bCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgwL3BhdGgvIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5ob3N0bmFtZSIsICJ3d3cubXlkb21haW4u
Y29tIik7CisKK2RlYnVnKCJIb3N0bmFtZSB3aXRoIGZvbzogcHJvdG9jb2wiKTsKK3ZhciBkb211
cmwgPSBuZXcgd2Via2l0VVJMKCJmb286Ly93d3cubXlkb21haW4uY29tL3BhdGgvIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5ob3N0bmFtZSIsICJ3d3cubXlkb21haW4uY29tIik7
CisKK2RlYnVnKCJTZXQgZG9tdXJsIGhvc3RuYW1lIHRoYXQgY29udGFpbnMgc3BhY2UgaW4gaXQi
KTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwOi8vd3d3Lm15IGRvbWFpbi5jb20v
cGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3RuYW1lIiwgIiIpOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wYXRo
bmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgcGF0aG5hbWUgYXR0cmlidXRlIG9m
IHRoZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyBUZXN0
CitQQVNTIGRvbXVybC5wYXRobmFtZSBpcyAiL3BhdGgvdGVzdHVybC5odG1sIgorUGF0aG5hbWUg
d2l0aCBzeW1ib2xzCitQQVNTIGRvbXVybC5wYXRobmFtZSBpcyAiL3BhJTNGdGgiCitwYXRobmFt
ZSB0byBudWxsCitQQVNTIGRvbXVybC5wYXRobmFtZSBpcyAiLyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1wYXRobmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8IURP
Q1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0ZSBvZiB0aGUg
RE9NVVJMLicpOworCitkZWJ1ZygiQmFzaWMgVGVzdCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJr
aXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9rZXk9dmFs
dWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnBhdGhuYW1lIiwgIi9wYXRoL3Rl
c3R1cmwuaHRtbCIpOworCitkZWJ1ZygiUGF0aG5hbWUgd2l0aCBzeW1ib2xzIik7Cit2YXIgZG9t
dXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhJTNGdGg/a2V5
PXZhbHVlIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wYXRobmFtZSIsICIvcGEl
M0Z0aCIpOworCitkZWJ1ZygicGF0aG5hbWUgdG8gbnVsbCIpOwordmFyIGRvbXVybCA9IG5ldyB3
ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wYXRobmFtZSIsICIvIik7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVy
bC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1w
b3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBnZXR0
aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworRGVmYXVsdCBvciBVbnNwZWNpZmllZCBwb3J0IGlzIGVtcHR5CitQQVNT
IGRvbXVybC5wb3J0IGlzICcnCitFbXB0eSBwb3J0IHNob3VsZCBiZSBlbXB0eQorUEFTUyBkb211
cmwucG9ydCBpcyAnJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZ2V0dGluZyB0aGUgcG9ydCBh
dHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsKKwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwo
Imh0dHA6Ly93ZWJraXQub3JnIik7CitkZWJ1ZygiRGVmYXVsdCBvciBVbnNwZWNpZmllZCBwb3J0
IGlzIGVtcHR5Iik7CitzaG91bGRCZSgiZG9tdXJsLnBvcnQiLCAiJyciKTsKKwordmFyIGRvbXVy
bCA9IG5ldyB3ZWJraXRVUkwoImh0dHA6Ly93ZWJraXQub3JnOi8iKTsKK2RlYnVnKCJFbXB0eSBw
b3J0IHNob3VsZCBiZSBlbXB0eSIpOworc2hvdWxkQmUoImRvbXVybC5wb3J0IiwgIicnIik7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2Nv
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTMgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgcHJvdG9jb2wgYXR0cmlidXRlIG9mIHRo
ZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyB0ZXN0CitQ
QVNTIGRvbXVybC5wcm90b2NvbCBpcyAiaHR0cC1mb286IgorUHJvdG9jb2wgb24gbWFsZm9ybWVk
IFVSTAorUEFTUyBkb211cmwucHJvdG9jb2wgaXMgImZvbzoiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtcHJvdG9jb2wuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBwcm90b2NvbCBhdHRyaWJ1dGUgb2YgdGhlIERP
TVVSTC4nKTsKKworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJr
aXRVUkwoImh0dHAtZm9vOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb211cmwucHJvdG9jb2wiLCJodHRwLWZvbzoiKTsKKworZGVidWcoIlByb3Rv
Y29sIG9uIG1hbGZvcm1lZCBVUkwiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJmb286
Pz9iYXIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnByb3RvY29sIiwgImZvbzoi
KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNl
YXJjaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE5IEBACitUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1dGUgb2YgdGhl
IERPTVVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIFRlc3QKK1BB
U1MgZG9tdXJsLnNlYXJjaCBpcyAiP2tleT12YWx1ZSIKK1NlYXJjaCB0aGF0IHN0YXJ0cyB3aXRo
ICc/JyBhbmQgY29udGFpbnMgc3BhY2VzCitQQVNTIGRvbXVybC5zZWFyY2ggaXMgIj92YWwlMjB1
ZT0lMjBrZXk/IgorU2VhcmNoIG9uIG1hbGZvcm1lZCBVUkwKK1BBU1MgZG9tdXJsLnNlYXJjaCBp
cyAiPyUiCitTZWFyY2ggY29udGFpbmluZyAnIycKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiP2tl
eT12YWx1ZSIKK1NlYXJjaCB0byBlbXB0eQorUEFTUyBkb211cmwuc2VhcmNoIGlzICIiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUt
c2VhcmNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBA
QAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRlIG9m
IHRoZSBET01VUkwuJyk7CisKK2RlYnVnKCJCYXNpYyBUZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3
IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj9rZXk9dmFsdWUiKTsKKwor
ZGVidWcoIlNlYXJjaCB0aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29udGFpbnMgc3BhY2VzIik7
Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3Bh
dGgvP3ZhbCUyMHVlPSUyMGtleT8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnNl
YXJjaCIsICI/dmFsJTIwdWU9JTIwa2V5PyIpOworCitkZWJ1ZygiU2VhcmNoIG9uIG1hbGZvcm1l
ZCBVUkwiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJzOnd3dy5teWRvbWFpbi5jb20v
cGF0aC8/JSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj8lIik7
CisKK2RlYnVnKCJTZWFyY2ggY29udGFpbmluZyAnIyciKTsKK3ZhciBkb211cmwgPSBuZXcgd2Vi
a2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlI2hhc2giKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnNlYXJjaCIsICI/a2V5PXZhbHVlIik7CisK
K2RlYnVnKCJTZWFyY2ggdG8gZW1wdHkiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9tdXJsLnNlYXJjaCIsICIiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJp
YnV0ZS1ocmVmLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1k
b211cmwtYXR0cmlidXRlLWhyZWYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwIEBACitUZXN0IHN0cmluZ2lmaWVyIHByb3BlcnR5IG9mIGhyZWYgYXR0cmlidXRlIG9mIHRo
ZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHVybC50b1N0
cmluZygpIGlzIHVybC5ocmVmCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0cmluZ2lm
aWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1k
b211cmwtYXR0cmlidXRlLWhyZWYuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAor
PCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGVzdCBzdHJpbmdpZmllciBwcm9wZXJ0eSBvZiBocmVmIGF0dHJp
YnV0ZSBvZiB0aGUgRE9NVVJMLiIpOworCit2YXIgdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cDov
L3d3dy5leGFtcGxlLmNvbSIpOworc2hvdWxkQmUoInVybC50b1N0cmluZygpIiwgInVybC5ocmVm
Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118104</attachid>
            <date>2011-12-06 13:45:26 -0800</date>
            <delta_ts>2011-12-06 16:59:53 -0800</delta_ts>
            <desc>Fixed idl and removed static initializers</desc>
            <filename>bug-71968-20111206134525.patch</filename>
            <type>text/plain</type>
            <size>19768</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUxMzRhNzYwNjliNjFm
OWEwODk5ZTk4NmM0NmZkMWZmYzlkZmE3Ni4uMGQxYzhhN2M5N2IwZDE1NGQ4Y2EwMjU0MGY1ZjFk
MmVhM2U1YTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDExLTEyLTA2ICBLYXVz
dHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBVUkwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgRE9NVVJMIElETCBhdHRyaWJ1dGVzLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVu
Y3Rpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLWhhc2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtaG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1ob3N0bmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RP
TVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwKKwor
ICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6RE9N
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6Omhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwb3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2VhcmNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmdldFBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmFwcGVuZFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmNsZWFyUGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL0RPTVVS
TC5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpwcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFByb3Rv
Y29sKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6dXNlcm5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVVJMOjpzZXRVc2VybmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBh
c3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UGFzc3dvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpob3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OnBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6ZmlsZW5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpocmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0
SHJlZik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnRvU3RyaW5nKToKKyAgICAgICAgKiBo
dG1sL0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDExLTEy
LTA2ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBNZWRpYUxp
c3Q6IFJlbW92ZSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgQ1NTSW1wb3J0UnVsZSouCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5jcHAKaW5kZXggZTQyMDYwZDQ4NDI5OGI3ZjQ5MThiODljN2E5ZWI0OGRlNGIz
N2EwMy4uMTA5YTFmMDBiMzQ5MjBmOWMwMTQwODk5MmU5MjY2ZjczZWYyMWE0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBN
b3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI0LDQ1ICsyNSw3NSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShCTE9CKQotCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAKLSNpbmNsdWRlICJCbG9iLmgiCi0jaW5j
bHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCisjaWYgRU5BQkxFKEJMT0IpCisjaW5jbHVkZSAi
QmxvYi5oIgorI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmgiCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJNZWRpYVN0cmVh
bS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKICNlbmRpZgorI2VuZGlmCisK
KyNpZiBFTkFCTEUoQkxPQikKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCitzdGF0aWMgSGFz
aFNldDxTdHJpbmc+JiBwdWJsaWNTdHJlYW1VUkxzKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEhhc2hTZXQ8U3RyaW5nPiwgc3RhdGljUHVibGljU3RyZWFtVVJMcywgKCkpOworICAgIHJl
dHVybiBzdGF0aWNQdWJsaWNTdHJlYW1VUkxzOworfQorCisjZW5kaWYKKworc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nPiYgcHVibGljQmxvYlVSTHMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDxTdHJpbmc+LCBzdGF0aWNQdWJsaWNCbG9iVVJMcywgKCkpOworICAgIHJldHVybiBz
dGF0aWNQdWJsaWNCbG9iVVJMczsKK30KKworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRE9NVVJMOjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCitET01VUkw6OkRPTVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBiYXNlVVJMKQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoMCkKIHsKKyAgICBt
X2hyZWYgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICAvLyBSZXNvbHZlIHRoZSBVUkwgcmVsYXRp
dmUgdG8gYmFzZVVSTCBpZiBpcyBwcm92aWRlLgorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkp
CisgICAgICAgIG1faHJlZiA9IEtVUkwobV9ocmVmLCBiYXNlVVJMKTsKIH0KIAogRE9NVVJMOjp+
RE9NVVJMKCkKIHsKIH0KIAorI2lmIEVOQUJMRShCTE9CKQorRE9NVVJMOjpET01VUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICA6IENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7Cit9CisKIHZvaWQg
RE9NVVJMOjpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwogCi0gICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRv
ciBwdWJsaWNCbG9iVVJMc0VuZCA9IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7Ci0gICAgZm9yIChI
YXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JVUkxzLmJlZ2luKCk7
IGl0ZXIgIT0gcHVibGljQmxvYlVSTHNFbmQ7ICsraXRlcikKKyAgICBIYXNoU2V0PFN0cmluZz46
Oml0ZXJhdG9yIHB1YmxpY0Jsb2JVUkxzRW5kID0gcHVibGljQmxvYlVSTHMoKS5lbmQoKTsKKyAg
ICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IHB1YmxpY0Jsb2JVUkxzKCku
YmVnaW4oKTsgaXRlciAhPSBwdWJsaWNCbG9iVVJMc0VuZDsgKytpdGVyKQogICAgICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgKml0ZXIpKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJp
bmc+OjppdGVyYXRvciBwdWJsaWNTdHJlYW1VUkxzRW5kID0gbV9wdWJsaWNTdHJlYW1VUkxzLmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNT
dHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0VuZDsgKytpdGVyKQor
ICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3RyZWFtVVJMc0VuZCA9IHB1Ymxp
Y1N0cmVhbVVSTHMoKS5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3Ig
aXRlciA9IHB1YmxpY1N0cmVhbVVSTHMoKS5iZWdpbigpOyBpdGVyICE9IHB1YmxpY1N0cmVhbVVS
THNFbmQ7ICsraXRlcikKICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51
bnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CiAj
ZW5kaWYKIH0KQEAgLTcwLDEwICsxMDEsMTAgQEAgdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95
ZWQoKQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB8fCAhc3RyZWFtKQorICAgIGlmICghc3RyZWFtKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtVUkwgcHVi
bGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKS5nZXQoKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIApAQCAtODEsNyArMTEyLDcgQEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKE1lZGlhU3RyZWFtKiBzdHJlYW0pCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkucmVnaXN0ZXJNZWRpYVN0
cmVhbVVSTChwdWJsaWNVUkwsIHN0cmVhbSk7Ci0gICAgbV9wdWJsaWNTdHJlYW1VUkxzLmFkZChw
dWJsaWNVUkwuc3RyaW5nKCkpOworICAgIHB1YmxpY1N0cmVhbVVSTHMoKS5hZGQocHVibGljVVJM
LnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7CiB9CkBAIC04OSw0
MiArMTIwLDE4NSBAQCBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0q
IHN0cmVhbSkKIAogU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKEJsb2IqIGJsb2IpCiB7
Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCisgICAgaWYgKCFi
bG9iKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJs
b2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJM
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKS5nZXQoKSk7CiAgICAgaWYgKHB1YmxpY1VS
TC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChwdWJsaWNVUkwsIGJsb2ItPnVybCgpKTsKLSAg
ICBtX3B1YmxpY0Jsb2JVUkxzLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOworICAgIHB1YmxpY0Js
b2JVUkxzKCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJM
LnN0cmluZygpOwogfQogCiB2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAg
ICAgICByZXR1cm47Ci0KICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0cmluZyk7CiAKLSAgICBp
ZiAobV9wdWJsaWNCbG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CisgICAgaWYgKHB1
YmxpY0Jsb2JVUkxzKCkuY29udGFpbnModXJsLnN0cmluZygpKSkgewogICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwotICAgICAgICBtX3B1Ymxp
Y0Jsb2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOworICAgICAgICBwdWJsaWNCbG9iVVJMcygp
LnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgaWYgKG1fcHVibGljU3RyZWFtVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7Cisg
ICAgaWYgKHB1YmxpY1N0cmVhbVVSTHMoKS5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgb2YgdGhpcyBhc3NlcnRpb24gYmVsb3cuIFJhaXNlIGEg
c3BlYyBxdWVzdGlvbiBpZiByZXF1aXJlZC4KICAgICAgICAgLy8gU2luY2UgV2ViV29ya2VycyBj
YW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3ZSBzaG91bGQgYmUgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBNZWRpYVN0cmVh
bVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTCh1cmwpOwotICAg
ICAgICBtX3B1YmxpY1N0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAgICAgIHB1
YmxpY1N0cmVhbVVSTHMoKS5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0K
KyNlbmRpZgorCitTdHJpbmcgRE9NVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICBpZiAobV9ocmVm
Lmhvc3RFbmQoKSA9PSBtX2hyZWYucGF0aFN0YXJ0KCkpCisgICAgICAgIHJldHVybiBtX2hyZWYu
aG9zdCgpOworICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9ocmVmLnBvcnQoKSwg
bV9ocmVmLnByb3RvY29sKCkpKQorICAgICAgICByZXR1cm4gbV9ocmVmLmhvc3QoKTsKKyAgICBy
ZXR1cm4gbV9ocmVmLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKG1faHJlZi5wb3J0KCkp
OworfQorCit2b2lkIERPTVVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAg
IGlmICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9ocmVm
LmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGNvbG9u
ID0gdmFsdWUuZmluZCgnOicpOworICAgIGlmICghY29sb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChjb2xvbiA9PSBub3RGb3VuZCkKKyAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0
KHZhbHVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5zaWduZWQgcG9ydFN0YXJ0ID0gY29sb24g
KyAxOworICAgICAgICB1bnNpZ25lZCBwb3J0RW5kID0gcG9ydFN0YXJ0OworCisgICAgICAgIHdo
aWxlIChpc0FTQ0lJRGlnaXQodmFsdWVbcG9ydEVuZF0pKQorICAgICAgICAgICAgKytwb3J0RW5k
OworCisgICAgICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBw
b3J0RW5kIC0gcG9ydFN0YXJ0KS50b1VJbnQoKTsKKyAgICAgICAgaWYgKCFwb3J0KQorICAgICAg
ICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBjb2xvbiArIDEp
ICsgIjAiKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHBvcnQsIG1faHJlZi5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICBtX2hy
ZWYuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIGNvbG9uKSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0
cmluZygwLCBwb3J0RW5kKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgRE9NVVJMOjpz
ZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGkgPSAwOwor
ICAgIHVuc2lnbmVkIGhvc3RMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFs
dWVbaV0gPT0gJy8nKQorICAgICAgICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRIb3N0T3JQb3J0KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faHJlZi5zZXRIb3N0KHZhbHVlLnN1YnN0cmluZyhpKSk7
Cit9CisKK1N0cmluZyBET01VUkw6OnBvcnQoKSBjb25zdAoreworICAgIGlmIChocmVmKCkuaGFz
UG9ydCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigpLnBvcnQoKSk7CisK
KyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBET01VUkw6OnNldFBvcnQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRIb3N0T3JQb3J0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsK
KyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIG1faHJlZi5wcm90b2NvbCgp
KSkKKyAgICAgICAgbV9ocmVmLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIG1faHJl
Zi5zZXRQb3J0KHZhbHVlLnRvVUludCgpKTsKK30KKwordm9pZCBET01VUkw6OnNldFBhdGhuYW1l
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKCFtX2hyZWYuY2FuU2V0UGF0aG5hbWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIG5ld1BhdGhuYW1lID0gKHZhbHVlWzBd
ID09ICcvJykgPyB2YWx1ZSA6ICgiLyIgKyB2YWx1ZSk7CisgICAgbV9ocmVmLnNldFBhdGgobmV3
UGF0aG5hbWUpOworfQorCitTdHJpbmcgRE9NVVJMOjpzZWFyY2goKSBjb25zdAoreworICAgIFN0
cmluZyBxdWVyeSA9IGhyZWYoKS5xdWVyeSgpOworICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkg
PyBlbXB0eVN0cmluZygpIDogIj8iICsgcXVlcnk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRTZWFy
Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVl
WzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICBtX2hyZWYuc2V0
UXVlcnkobmV3U2VhcmNoKTsKK30KKworU3RyaW5nIERPTVVSTDo6aGFzaCgpIGNvbnN0Cit7Cisg
ICAgU3RyaW5nIGZyYWdtZW50ID0gaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJl
dHVybiBmcmFnbWVudC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgZnJhZ21lbnQ7
Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAg
U3RyaW5nIG5ld0hhc2ggPSAodmFsdWVbMF0gPT0gJyMnKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6
IHZhbHVlOworICAgIG1faHJlZi5zZXRGcmFnbWVudElkZW50aWZpZXIobmV3SGFzaCk7Cit9CisK
K3ZvaWQgRE9NVVJMOjpzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIERPTVVS
TDo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICByZXR1cm4gb3JpZ2luLT50b1N0
cmluZygpOworfQorCitTdHJpbmcgRE9NVVJMOjpnZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJikK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIERPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERP
TVVSTDo6YXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQordm9p
ZCBET01VUkw6OmNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCmluZGV4
IGQwMmZlODg3Y2M4Y2U5NTNjNDg5MDE1MzM3NzhhYzA4ZTRlNzEyOTAuLjFmMzM4ODBkYTA0YzE3
MzRhNTQ2ZDA4ODI5YWNhYTEwMjllNWJiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI3LDkgQEAKICNpZm5kZWYg
RE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2lmIEVOQUJMRShCTE9CKQotCiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQyLDI4ICs0Myw3MiBA
QCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBET01VUkwgOiBwdWJsaWMg
UmVmQ291bnRlZDxET01VUkw+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBET01VUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RE9NVVJMPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTCh1cmwsIGJhc2VVUkwpKTsgfQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgRE9NVVJMKHVybCwgZW1wdHlTdHJpbmcoKSkpOyB9CiAgICAgfkRPTVVS
TCgpOwogCisgICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLnByb3Rv
Y29sKCkgKyAiOiI7IH0KKyAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUp
IHsgbV9ocmVmLnNldFByb3RvY29sKHZhbHVlKTsgfQorCisgICAgU3RyaW5nIHVzZXJuYW1lKCkg
Y29uc3QgeyByZXR1cm4gaHJlZigpLnVzZXIoKTsgfQorICAgIHZvaWQgc2V0VXNlcm5hbWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkgeyBtX2hyZWYuc2V0VXNlcih2YWx1ZSk7IH0KKworICAgIFN0cmlu
ZyBwYXNzd29yZCgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5wYXNzKCk7IH0KKyAgICB2b2lkIHNl
dFBhc3N3b3JkKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgIG1faHJlZi5zZXRQYXNzKHZhbHVlKTsg
fQorCisgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3Ry
aW5nJik7CisKKyAgICBTdHJpbmcgaG9zdG5hbWUoKSBjb25zdCB7IHJldHVybiBocmVmKCkuaG9z
dCgpOyB9CisgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmlu
ZyBwb3J0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3J0KGNvbnN0IFN0cmluZyYpOworCisgICAg
U3RyaW5nIHBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLnBhdGgoKTsgfQorICAgIHZv
aWQgc2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgc2VhcmNoKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRTZWFyY2goY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaGFz
aCgpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmlu
ZyBmaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5sYXN0UGF0aENvbXBvbmVudCgpOyB9
CisgICAgdm9pZCBzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBvcmln
aW4oKSBjb25zdDsKKworICAgIEtVUkwgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1faHJlZjsgfQor
ICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZiA9IEtVUkwoS1VS
TCgpLCB2YWx1ZSk7IH0KKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
aHJlZi5zdHJpbmcoKTsgfQorCisgICAgU3RyaW5nIGdldFBhcmFtZXRlcihjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+KTsKKyAgICB2b2lkIGNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmlu
ZyYpOworCisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KKyAg
ICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChCbG9iKik7CisgICAgc3RhdGljIHZvaWQg
cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmVhbSopOworICAgIHN0YXRpYyBT
dHJpbmcgY3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZWFtKik7CisjZW5kaWYKICNlbmRpZgotICAg
IFN0cmluZyBjcmVhdGVPYmplY3RVUkwoQmxvYiopOwotICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJM
KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERPTVVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisgICAgS1VSTCBtX2hyZWY7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpOworICAgIERPTVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOwotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGljU3RyZWFtVVJMczsK
KyNpZiBFTkFCTEUoQkxPQikKKyAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9CKQotCiAj
ZW5kaWYgLy8gRE9NVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJM
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAppbmRleCBkNmQ1NTc5MGY3YTBj
YzdiZmQ3NDMwMDU0YWYyODMxMWJiMWIzNmRiLi42NTg3ZjkwZjU0ZTA0MzM2Y2NiZDM2OGJkMjc1
N2NkOTllYjg2ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTYgKzI2LDM1IEBACiAKIG1vZHVsZSBodG1sIHsK
ICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1CTE9CLAotICAgICAgICBPbWl0
Q29uc3RydWN0b3IsCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAogICAgICAgICBH
ZW5lcmF0ZVRvSlMsCi0gICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgICAgIFJlcGxhY2VhYmxl
LAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBpbiBbT3B0aW9uYWw9Q2Fs
bFdpdGhOdWxsVmFsdWVdIERPTVN0cmluZyBiYXNlVVJMKQogICAgIF0gRE9NVVJMIHsKKyAgICAg
ICAgYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2NvbDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZyB1c2VybmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwYXNzd29yZDsKKyAg
ICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBob3N0OworICAgICAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGhvc3RuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBvcnQ7CisgICAgICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgc2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhhc2g7CisKKyAgICAgICAg
YXR0cmlidXRlIERPTVN0cmluZyBmaWxlbmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZyBvcmlnaW47CisgICAgICAgIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBET01TdHJp
bmcgaHJlZjsKKworICAgICAgICBbRG9udEVudW1dIERPTVN0cmluZyB0b1N0cmluZygpOworICAg
ICAgICBET01TdHJpbmcgZ2V0UGFyYW1ldGVyKGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAg
dm9pZCBhcHBlbmRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyB2YWx1
ZXMpOworICAgICAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSwgaW4g
RE9NU3RyaW5nW10gdmFsdWVzKTsKKyAgICAgICAgdm9pZCBjbGVhclBhcmFtZXRlcihpbiBET01T
dHJpbmcgbmFtZSk7CisKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYmIEVOQUJM
RV9NRURJQV9TVFJFQU0KLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBE
T01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CisgICAgICAg
IHN0YXRpYyBbQ29uZGl0aW9uYWw9QkxPQixDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0g
RE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOwogI2VuZGlm
Ci0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0
ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAgICB2b2lkIHJldm9rZU9iamVjdFVSTChp
biBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgc3RhdGljIFtDb25kaXRpb25hbD1CTE9CLENvbnZl
cnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIEJs
b2IgYmxvYik7CisgICAgICAgIHN0YXRpYyBbQ29uZGl0aW9uYWw9QkxPQl0gdm9pZCByZXZva2VP
YmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAppbmRleCAyMDliZjQzNzM4YjhlZjI3ZDY0ZWM5YzM3NjQ1NGY1ZThhNzMzMTM5Li45
YzZmODdjODc4MDc4ZTc5YThlNTUzNDQ4ZWNiZTI1YTk5OGE4MDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCkBAIC04MTMsNyArODEzLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAg
ICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJLaXRCbG9iQnVpbGRlckNvbnN0cnVj
dG9yIFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29u
ZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRlIERPTVVS
TENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1FVT1RBKSAmJiBF
TkFCTEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1l
PVF1b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNWMyMWQ4OWM0
N2I5NjJkZGJlNTNmYzhjODMxZTc2MDU2YWYyZGYzLi4wMmQyODFhOWNlNDVlZTkzZmY5YThlOWRm
Mzc3ZTQ5Y2ZmOWZlYTc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMTItMDYgIEthdXN0
dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFVSTCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgSURMIEF0dHJpYnV0ZXMuIEFkZGVkIHRlc3Qg
Y2FzZXMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1k
b211cmwtZnVuY3Rpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9k
b211cmwtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3Ru
YW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVy
bC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9N
VVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtcG9ydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJs
LWF0dHJpYnV0ZS1ocmVmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
RE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi5odG1sOiBBZGRlZC4KKwog
MjAxMS0xMi0wNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkIGNocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118145</attachid>
            <date>2011-12-06 17:00:02 -0800</date>
            <delta_ts>2011-12-07 16:59:06 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-71968-20111206170001.patch</filename>
            <type>text/plain</type>
            <size>24251</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUxMzRhNzYwNjliNjFm
OWEwODk5ZTk4NmM0NmZkMWZmYzlkZmE3Ni4uMGQxYzhhN2M5N2IwZDE1NGQ4Y2EwMjU0MGY1ZjFk
MmVhM2U1YTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDExLTEyLTA2ICBLYXVz
dHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBVUkwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgRE9NVVJMIElETCBhdHRyaWJ1dGVzLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVu
Y3Rpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLWhhc2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtaG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1ob3N0bmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RP
TVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwKKwor
ICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6RE9N
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6Omhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwb3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2VhcmNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmdldFBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmFwcGVuZFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmNsZWFyUGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL0RPTVVS
TC5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpwcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFByb3Rv
Y29sKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6dXNlcm5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVVJMOjpzZXRVc2VybmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBh
c3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UGFzc3dvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpob3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OnBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6ZmlsZW5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpocmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0
SHJlZik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnRvU3RyaW5nKToKKyAgICAgICAgKiBo
dG1sL0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDExLTEy
LTA2ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBNZWRpYUxp
c3Q6IFJlbW92ZSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgQ1NTSW1wb3J0UnVsZSouCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5jcHAKaW5kZXggZTQyMDYwZDQ4NDI5OGI3ZjQ5MThiODljN2E5ZWI0OGRlNGIz
N2EwMy4uYzMwYzdhNzhkNWYzNGM4NmI2YmU0NjM2Yjc0YjAyZDY3MzU0YmUyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBN
b3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI0LDU2ICsyNSw4OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShCTE9CKQotCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCisjaWYg
RU5BQkxFKEJMT0IpCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJNZWRpYVN0cmVhbS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKICNlbmRpZgorI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NVVJMOjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisjaWYgRU5BQkxFKEJMT0IpCisKKworc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiYgcHVibGljQmxvYlVSTHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiA+IE1hcDsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKE1hcCwgc3RhdGljUHVibGljQmxvYlVSTHMsICgpKTsKKyAgICBzdGQ6OnBhaXI8TWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gc3RhdGljUHVibGljQmxvYlVSTHMuYWRkKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPigpKTsKKyAgICByZXR1cm4gcmVzdWx0
LmZpcnN0LT5zZWNvbmQ7CiB9CiAKLURPTVVSTDo6fkRPTVVSTCgpCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgcHVibGljU3RyZWFtVVJMcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogeworICAgIHR5cGVk
ZWYgSGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSGFzaFNldDxTdHJpbmc+ID4gTWFw
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTWFwLCBzdGF0aWNQdWJsaWNTdHJlYW1VUkxzLCAo
KSk7CisgICAgc3RkOjpwYWlyPE1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IHN0YXRpY1B1
YmxpY1N0cmVhbVVSTHMuYWRkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEhhc2hTZXQ8U3RyaW5n
PigpKTsKKyAgICByZXR1cm4gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CiB9CiAKLXZvaWQgRE9NVVJM
Ojpjb250ZXh0RGVzdHJveWVkKCkKLXsKLSAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
Y29udGV4dERlc3Ryb3llZCgpOworI2VuZGlmCisjZW5kaWYKIAotICAgIEhhc2hTZXQ8U3RyaW5n
Pjo6aXRlcmF0b3IgcHVibGljQmxvYlVSTHNFbmQgPSBtX3B1YmxpY0Jsb2JVUkxzLmVuZCgpOwot
ICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNCbG9iVVJM
cy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY0Jsb2JVUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCAqaXRlcikpOworRE9NVVJMOjpET01VUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCkKK3sKKyAgICBtX2hyZWYgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICAv
LyBSZXNvbHZlIHRoZSBVUkwgcmVsYXRpdmUgdG8gYmFzZVVSTCBpZiBpcyBwcm92aWRlLgorICAg
IGlmICghYmFzZVVSTC5pc0VtcHR5KCkpCisgICAgICAgIG1faHJlZiA9IEtVUkwobV9ocmVmLCBi
YXNlVVJMKTsKK30KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJp
bmc+OjppdGVyYXRvciBwdWJsaWNTdHJlYW1VUkxzRW5kID0gbV9wdWJsaWNTdHJlYW1VUkxzLmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNT
dHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0VuZDsgKytpdGVyKQot
ICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJNZWRpYVN0
cmVhbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKLSNlbmRpZgorRE9NVVJMOjp+
RE9NVVJMKCkKK3sKIH0KIAorI2lmIEVOQUJMRShCTE9CKQorCisKKy8vIHZvaWQgRE9NVVJMOjpj
b250ZXh0RGVzdHJveWVkKCkKKy8vIHsKKy8vICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6Y29udGV4dERlc3Ryb3llZCgpOworCisvLyAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRv
ciBwdWJsaWNCbG9iVVJMc0VuZCA9IHB1YmxpY0Jsb2JVUkxzKCkuZW5kKCk7CisvLyAgICAgZm9y
IChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBwdWJsaWNCbG9iVVJMcygpLmJlZ2lu
KCk7IGl0ZXIgIT0gcHVibGljQmxvYlVSTHNFbmQ7ICsraXRlcikKKy8vICAgICAgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcs
ICppdGVyKSk7CisKKy8vICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorLy8gICAgIEhhc2hTZXQ8
U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3RyZWFtVVJMc0VuZCA9IHB1YmxpY1N0cmVhbVVSTHMo
KS5lbmQoKTsKKy8vICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IHB1
YmxpY1N0cmVhbVVSTHMoKS5iZWdpbigpOyBpdGVyICE9IHB1YmxpY1N0cmVhbVVSTHNFbmQ7ICsr
aXRlcikKKy8vICAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lz
dGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisvLyAjZW5k
aWYKKy8vIH0KKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1TdHJpbmcgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVhbSkKKworU3RyaW5nIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IE1lZGlhU3RyZWFtKiBzdHJlYW0pCiB7Ci0gICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgfHwgIXN0cmVhbSkKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgIXN0cmVh
bSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9i
VVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVibGlj
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC04MSw1MCArMTE1
LDE5OSBAQCBTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVkaWFTdHJlYW0qIHN0cmVh
bSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgTWVkaWFTdHJlYW1SZWdpc3Ry
eTo6cmVnaXN0cnkoKS5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHB1YmxpY1VSTCwgc3RyZWFtKTsK
LSAgICBtX3B1YmxpY1N0cmVhbVVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAgcHVi
bGljU3RyZWFtVVJMcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5hZGQocHVibGljVVJMLnN0cmlu
ZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3RyaW5nKCk7CiB9CisKICNlbmRpZgogCi1T
dHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoQmxvYiogYmxvYikKK1N0cmluZyBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBCbG9iKiBibG9iKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
IHx8ICFibG9iKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigp
KTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVibGljVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHB1YmxpY1VSTCwgYmxvYi0+dXJsKCkpOwotICAgIG1f
cHVibGljQmxvYlVSTHMuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAgcHVibGljQmxvYlVS
THMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAg
ICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwogfQogCi12b2lkIERPTVVSTDo6cmV2b2tlT2Jq
ZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBET01VUkw6OnJldm9rZU9iamVj
dFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3RyaW5nKTsKIAotICAgIGlmIChtX3B1YmxpY0Jsb2JV
UkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JV
UkxzID0gcHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKGJs
b2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgbV9wdWJsaWNCbG9iVVJM
cy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgYmxvYlVSTHMucmVtb3ZlKHVybC5zdHJp
bmcoKSk7CiAgICAgfQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBpZiAobV9wdWJs
aWNTdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmlu
Zz4mIHN0cmVhbVVSTHMgPSBwdWJsaWNTdHJlYW1VUkxzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OworICAgIGlmIChzdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAg
Ly8gRklYTUU6IG1ha2Ugc3VyZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVj
IHF1ZXN0aW9uIGlmIHJlcXVpcmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5v
dCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQu
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVn
aXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVybCk7Ci0gICAgICAg
IG1fcHVibGljU3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgc3RyZWFt
VVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0KKyNlbmRpZiAvLyBF
TkFCTEUoQkxPQikKKworU3RyaW5nIERPTVVSTDo6aG9zdCgpIGNvbnN0Cit7CisgICAgaWYgKG1f
aHJlZi5ob3N0RW5kKCkgPT0gbV9ocmVmLnBhdGhTdGFydCgpKQorICAgICAgICByZXR1cm4gbV9o
cmVmLmhvc3QoKTsKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1faHJlZi5wb3J0
KCksIG1faHJlZi5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0dXJuIG1faHJlZi5ob3N0KCk7Cisg
ICAgcmV0dXJuIG1faHJlZi5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihtX2hyZWYucG9y
dCgpKTsKK30KKwordm9pZCBET01VUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1f
aHJlZi5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBj
b2xvbiA9IHZhbHVlLmZpbmQoJzonKTsKKyAgICBpZiAoIWNvbG9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoY29sb24gPT0gbm90Rm91bmQpCisgICAgICAgIG1faHJlZi5zZXRIb3N0QW5k
UG9ydCh2YWx1ZSk7CisgICAgZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IGNv
bG9uICsgMTsKKyAgICAgICAgdW5zaWduZWQgcG9ydEVuZCA9IHBvcnRTdGFydDsKKworICAgICAg
ICB3aGlsZSAoaXNBU0NJSURpZ2l0KHZhbHVlW3BvcnRFbmRdKSkKKyAgICAgICAgICAgICsrcG9y
dEVuZDsKKworICAgICAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUuc3Vic3RyaW5nKHBvcnRTdGFy
dCwgcG9ydEVuZCAtIHBvcnRTdGFydCkudG9VSW50KCk7CisgICAgICAgIGlmICghcG9ydCkKKyAg
ICAgICAgICAgIG1faHJlZi5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgY29sb24g
KyAxKSArICIwIik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChwb3J0LCBtX2hyZWYucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAg
bV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBjb2xvbikpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faHJlZi5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5z
dWJzdHJpbmcoMCwgcG9ydEVuZCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIERPTVVS
TDo6c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBpID0g
MDsKKyAgICB1bnNpZ25lZCBob3N0TGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CisgICAgd2hpbGUg
KHZhbHVlW2ldID09ICcvJykKKyAgICAgICAgaSsrOworCisgICAgaWYgKGkgPT0gaG9zdExlbmd0
aCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2hyZWYuY2FuU2V0SG9zdE9yUG9ydCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hyZWYuc2V0SG9zdCh2YWx1ZS5zdWJzdHJpbmco
aSkpOworfQorCitTdHJpbmcgRE9NVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoaHJlZigp
Lmhhc1BvcnQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGhyZWYoKS5wb3J0KCkp
OworCisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQb3J0
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKCFtX2hyZWYuY2FuU2V0SG9zdE9yUG9y
dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50
KCk7CisgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCBtX2hyZWYucHJvdG9j
b2woKSkpCisgICAgICAgIG1faHJlZi5yZW1vdmVQb3J0KCk7CisgICAgZWxzZQorICAgICAgICBt
X2hyZWYuc2V0UG9ydCh2YWx1ZS50b1VJbnQoKSk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQYXRo
bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICghbV9ocmVmLmNhblNldFBhdGhu
YW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBuZXdQYXRobmFtZSA9ICh2YWx1
ZVswXSA9PSAnLycpID8gdmFsdWUgOiAoIi8iICsgdmFsdWUpOworICAgIG1faHJlZi5zZXRQYXRo
KG5ld1BhdGhuYW1lKTsKK30KKworU3RyaW5nIERPTVVSTDo6c2VhcmNoKCkgY29uc3QKK3sKKyAg
ICBTdHJpbmcgcXVlcnkgPSBocmVmKCkucXVlcnkoKTsKKyAgICByZXR1cm4gcXVlcnkuaXNFbXB0
eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHF1ZXJ5OworfQorCit2b2lkIERPTVVSTDo6c2V0
U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgU3RyaW5nIG5ld1NlYXJjaCA9ICh2
YWx1ZVswXSA9PSAnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAgbV9ocmVm
LnNldFF1ZXJ5KG5ld1NlYXJjaCk7Cit9CisKK1N0cmluZyBET01VUkw6Omhhc2goKSBjb25zdAor
eworICAgIFN0cmluZyBmcmFnbWVudCA9IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICByZXR1cm4gZnJhZ21lbnQuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIjIiArIGZyYWdt
ZW50OworfQorCit2b2lkIERPTVVSTDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIFN0cmluZyBuZXdIYXNoID0gKHZhbHVlWzBdID09ICcjJykgPyB2YWx1ZS5zdWJzdHJpbmco
MSkgOiB2YWx1ZTsKKyAgICBtX2hyZWYuc2V0RnJhZ21lbnRJZGVudGlmaWVyKG5ld0hhc2gpOwor
fQorCit2b2lkIERPTVVSTDo6c2V0RmlsZW5hbWUoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBE
T01VUkw6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGhyZWYoKSk7CisgICAgcmV0dXJuIG9yaWdpbi0+
dG9TdHJpbmcoKTsKK30KKworU3RyaW5nIERPTVVSTDo6Z2V0UGFyYW1ldGVyKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBET01VUkw6OmFwcGVuZFBhcmFtZXRl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KQoreworICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBET01VUkw6OmFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
K3ZvaWQgRE9NVVJMOjpjbGVhclBhcmFtZXRlcihjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEJMT0IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaApp
bmRleCBkMDJmZTg4N2NjOGNlOTUzYzQ4OTAxNTMzNzc4YWMwOGU0ZTcxMjkwLi5mOWUxYTUwZDI4
NWZkNDY5ZGViYjVhOWQwYzk5ODliMmM2YzdkNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjcsOSBAQAogI2lm
bmRlZiBET01VUkxfaAogI2RlZmluZSBET01VUkxfaAogCi0jaWYgRU5BQkxFKEJMT0IpCi0KLSNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQwLDMwICszOSw2OCBAQCBjbGFzcyBCbG9iOwogY2xhc3Mg
TWVkaWFTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBET01V
UkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIgeworY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVVJMPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01VUkw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBiYXNlVVJM
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHVybCwgYmFzZVVSTCkpOyB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBET01VUkwodXJsLCBlbXB0eVN0cmluZygpKSk7IH0KICAgICB+RE9NVVJM
KCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBjcmVhdGVPYmplY3RV
UkwoTWVkaWFTdHJlYW0qKTsKLSNlbmRpZgotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoQmxv
YiopOwotICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmlu
ZyBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5wcm90b2NvbCgpICsgIjoiOyB9Cisg
ICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZi5zZXRQcm90
b2NvbCh2YWx1ZSk7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworICAgIFN0cmluZyB1c2VybmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhy
ZWYoKS51c2VyKCk7IH0KKyAgICB2b2lkIHNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUp
IHsgbV9ocmVmLnNldFVzZXIodmFsdWUpOyB9CisKKyAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25z
dCB7IHJldHVybiBocmVmKCkucGFzcygpOyB9CisgICAgdm9pZCBzZXRQYXNzd29yZChjb25zdCBT
dHJpbmcmIHZhbHVlKSB7ICBtX2hyZWYuc2V0UGFzcyh2YWx1ZSk7IH0KKworICAgIFN0cmluZyBo
b3N0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisgICAgU3Ry
aW5nIGhvc3RuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLmhvc3QoKTsgfQorICAgIHZvaWQg
c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcG9ydCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBwYXRobmFtZSgp
IGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5wYXRoKCk7IH0KKyAgICB2b2lkIHNldFBhdGhuYW1lKGNv
bnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0OworICAgIHZvaWQgc2V0
U2VhcmNoKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKTsKKyAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzaChjb25zdCBT
dHJpbmcmKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIFN0
cmluZyBmaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5sYXN0UGF0aENvbXBvbmVudCgp
OyB9CisgICAgdm9pZCBzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBv
cmlnaW4oKSBjb25zdDsKKworICAgIEtVUkwgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1faHJlZjsg
fQorICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZiA9IEtVUkwo
S1VSTCgpLCB2YWx1ZSk7IH0KKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1faHJlZi5zdHJpbmcoKTsgfQorCisgICAgU3RyaW5nIGdldFBhcmFtZXRlcihjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+KTsKKyAgICB2b2lkIGNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0
cmluZyYpOworCisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmpl
Y3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsb2IqKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpOwog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGljU3Ry
ZWFtVVJMczsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgTWVkaWFTdHJlYW0qKTsKICNlbmRpZgorI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgS1VSTCBtX2hyZWY7CisKKyAgICBET01VUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoQkxP
QikKLQogI2VuZGlmIC8vIERPTVVSTF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5pZGwKaW5kZXggZDZkNTU3
OTBmN2EwY2M3YmZkNzQzMDA1NGFmMjgzMTFiYjFiMzZkYi4uNWNlY2JjNTlhNTliNDBiMzhlZTQz
YjcyMGI2MzE2NjRkODNmYzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDE2ICsyNiwzNSBAQAogCiBtb2R1bGUg
aHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAg
ICAgT21pdENvbnN0cnVjdG9yLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAg
ICAgICAgR2VuZXJhdGVUb0pTLAotICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgICAgICBSZXBs
YWNlYWJsZSwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHVybCwgaW4gW09wdGlv
bmFsPUNhbGxXaXRoTnVsbFZhbHVlXSBET01TdHJpbmcgYmFzZVVSTCkKICAgICBdIERPTVVSTCB7
CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcHJvdG9jb2w7CisgICAgICAgIGF0dHJpYnV0
ZSBET01TdHJpbmcgdXNlcm5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcGFzc3dv
cmQ7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgaG9zdDsKKyAgICAgICAgYXR0cmlidXRl
IERPTVN0cmluZyBob3N0bmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwb3J0Owor
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBhdGhuYW1lOworICAgICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHNlYXJjaDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBoYXNoOworCisg
ICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZmlsZW5hbWU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgb3JpZ2luOworICAgICAgICBzdHJpbmdpZmllciBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGhyZWY7CisKKyAgICAgICAgW0RvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmco
KTsKKyAgICAgICAgRE9NU3RyaW5nIGdldFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSk7Cisg
ICAgICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJp
bmcgdmFsdWVzKTsKKyAgICAgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5h
bWUsIGluIERPTVN0cmluZ1tdIHZhbHVlcyk7CisgICAgICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXIo
aW4gRE9NU3RyaW5nIG5hbWUpOworCiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAm
JiBFTkFCTEVfTUVESUFfU1RSRUFNCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVm
aW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOwor
ICAgICAgICBzdGF0aWMgW0NvbmRpdGlvbmFsPUJMT0IsQ29udmVydE51bGxTdHJpbmdUbz1VbmRl
ZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIGNyZWF0ZU9i
amVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9i
IGJsb2IpOwotICAgICAgICB2b2lkIHJldm9rZU9iamVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsK
KyAgICAgICAgc3RhdGljIFtDb25kaXRpb25hbD1CTE9CLENvbnZlcnROdWxsU3RyaW5nVG89VW5k
ZWZpbmVkLENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIERPTVN0cmluZyBjcmVhdGVP
YmplY3RVUkwoaW4gQmxvYiBibG9iKTsKKyAgICAgICAgc3RhdGljIFtDb25kaXRpb25hbD1CTE9C
LENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGlu
IERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5k
ZXggNTcxMmQ2NmYzNGY4ZmU4Yjc4NjdmNDE1M2Y4YjAyZmU5ZmMyOWE2Yy4uM2QzNjYzNTI1ZDdk
OTRiZmJjYWE2OGVkNTAzYmZlYmFkNGM2Mzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cApAQCAtMTkzNSwxNSArMTkzNSw2IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2co
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhCiAgICAgZGlh
bG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPnJ1bk1vZGFsKCk7CiB9CiAKLSNpZiBFTkFCTEUo
QkxPQikKLURPTVVSTCogRE9NV2luZG93Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICgh
bV9kb21VUkwgJiYgaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIG1fZG9t
VVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShRVU9UQSkK
IFN0b3JhZ2VJbmZvKiBET01XaW5kb3c6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGI1MDNmNmVjYjU4YzNiOTk0MWZiZmUwYTgyZTIzMWM1
ZmNhM2ZmZDYuLjQzYzk0YTU3ZWQ3MDU5MDk4MDQxNDRjMzFmZTY3YTEwNmNiZGVlNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMzQ3LDEwICszNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6cmVmOwogICAgICAgICB1
c2luZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OmRlcmVmOwogCi0jaWYgRU5BQkxFKEJMT0IpCi0g
ICAgICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplLCBQYXNzUmVmUHRyPERhdGFi
YXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDIwOWJmNDM3MzhiOGVmMjdkNjRlYzljMzc2
NDU0ZjVlOGE3MzMxMzkuLjljNmY4N2M4NzgwNzhlNzlhOGU1NTM0NDhlY2JlMjVhOTk4YTgwOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTgxMyw3ICs4MTMsNyBAQCBtb2R1bGUg
d2luZG93IHsKIAogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIFdlYktpdEJs
b2JCdWlsZGVyQ29uc3RydWN0b3IgV2ViS2l0QmxvYkJ1aWxkZXI7CiAKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAg
ICBhdHRyaWJ1dGUgRE9NVVJMQ29uc3RydWN0b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChF
TkFCTEVfUVVPVEEpICYmIEVOQUJMRV9RVU9UQQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0VuYWJsZWRBdFJ1bnRpbWU9UXVvdGFdIFN0b3JhZ2VJbmZvIHdlYmtpdFN0b3JhZ2VJbmZvOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggYzI4NDYwOGYxNzI4
Y2ZkMmViM2UxZDlmN2JjNWNhYmVhMWNmNWZmYi4uMmJjMTg2ZDYwNDlhZDYzM2I4ZTcxNmQ2N2Zh
MjI4MTNlODgyNmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CkBAIC0zNzksMTUgKzM3OSw2IEBAIEV2ZW50VGFyZ2V0RGF0YSogV29ya2VyQ29udGV4dDo6ZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkKICAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwogfQog
Ci0jaWYgRU5BQkxFKEJMT0IpCi1ET01VUkwqIFdvcmtlckNvbnRleHQ6OndlYmtpdFVSTCgpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCkKLSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNy
ZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVS
TC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogdm9pZCBXb3Jr
ZXJDb250ZXh0Ojp3ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNp
emUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggYzk0ZmEwOTc4YjNhYTA0MmU5MTIzZWJhYjM3NDAxMmFh
YjRlZmQzMy4uMzI3YTRlNGE5MGRlZmExYjVmMTU5ZDVmMjE2MzhlNDIyMTU2ZWFlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTEzMSwxMCArMTMxLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29u
c3Q7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25z
dDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAgICBlbnVtIEZpbGVT
eXN0ZW1UeXBlIHsKICAgICAgICAgICAgIFRFTVBPUkFSWSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaWRsCmluZGV4IDczNmJiYzEzM2Y3ZjIzMzBmNzBhYjA3M2E4ODgwM2Uw
NzVhZTBhZDIuLmRjOWZiNzlkOTY1MTg2ZjM5NzgwYWMyODYyZjcwMjIzNThhNDZjYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbApAQCAtMTAxLDcgKzEwMSw3IEBA
IG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRlIEZpbGVSZWFkZXJTeW5jQ29uc3Ry
dWN0b3IgRmlsZVJlYWRlclN5bmM7CiAjZW5kaWYKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0
ZSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxF
X1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFRFTVBPUkFSWSA9IDA7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDVjMjFkODljNDdiOTYyZGRiZTUzZmM4YzgzMWU3
NjA1NmFmMmRmMy4uMDJkMjgxYTljZTQ1ZWU5M2ZmOWE4ZTlkZjM3N2U0OWNmZjlmZWE3NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTEyLTA2ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1
c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBVUkwgQVBJLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVu
dGF0aW9uIG9mIElETCBBdHRyaWJ1dGVzLiBBZGRlZCB0ZXN0IGNhc2VzLgorCisgICAgICAgICog
ZmFzdC9kb20vRE9NVVJMOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvY2hlY2st
aW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNo
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1h
dHRyaWJ1dGUtaGFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LXBhdGhuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJM
L2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1wcm90b2NvbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1k
b211cmwtYXR0cmlidXRlLWhyZWYuaHRtbDogQWRkZWQuCisKIDIwMTEtMTItMDYgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJv
bWl1bSBleHBlY3RhdGlvbnMgdXBkYXRlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118290</attachid>
            <date>2011-12-07 16:59:12 -0800</date>
            <delta_ts>2011-12-07 17:00:36 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-71968-20111207165911.patch</filename>
            <type>text/plain</type>
            <size>43636</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYwNmZkOGVhMDhmYmQy
NmFiZjY2NjgyNzBjMTUwYjc2ZDIzYjliNC4uY2UxMmE0OTdmYjdjMjNiZWU0NmNlMjI4MWE3NWUy
NjZhZGZiNWU0NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDExLTEyLTA2ICBLYXVz
dHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBVUkwgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgRE9NVVJMIElETCBhdHRyaWJ1dGVzLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVu
Y3Rpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLWhhc2guaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtaG9zdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1ob3N0bmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RP
TVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwKKwor
ICAgICAgICAqIGh0bWwvRE9NVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6RE9N
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6Omhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpwb3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2VhcmNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVVSTDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6Om9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmdldFBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmFwcGVuZFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmNsZWFyUGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL0RPTVVS
TC5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpwcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldFByb3Rv
Y29sKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6dXNlcm5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVVJMOjpzZXRVc2VybmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBh
c3N3b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UGFzc3dvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpob3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OnBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6ZmlsZW5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVVJMOjpocmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0
SHJlZik6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnRvU3RyaW5nKToKKyAgICAgICAgKiBo
dG1sL0RPTVVSTC5pZGw6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDExLTEy
LTA3ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW5kZXJP
YmplY3Q6OnN0eWxlKCk6IElubGluZSBlYXJseS1yZXR1cm4gY29uZGl0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuY3BwCmluZGV4IGU0MjA2MGQ0ODQyOThiN2Y0OTE4Yjg5YzdhOWViNDhkZTRiMzdhMDMu
LmJkNWZkNDNkNDUyYWQ2M2FlZmRlNzA5ZDFjZjc5M2FiMGI5ZjI4ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3Jv
bGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwx
MDcgKzI1LDMxOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShC
TE9CKQotCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKKyNp
ZiBFTkFCTEUoQkxPQikKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVJl
Z2lzdHJ5LmgiCiAjZW5kaWYKIAorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9N
VVJMOjpET01VUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKLSAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisjaWYgRU5BQkxFKEJMT0IpCisKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXI7Cit0eXBlZGVm
IEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE93blB0cjxQdWJsaWNVUkxNYW5hZ2Vy
PiA+IFB1YmxpY1VSTE1hbmFnZXJNYXA7CitzdGF0aWMgUHVibGljVVJMTWFuYWdlck1hcCYgcHVi
bGljVVJMTWFuYWdlck1hcCgpOworCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyIDogcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQdWJsaWNV
UkxNYW5hZ2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CisgICAgICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpCisgICAgewor
ICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGJsb2JVUkxzRW5kID0gbV9ibG9iVVJM
cy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X2Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gYmxvYlVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAg
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCAqaXRlcikpOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAg
SGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBzdHJlYW1VUkxzRW5kID0gbV9zdHJlYW1VUkxzLmVu
ZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fc3Ry
ZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHN0cmVhbVVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAg
ICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFt
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworI2VuZGlmCisKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsK
KyAgICAgICAgcHVibGljVVJMTWFuYWdlck1hcCgpLnJlbW92ZShjb250ZXh0KTsKKyAgICB9CisK
KyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzKCkgeyByZXR1cm4gbV9ibG9iVVJMczsgfQor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxz
KCkgeyByZXR1cm4gbV9zdHJlYW1VUkxzOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBIYXNo
U2V0PFN0cmluZz4gbV9ibG9iVVJMczsKKyNpZiBFTkFCTEUoU1RSRUFNUykKKyAgICBIYXNoU2V0
PFN0cmluZz4gbV9zdHJlYW1VUkxzOworI2VuZGlmCit9OworCitzdGF0aWMgUHVibGljVVJMTWFu
YWdlck1hcCYgcHVibGljVVJMTWFuYWdlck1hcCgpCiB7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChQdWJsaWNVUkxNYW5hZ2VyTWFwLCBzdGF0aWNQdWJsaWNVUkxNYW5hZ2VycywgKCkpOworICAg
IHJldHVybiBzdGF0aWNQdWJsaWNVUkxNYW5hZ2VyczsKIH0KIAotRE9NVVJMOjp+RE9NVVJMKCkK
K3N0YXRpYyBQdWJsaWNVUkxNYW5hZ2VyJiBwdWJsaWNVUkxNYW5hZ2VyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CisgICAgUHVibGljVVJMTWFuYWdl
ck1hcCYgbWFwID0gcHVibGljVVJMTWFuYWdlck1hcCgpOworICAgIE93blB0cjxQdWJsaWNVUkxN
YW5hZ2VyPiYgbWFuYWdlciA9IG1hcC5hZGQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbnVsbHB0
cikuZmlyc3QtPnNlY29uZDsKKyAgICBpZiAoIW1hbmFnZXIpCisgICAgICAgIG1hbmFnZXIgPSBh
ZG9wdFB0cihuZXcgUHVibGljVVJMTWFuYWdlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7Cisg
ICAgcmV0dXJuICptYW5hZ2VyOwogfQogCi12b2lkIERPTVVSTDo6Y29udGV4dERlc3Ryb3llZCgp
CitzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBwdWJsaWNCbG9iVVJMcyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewotICAgIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz46Oml0
ZXJhdG9yIHB1YmxpY0Jsb2JVUkxzRW5kID0gbV9wdWJsaWNCbG9iVVJMcy5lbmQoKTsKLSAgICBm
b3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fcHVibGljQmxvYlVSTHMuYmVn
aW4oKTsgaXRlciAhPSBwdWJsaWNCbG9iVVJMc0VuZDsgKytpdGVyKQotICAgICAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywg
Kml0ZXIpKTsKKyAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5ibG9iVVJMcygpOworfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNo
U2V0PFN0cmluZz46Oml0ZXJhdG9yIHB1YmxpY1N0cmVhbVVSTHNFbmQgPSBtX3B1YmxpY1N0cmVh
bVVSTHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3B1YmxpY1N0cmVhbVVSTHMuYmVnaW4oKTsgaXRlciAhPSBwdWJsaWNTdHJlYW1VUkxzRW5kOyAr
K2l0ZXIpCi0gICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rl
ck1lZGlhU3RyZWFtVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworCitzdGF0aWMg
SGFzaFNldDxTdHJpbmc+JiBwdWJsaWNTdHJlYW1VUkxzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgcmV0dXJuIHB1YmxpY1VSTE1hbmFnZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuc3RyZWFtVVJMcygpOworfQorCisjZW5kaWYKICNlbmRp
ZgorCitET01VUkw6OkRPTVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBiYXNl
VVJMKQoreworICAgIG1faHJlZiA9IEtVUkwoS1VSTCgpLCB1cmwpOworICAgIC8vIFJlc29sdmUg
dGhlIFVSTCByZWxhdGl2ZSB0byBiYXNlVVJMIGlmIGlzIHByb3ZpZGUuCisgICAgaWYgKCFiYXNl
VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgbV9ocmVmID0gS1VSTChtX2hyZWYsIGJhc2VVUkwpOwog
fQogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChNZWRpYVN0cmVhbSogc3RyZWFtKQorI2lmIEVOQUJMRShCTE9CKQorCitTdHJpbmcgRE9N
VVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgQmxvYiogYmxvYikKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCB8fCAhc3RyZWFtKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxv
YikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9i
VVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVibGlj
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgLy8gU2luY2Ug
V2ViV29ya2VycyBjYW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3ZSBzaG91bGQgYmUgb24g
dGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBNZWRp
YVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnJlZ2lzdGVyTWVkaWFTdHJlYW1VUkwocHVibGlj
VVJMLCBzdHJlYW0pOwotICAgIG1fcHVibGljU3RyZWFtVVJMcy5hZGQocHVibGljVVJMLnN0cmlu
ZygpKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGlj
VVJMLCBibG9iLT51cmwoKSk7CisgICAgcHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkuYWRkKHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0
cmluZygpOwogfQotI2VuZGlmCiAKLVN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChCbG9i
KiBibG9iKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK1N0cmluZyBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNZWRpYVN0cmVhbSogc3RyZWFtKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0IHx8ICFibG9iKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFt
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JV
Ukw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCkpOworICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNV
UkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwocHVibGljVVJMLCBibG9iLT51cmwoKSk7Ci0g
ICAgbV9wdWJsaWNCbG9iVVJMcy5hZGQocHVibGljVVJMLnN0cmluZygpKTsKKyAgICAvLyBTaW5j
ZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBv
biB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIE1l
ZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChwdWJs
aWNVUkwsIHN0cmVhbSk7CisgICAgcHVibGljU3RyZWFtVVJMcyhzY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNVUkwuc3Ry
aW5nKCk7CiB9CiAKLXZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpCisjZW5kaWYKKwordm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAo
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJs
KEtVUkwoKSwgdXJsU3RyaW5nKTsKIAotICAgIGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5z
KHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzID0gcHVibGlj
QmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKGJsb2JVUkxzLmNvbnRh
aW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5y
ZWdpc3RlckJsb2JVUkwodXJsKTsKLSAgICAgICAgbV9wdWJsaWNCbG9iVVJMcy5yZW1vdmUodXJs
LnN0cmluZygpKTsKKyAgICAgICAgYmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAg
fQotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBpZiAobV9wdWJsaWNTdHJlYW1VUkxz
LmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVS
THMgPSBwdWJsaWNTdHJlYW1VUkxzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmIChz
dHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IG1h
a2Ugc3VyZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVjIHF1ZXN0aW9uIGlm
IHJlcXVpcmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4gU3Ry
ZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lz
dHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGljU3Ry
ZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAgICAgc3RyZWFtVVJMcy5yZW1vdmUo
dXJsLnN0cmluZygpKTsKICAgICB9CiAjZW5kaWYKIH0KIAorI2VuZGlmCisKK1N0cmluZyBET01V
Ukw6Omhvc3QoKSBjb25zdAoreworICAgIGlmIChtX2hyZWYuaG9zdEVuZCgpID09IG1faHJlZi5w
YXRoU3RhcnQoKSkKKyAgICAgICAgcmV0dXJuIG1faHJlZi5ob3N0KCk7CisgICAgaWYgKGlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbChtX2hyZWYucG9ydCgpLCBtX2hyZWYucHJvdG9jb2woKSkpCisg
ICAgICAgIHJldHVybiBtX2hyZWYuaG9zdCgpOworICAgIHJldHVybiBtX2hyZWYuaG9zdCgpICsg
IjoiICsgU3RyaW5nOjpudW1iZXIobV9ocmVmLnBvcnQoKSk7Cit9CisKK3ZvaWQgRE9NVVJMOjpz
ZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2hyZWYuY2FuU2V0SG9zdE9yUG9ydCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgY29sb24gPSB2YWx1ZS5maW5kKCc6Jyk7Cisg
ICAgaWYgKCFjb2xvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNvbG9uID09IG5vdEZv
dW5kKQorICAgICAgICBtX2hyZWYuc2V0SG9zdEFuZFBvcnQodmFsdWUpOworICAgIGVsc2Ugewor
ICAgICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSBjb2xvbiArIDE7CisgICAgICAgIHVuc2lnbmVk
IHBvcnRFbmQgPSBwb3J0U3RhcnQ7CisKKyAgICAgICAgd2hpbGUgKGlzQVNDSUlEaWdpdCh2YWx1
ZVtwb3J0RW5kXSkpCisgICAgICAgICAgICArK3BvcnRFbmQ7CisKKyAgICAgICAgdW5zaWduZWQg
cG9ydCA9IHZhbHVlLnN1YnN0cmluZyhwb3J0U3RhcnQsIHBvcnRFbmQgLSBwb3J0U3RhcnQpLnRv
VUludCgpOworICAgICAgICBpZiAoIXBvcnQpCisgICAgICAgICAgICBtX2hyZWYuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIGNvbG9uICsgMSkgKyAiMCIpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydCwgbV9ocmVm
LnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgIG1faHJlZi5zZXRIb3N0QW5kUG9ydCh2YWx1
ZS5zdWJzdHJpbmcoMCwgY29sb24pKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBtX2hyZWYuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQpKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBET01VUkw6OnNldEhvc3RuYW1lKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgdW5zaWduZWQgaG9zdExlbmd0
aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIHdoaWxlICh2YWx1ZVtpXSA9PSAnLycpCisgICAgICAg
IGkrKzsKKworICAgIGlmIChpID09IGhvc3RMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghbV9ocmVmLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9ocmVmLnNldEhvc3QodmFsdWUuc3Vic3RyaW5nKGkpKTsKK30KKworU3RyaW5nIERPTVVSTDo6
cG9ydCgpIGNvbnN0Cit7CisgICAgaWYgKGhyZWYoKS5oYXNQb3J0KCkpCisgICAgICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcihocmVmKCkucG9ydCgpKTsKKworICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOworfQorCit2b2lkIERPTVVSTDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQorewor
ICAgIGlmICghbV9ocmVmLmNhblNldEhvc3RPclBvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgdW5zaWduZWQgcG9ydCA9IHZhbHVlLnRvVUludCgpOworICAgIGlmIChpc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wocG9ydCwgbV9ocmVmLnByb3RvY29sKCkpKQorICAgICAgICBtX2hyZWYucmVt
b3ZlUG9ydCgpOworICAgIGVsc2UKKyAgICAgICAgbV9ocmVmLnNldFBvcnQodmFsdWUudG9VSW50
KCkpOworfQorCit2b2lkIERPTVVSTDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRQYXRobmFtZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBTdHJpbmcgbmV3UGF0aG5hbWUgPSAodmFsdWVbMF0gPT0gJy8nKSA/IHZhbHVlIDogKCIv
IiArIHZhbHVlKTsKKyAgICBtX2hyZWYuc2V0UGF0aChuZXdQYXRobmFtZSk7Cit9CisKK1N0cmlu
ZyBET01VUkw6OnNlYXJjaCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHF1ZXJ5ID0gaHJlZigpLnF1
ZXJ5KCk7CisgICAgcmV0dXJuIHF1ZXJ5LmlzRW1wdHkoKSA/IGVtcHR5U3RyaW5nKCkgOiAiPyIg
KyBxdWVyeTsKK30KKwordm9pZCBET01VUkw6OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVl
KQoreworICAgIFN0cmluZyBuZXdTZWFyY2ggPSAodmFsdWVbMF0gPT0gJz8nKSA/IHZhbHVlLnN1
YnN0cmluZygxKSA6IHZhbHVlOworICAgIG1faHJlZi5zZXRRdWVyeShuZXdTZWFyY2gpOworfQor
CitTdHJpbmcgRE9NVVJMOjpoYXNoKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgZnJhZ21lbnQgPSBo
cmVmKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGZyYWdtZW50LmlzRW1wdHko
KSA/IGVtcHR5U3RyaW5nKCkgOiAiIyIgKyBmcmFnbWVudDsKK30KKwordm9pZCBET01VUkw6OnNl
dEhhc2goY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBTdHJpbmcgbmV3SGFzaCA9ICh2YWx1
ZVswXSA9PSAnIycpID8gdmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAgbV9ocmVmLnNl
dEZyYWdtZW50SWRlbnRpZmllcihuZXdIYXNoKTsKK30KKwordm9pZCBET01VUkw6OnNldEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4KKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCitTdHJpbmcgRE9NVVJMOjpvcmlnaW4oKSBjb25zdAorewor
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShocmVmKCkpOworICAgIHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBE
T01VUkw6OmdldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK3ZvaWQgRE9NVVJMOjphcHBlbmRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjphcHBlbmRQYXJhbWV0ZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9Cit2b2lkIERPTVVSTDo6Y2xlYXJQYXJhbWV0
ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgorICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEVOQUJMRShCTE9CKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKaW5kZXggZDAyZmU4ODdjYzhjZTk1M2M0ODkw
MTUzMzc3OGFjMDhlNGU3MTI5MC4uNmQ4MmE0NGU3YzJmOGVlNzI5N2I0ZmI1MTdhNDg5YmJjYTFl
ZTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsMTEgKzI3LDkgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9N
VVJMX2gKIAotI2lmIEVOQUJMRShCTE9CKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00MCwz
MCArMzksNzAgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9N
VVJMPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIERPTVVSTCA6
IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERPTVVSTD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkpOyB9Ci0gICAgfkRPTVVSTCgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBET01VUkwodXJsLCBiYXNlVVJMKSk7IH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxET01VUkw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IERPTVVSTCh1cmwsIGVtcHR5U3RyaW5nKCkpKTsgfQorICAgIH5ET01VUkwoKSB7IH07CiAK
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoTWVk
aWFTdHJlYW0qKTsKLSNlbmRpZgotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoQmxvYiopOwot
ICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBwcm90
b2NvbCgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5wcm90b2NvbCgpICsgIjoiOyB9CisgICAgdm9p
ZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZi5zZXRQcm90b2NvbCh2
YWx1ZSk7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworICAgIFN0cmluZyB1c2VybmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS51
c2VyKCk7IH0KKyAgICB2b2lkIHNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV9o
cmVmLnNldFVzZXIodmFsdWUpOyB9CisKKyAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdCB7IHJl
dHVybiBocmVmKCkucGFzcygpOyB9CisgICAgdm9pZCBzZXRQYXNzd29yZChjb25zdCBTdHJpbmcm
IHZhbHVlKSB7ICBtX2hyZWYuc2V0UGFzcyh2YWx1ZSk7IH0KKworICAgIFN0cmluZyBob3N0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGhv
c3RuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLmhvc3QoKTsgfQorICAgIHZvaWQgc2V0SG9z
dG5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcG9ydCgpIGNvbnN0OworICAgIHZv
aWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBwYXRobmFtZSgpIGNvbnN0
IHsgcmV0dXJuIGhyZWYoKS5wYXRoKCk7IH0KKyAgICB2b2lkIHNldFBhdGhuYW1lKGNvbnN0IFN0
cmluZyYpOworCisgICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2VhcmNo
KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGhhc2goKSBjb25zdDsKKyAgICB2b2lkIHNl
dEhhc2goY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpOworICAgIFN0cmluZyBmaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5sYXN0UGF0
aENvbXBvbmVudCgpOyB9CisgICAgdm9pZCBzZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKIAot
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIFN0cmluZyBvcmlnaW4o
KSBjb25zdDsKKworICAgIEtVUkwgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1faHJlZjsgfQorICAg
IHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZiA9IEtVUkwoS1VSTCgp
LCB2YWx1ZSk7IH0KKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1faHJl
Zi5zdHJpbmcoKTsgfQorCisgICAgU3RyaW5nIGdldFBhcmFtZXRlcihjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+KTsKKyAgICB2b2lkIGNsZWFyUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYp
OworCisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3RhdGljIHZvaWQgY29udGV4dERlc3Ryb3llZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZU9iamVj
dFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiopOworICAgIHN0YXRpYyB2b2lkIHJl
dm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJik7CiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNTdHJl
YW1VUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBNZWRpYVN0cmVhbSopOwogI2VuZGlmCisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBLVVJMIG1faHJlZjsKKworICAgIERPTVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShCTE9C
KQotCiAjZW5kaWYgLy8gRE9NVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NVVJMLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAppbmRleCBkNmQ1NTc5
MGY3YTBjYzdiZmQ3NDMwMDU0YWYyODMxMWJiMWIzNmRiLi41Y2VjYmM1OWE1OWI0MGIzOGVlNDNi
NzIwYjYzMTY2NGQ4M2ZjMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVS
TC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTYgKzI2LDM1IEBACiAKIG1vZHVsZSBo
dG1sIHsKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1CTE9CLAotICAgICAg
ICBPbWl0Q29uc3RydWN0b3IsCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAogICAg
ICAgICBHZW5lcmF0ZVRvSlMsCi0gICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgICAgIFJlcGxh
Y2VhYmxlLAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgdXJsLCBpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhOdWxsVmFsdWVdIERPTVN0cmluZyBiYXNlVVJMKQogICAgIF0gRE9NVVJMIHsK
KyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwcm90b2NvbDsKKyAgICAgICAgYXR0cmlidXRl
IERPTVN0cmluZyB1c2VybmFtZTsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBwYXNzd29y
ZDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBob3N0OworICAgICAgICBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGhvc3RuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBvcnQ7Cisg
ICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0aG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmcgc2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhhc2g7CisKKyAg
ICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmaWxlbmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBvcmlnaW47CisgICAgICAgIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBE
T01TdHJpbmcgaHJlZjsKKworICAgICAgICBbRG9udEVudW1dIERPTVN0cmluZyB0b1N0cmluZygp
OworICAgICAgICBET01TdHJpbmcgZ2V0UGFyYW1ldGVyKGluIERPTVN0cmluZyBuYW1lKTsKKyAg
ICAgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmlu
ZyB2YWx1ZXMpOworICAgICAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFt
ZSwgaW4gRE9NU3RyaW5nW10gdmFsdWVzKTsKKyAgICAgICAgdm9pZCBjbGVhclBhcmFtZXRlcihp
biBET01TdHJpbmcgbmFtZSk7CisKICNpZiBkZWZpbmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYm
IEVOQUJMRV9NRURJQV9TVFJFQU0KLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZp
bmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7Cisg
ICAgICAgIHN0YXRpYyBbQ29uZGl0aW9uYWw9QkxPQixDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVm
aW5lZCxDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBET01TdHJpbmcgY3JlYXRlT2Jq
ZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CiAjZW5kaWYKLSAgICAgICAgW0NvbnZlcnRO
dWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2Ig
YmxvYik7Ci0gICAgICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOwor
ICAgICAgICBzdGF0aWMgW0NvbmRpdGlvbmFsPUJMT0IsQ29udmVydE51bGxTdHJpbmdUbz1VbmRl
ZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gRE9NU3RyaW5nIGNyZWF0ZU9i
amVjdFVSTChpbiBCbG9iIGJsb2IpOworICAgICAgICBzdGF0aWMgW0NvbmRpdGlvbmFsPUJMT0Is
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCByZXZva2VPYmplY3RVUkwoaW4g
RE9NU3RyaW5nIHVybCk7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCA1NzEyZDY2ZjM0ZjhmZThiNzg2N2Y0MTUzZjhiMDJmZTlmYzI5YTZjLi4zZDM2NjM1MjVkN2Q5
NGJmYmNhYTY4ZWQ1MDNiZmViYWQ0YzYzNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0xOTM1LDE1ICsxOTM1LDYgQEAgdm9pZCBET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWEKICAgICBkaWFs
b2dGcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cnVuTW9kYWwoKTsKIH0KIAotI2lmIEVOQUJMRShC
TE9CKQotRE9NVVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X2RvbVVSTCAmJiBpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgbV9kb21V
UkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAg
IHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFFVT1RBKQog
U3RvcmFnZUluZm8qIERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKaW5kZXggYjUwM2Y2ZWNiNThjM2I5OTQxZmJmZTBhODJlMjMxYzVm
Y2EzZmZkNi4uNDNjOTRhNTdlZDcwNTkwOTgwNDE0NGMzMWZlNjdhMTA2Y2JkZWU0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0zNDcsMTAgKzM0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxET01XaW5kb3c+OjpyZWY7CiAgICAgICAgIHVz
aW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6ZGVyZWY7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAg
ICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKICAgICAgICAgUGFzc1JlZlB0cjxEYXRhYmFzZT4gb3BlbkRhdGFiYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIFBhc3NSZWZQdHI8RGF0YWJh
c2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMjA5YmY0MzczOGI4ZWYyN2Q2NGVjOWMzNzY0
NTRmNWU4YTczMzEzOS4uOWM2Zjg3Yzg3ODA3OGU3OWE4ZTU1MzQ0OGVjYmUyNWE5OThhODA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtODEzLDcgKzgxMyw3IEBAIG1vZHVsZSB3
aW5kb3cgewogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9QkxPQl0gV2ViS2l0Qmxv
YkJ1aWxkZXJDb25zdHJ1Y3RvciBXZWJLaXRCbG9iQnVpbGRlcjsKIAotICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAg
IGF0dHJpYnV0ZSBET01VUkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKICNpZiBkZWZpbmVkKEVO
QUJMRV9RVU9UQSkgJiYgRU5BQkxFX1FVT1RBCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
RW5hYmxlZEF0UnVudGltZT1RdW90YV0gU3RvcmFnZUluZm8gd2Via2l0U3RvcmFnZUluZm87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCBjMjg0NjA4ZjE3Mjhj
ZmQyZWIzZTFkOWY3YmM1Y2FiZWExY2Y1ZmZiLi4yYmMxODZkNjA0OWFkNjMzYjhlNzE2ZDY3ZmEy
MjgxM2U4ODI2ZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAK
QEAgLTM3OSwxNSArMzc5LDYgQEAgRXZlbnRUYXJnZXREYXRhKiBXb3JrZXJDb250ZXh0OjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CiB9CiAK
LSNpZiBFTkFCTEUoQkxPQikKLURPTVVSTCogV29ya2VyQ29udGV4dDo6d2Via2l0VVJMKCkgY29u
c3QKLXsKLSAgICBpZiAoIW1fZG9tVVJMKQotICAgICAgICBtX2RvbVVSTCA9IERPTVVSTDo6Y3Jl
YXRlKHRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgcmV0dXJuIG1fZG9tVVJM
LmdldCgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiB2b2lkIFdvcmtl
ckNvbnRleHQ6OndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6
ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAppbmRleCBjOTRmYTA5NzhiM2FhMDQyZTkxMjNlYmFiMzc0MDEyYWFi
NGVmZDMzLi4zMjdhNGU0YTkwZGVmYTFiNWYxNTlkNWYyMTYzOGU0MjIxNTZlYWUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtMTMxLDEwICsxMzEsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25z
dDsKIAotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICBET01VUkwqIHdlYmtpdFVSTCgpIGNvbnN0
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIGVudW0gRmlsZVN5
c3RlbVR5cGUgewogICAgICAgICAgICAgVEVNUE9SQVJZLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5pZGwKaW5kZXggNzM2YmJjMTMzZjdmMjMzMGY3MGFiMDczYTg4ODAzZTA3
NWFlMGFkMi4uZGM5ZmI3OWQ5NjUxODZmMzk3ODBhYzI4NjJmNzAyMjM1OGE0NmNiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC0xMDEsNyArMTAxLDcgQEAg
bW9kdWxlIHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgRmlsZVJlYWRlclN5bmNDb25zdHJ1
Y3RvciBGaWxlUmVhZGVyU3luYzsKICNlbmRpZgogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbQ29uZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRl
IERPTVVSTENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVf
U1lTVEVNKSAmJiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgVEVNUE9SQVJZID0gMDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMDAzOWM2NWRhMjI0MDAzOTIxYjdhNTgzMWEyYmJi
YTcxYmI5ZTcyLi4xMTA4YTBhYTQwYTZiOWJiZDczNjQ0MjgzYTJiZjVmMWU4ZDkyMTQ1IDEwMDc1
NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMTItMDYgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVz
dHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFVSTCBBUEkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTk2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWwgaW1wbGVtZW50
YXRpb24gb2YgSURMIEF0dHJpYnV0ZXMuIEFkZGVkIHRlc3QgY2FzZXMuCisKKyAgICAgICAgKiBm
YXN0L2RvbS9ET01VUkw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1p
bnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2gt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1oYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUt
cGF0aG5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLXByb3RvY29sLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRv
bXVybC1hdHRyaWJ1dGUtaHJlZi5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0wNyAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQiBkZWxldGVJbmRl
eCBzaG91bGQgdGhyb3cgTk9UX0FMTE9XRURfRVJSIGlmIGNhbGxlZCBvdXRzaWRlIGEgVkVSU0lP
Tl9DSEFOR0UgdHJhbnNhY3Rpb24gY2FsbGJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJs
LWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM4ZDYyZWEwOGEzMmFlMzA4Y2M3
YTdhYjY3MWJlZmRhZjA1ZTU0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzQgQEAKK1Rlc3QgaW5zdGFuY2VvZiBmdW5jdGlvbnMgYW5kIHByb3BlcnRp
ZXMgb2Ygd2Via2l0VVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAn
cHJvdG9jb2wnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAndXNlcm5hbWUnIGluIHdlYmtp
dFVSTCBpcyBmYWxzZQorUEFTUyAncGFzc3dvcmQnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFT
UyAnaG9zdCcgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdob3N0bmFtZScgaW4gd2Via2l0
VVJMIGlzIGZhbHNlCitQQVNTICdwb3J0JyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3Bh
dGhuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3NlYXJjaCcgaW4gd2Via2l0VVJM
IGlzIGZhbHNlCitQQVNTICdoYXNoJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2ZpbGVu
YW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ29yaWdpbicgaW4gd2Via2l0VVJMIGlz
IGZhbHNlCitQQVNTICdwYXJhbWV0ZXJOYW1lcycgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNT
ICdnZXRQYXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2dldFBhcmFt
ZXRlckFsbG5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnYXBwZW5kUGFyYW1ldGVy
JyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2NsZWFyUGFyYW1ldGVybmFtZScgaW4gd2Vi
a2l0VVJMIGlzIGZhbHNlCitQQVNTICdocmVmJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1Mg
J2NyZWF0ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIGlzIHRydWUKK1BBU1MgJ3Jldm9rZU9iamVj
dFVSTCcgaW4gd2Via2l0VVJMIGlzIHRydWUKK1BBU1MgdXJsIGluc3RhbmNlb2Ygd2Via2l0VVJM
IGlzIHRydWUKK1BBU1MgdXJsLmhhc093blByb3BlcnR5KCdnZXRQYXJhbWV0ZXInKSBpcyBmYWxz
ZQorUEFTUyB1cmwuaGFzT3duUHJvcGVydHkoJ2FwcGVuZFBhcmFtZXRlcicpIGlzIGZhbHNlCitQ
QVNTIHVybC5oYXNPd25Qcm9wZXJ0eSgnY2xlYXJQYXJhbWV0ZXInKSBpcyBmYWxzZQorUEFTUyB1
cmwuY3JlYXRlT2JqZWN0VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1MgdXJsLnJldm9rZU9iamVjdFVS
TCBpcyB1bmRlZmluZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNr
LWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
RE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjljNTI5OWNmMjQ3MzU1NWYyMDFiYjM0YjQ4Njk3OGViYTA1NjQ4MmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwt
ZnVuY3Rpb25zLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBp
bnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuIik7CisKK3Zh
ciB1cmwgPSBuZXcgd2Via2l0VVJMKCJ3d3cud2Via2l0Lm9yZyIpOworCitzaG91bGRCZUZhbHNl
KCIncHJvdG9jb2wnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3VzZXJuYW1lJyBp
biB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidwYXNzd29yZCcgaW4gd2Via2l0VVJMIik7
CitzaG91bGRCZUZhbHNlKCInaG9zdCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIn
aG9zdG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3BvcnQnIGluIHdlYmtp
dFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3BhdGhuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3Vs
ZEJlRmFsc2UoIidzZWFyY2gnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2hhc2gn
IGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2ZpbGVuYW1lJyBpbiB3ZWJraXRVUkwi
KTsKK3Nob3VsZEJlRmFsc2UoIidvcmlnaW4nIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxz
ZSgiJ3BhcmFtZXRlck5hbWVzJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidnZXRQ
YXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidnZXRQYXJhbWV0
ZXJBbGxuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidhcHBlbmRQYXJhbWV0
ZXInIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2NsZWFyUGFyYW1ldGVybmFtZScg
aW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInaHJlZicgaW4gd2Via2l0VVJMIik7CisK
K3Nob3VsZEJlVHJ1ZSgiJ2NyZWF0ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRC
ZVRydWUoIidyZXZva2VPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworCitzaG91bGRCZVRydWUo
InVybCBpbnN0YW5jZW9mIHdlYmtpdFVSTCIpCitzaG91bGRCZUZhbHNlKCJ1cmwuaGFzT3duUHJv
cGVydHkoJ2dldFBhcmFtZXRlcicpIikKK3Nob3VsZEJlRmFsc2UoInVybC5oYXNPd25Qcm9wZXJ0
eSgnYXBwZW5kUGFyYW1ldGVyJykiKQorc2hvdWxkQmVGYWxzZSgidXJsLmhhc093blByb3BlcnR5
KCdjbGVhclBhcmFtZXRlcicpIikKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwuY3JlYXRlT2JqZWN0
VVJMIik7CitzaG91bGRCZVVuZGVmaW5lZCgidXJsLnJldm9rZU9iamVjdFVSTCIpOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2U5MjM3YzE0NzE5YzI2YzAwYmI2ZDRkZTQwYzIyN2YxYzRjMmJlYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LWhhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaGFz
aCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0hhc2ggdmFsdWUgc3RhcnQgd2l0aCAjCitQQVNTIGRvbXVybC5oYXNoIGlzICIjbWlkZGxl
IgorJz8nIGluIGhhc2ggdmFsdWUKK1BBU1MgZG9tdXJsLmhhc2ggaXMgIiNoYXNoP3ZhbHVlIgor
JyMnIGluIGhhc2ggdmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaG9zdG5hbWUKK1BB
U1MgZG9tdXJsLmhhc2ggaXMgIiIKK251bGwgaGFzaAorUEFTUyBkb211cmwuaGFzaCBpcyAiIgor
aGFzaCB0byBtYWlsdG86IHByb3RvY29sCitQQVNTIGRvbXVybC5oYXNoIGlzICIjaGFzaC12YWx1
ZSIKK0FkZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2NvbAorUEFTUyBkb211cmwuaGFzaCBp
cyAiI2hhc2giCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtaGFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtaGFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5ZTg5OGQ2OTc1NzZkNjM3MDcwYjZjZWQ0ZTZh
MGRmZDQ5ZjczMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBoYXNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicp
OworCitkZWJ1ZygiSGFzaCB2YWx1ZSBzdGFydCB3aXRoICMiKTsKK3ZhciBkb211cmwgPSBuZXcg
d2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRt
bCNtaWRkbGUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiI21pZGRs
ZSIpOworCitkZWJ1ZygiJz8nIGluIGhhc2ggdmFsdWUiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Vi
a2l0VVJMKCJodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3Zh
bHVlIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNoP3ZhbHVl
Iik7CisKK2RlYnVnKCInIycgaW4gaGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFjdGVycyBp
biBob3N0bmFtZSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15
XCJkKCl7fXx+b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiIik7CisKK2RlYnVnKCJudWxsIGhhc2giKTsK
K3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0
aC90ZXN0dXJsLmh0bWwjIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwg
IiIpOworCitkZWJ1ZygiaGFzaCB0byBtYWlsdG86IHByb3RvY29sIik7Cit2YXIgZG9tdXJsID0g
bmV3IHdlYmtpdFVSTCgibWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSNoYXNoLXZhbHVl
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNoLXZhbHVlIik7
CisKK2RlYnVnKCJBZGQgaGFzaCB0byBub24tc3RhbmRhcmQgcHJvdG9jb2wiKTsKK3ZhciBkb211
cmwgPSBuZXcgd2Via2l0VVJMKCJmb286YmFyI2hhc2giKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9tdXJsLmhhc2giLCAiI2hhc2giKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaG9zdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWJjOGVlNzgxYWE0Y2E5
NDVjM2JjYjUyZTczZWMwODU2MTQ0Y2M1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNSBAQAorVGVzdCBzZXR0aW5nIHRoZSBob3N0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJM
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBkb211
cmwuaG9zdCBpcyAid3d3Lm15ZG9tYWluLmNvbTo4MDgwIgorRGVmYXVsdAorUEFTUyBkb211cmwu
aG9zdCBpcyAid3d3Lm90aGVyZG9tYWluLmNvbSIKK0hvc3QgVVJMIGNvbnRhaW5pbmcgdXNlcm5h
bWUKK1BBU1MgZG9tdXJsLmhvc3QgaXMgImRvbWFpbi5jb206MjUiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4OGU0OTA0NThjMGJhZDQxMjFiZjE0MmU4Yzk4YzI3YTIwYTEyNTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0
bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBo
b3N0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCitkZWJ1ZygiQmFzaWMgdGVzdCIpOwor
dmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbTo4MDgw
L3BhdGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5ob3N0IiwgInd3dy5teWRv
bWFpbi5jb206ODA4MCIpOworCitkZWJ1ZygiRGVmYXVsdCIpOwordmFyIGRvbXVybCA9IG5ldyB3
ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm90aGVyZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb211cmwuaG9zdCIsICJ3d3cub3RoZXJkb21haW4uY29tIik7CisKK2Rl
YnVnKCJIb3N0IFVSTCBjb250YWluaW5nIHVzZXJuYW1lIik7Cit2YXIgZG9tdXJsID0gbmV3IHdl
YmtpdFVSTCgiaHR0cHM6Ly9yd3dteUBkb21haW4uY29tOjI1L3BhLi50aC8iKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3QiLCAiZG9tYWluLmNvbToyNSIpOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mOTY4MWYxZDhkYjgzOWQ2NDE0MmZhZjZlZmVmMjBkYzc5MWY1OWVmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRy
aWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3Qgc2V0dGlu
ZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitCYXNpYyB0ZXN0CitQQVNTIGRvbXVybC5ob3N0bmFtZSBpcyAid3d3
Lm15ZG9tYWluLmNvbSIKK0hvc3RuYW1lIHdpdGggZm9vOiBwcm90b2NvbAorUEFTUyBkb211cmwu
aG9zdG5hbWUgaXMgInd3dy5teWRvbWFpbi5jb20iCitTZXQgZG9tdXJsIGhvc3RuYW1lIHRoYXQg
Y29udGFpbnMgc3BhY2UgaW4gaXQKK1BBU1MgZG9tdXJsLmhvc3RuYW1lIGlzICIiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWNmZmMzY2M0MzcyNjZkNWM2Mjc5Y2Q0ZGQwMzQ5YTIzMzZhNzhj
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwt
YXR0cmlidXRlLWhvc3RuYW1lLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBzZXR0aW5nIHRoZSBob3N0bmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsK
KworZGVidWcoIkJhc2ljIHRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRw
czovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkb211cmwuaG9zdG5hbWUiLCAid3d3Lm15ZG9tYWluLmNvbSIpOworCitkZWJ1ZygiSG9zdG5h
bWUgd2l0aCBmb286IHByb3RvY29sIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiZm9v
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211
cmwuaG9zdG5hbWUiLCAid3d3Lm15ZG9tYWluLmNvbSIpOworCitkZWJ1ZygiU2V0IGRvbXVybCBo
b3N0bmFtZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGluIGl0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdl
YmtpdFVSTCgiaHR0cDovL3d3dy5teSBkb21haW4uY29tL3BhdGgvIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvbXVybC5ob3N0bmFtZSIsICIiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDAxNTQxZjJmYzI4ZGFjNmZlZDNiNzUyZWU1ZmIxZmMyNjk0NmYwMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1l
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1l
IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworQmFzaWMgVGVzdAorUEFTUyBkb211cmwucGF0aG5hbWUgaXMgIi9wYXRoL3Rlc3R1cmwuaHRt
bCIKK1BhdGhuYW1lIHdpdGggc3ltYm9scworUEFTUyBkb211cmwucGF0aG5hbWUgaXMgIi9wYSUz
RnRoIgorcGF0aG5hbWUgdG8gbnVsbAorUEFTUyBkb211cmwucGF0aG5hbWUgaXMgIi8iCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhu
YW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk3NTkxNTQxYmRjZjNmMjJiNTllMTkzMzE2ZDI5NTI4NjBi
Y2U4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBzZXR0aW5nIHRoZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4n
KTsKKworZGVidWcoIkJhc2ljIFRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWw/a2V5PXZhbHVlIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wYXRobmFtZSIsICIvcGF0aC90ZXN0dXJsLmh0
bWwiKTsKKworZGVidWcoIlBhdGhuYW1lIHdpdGggc3ltYm9scyIpOwordmFyIGRvbXVybCA9IG5l
dyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYSUzRnRoP2tleT12YWx1ZSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwucGF0aG5hbWUiLCAiL3BhJTNGdGgiKTsK
KworZGVidWcoInBhdGhuYW1lIHRvIG51bGwiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJM
KCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vP2tleT12YWx1ZSIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJkb211cmwucGF0aG5hbWUiLCAiLyIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwt
YXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJM
L2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQ2MzgwY2Zj
Mjc0NTRiYmZhMDRhMDlkNGViZmFjZDZkZWI4ZjkyYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgZ2V0dGluZyB0aGUgcG9ydCBhdHRyaWJ1dGUgb2YgdGhl
IERPTVVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RlZmF1bHQgb3IgVW5z
cGVjaWZpZWQgcG9ydCBpcyBlbXB0eQorUEFTUyBkb211cmwucG9ydCBpcyAnJworRW1wdHkgcG9y
dCBzaG91bGQgYmUgZW1wdHkKK1BBU1MgZG9tdXJsLnBvcnQgaXMgJycKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTE5NGQ3ZWJmMjkzZTM2MDgxYWJlNTVhMDVjODE2OTlkYzcyYmM5OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQu
aHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGdldHRpbmcgdGhl
IHBvcnQgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK3ZhciBkb211cmwgPSBuZXcgd2Vi
a2l0VVJMKCJodHRwOi8vd2Via2l0Lm9yZyIpOworZGVidWcoIkRlZmF1bHQgb3IgVW5zcGVjaWZp
ZWQgcG9ydCBpcyBlbXB0eSIpOworc2hvdWxkQmUoImRvbXVybC5wb3J0IiwgIicnIik7CisKK3Zh
ciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwOi8vd2Via2l0Lm9yZzovIik7CitkZWJ1Zygi
RW1wdHkgcG9ydCBzaG91bGQgYmUgZW1wdHkiKTsKK3Nob3VsZEJlKCJkb211cmwucG9ydCIsICIn
JyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2Nv
bC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E0YTk3ZGQwMzgyMTYxMzM1Y2M2ZWM3MzI3OTIz
MjczYmI5MTJmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBA
CitUZXN0IHNldHRpbmcgdGhlIHByb3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBkb211cmwucHJv
dG9jb2wgaXMgImh0dHAtZm9vOiIKK1Byb3RvY29sIG9uIG1hbGZvcm1lZCBVUkwKK1BBU1MgZG9t
dXJsLnByb3RvY29sIGlzICJmb286IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9E
T01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YWM1YjU1
YWI5YmI3NTUzZDZiMzI5MGI0NDc4NmU0NGVmODUxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCkBA
IC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcHJvdG9j
b2wgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKKworZGVidWcoIkJhc2ljIHRlc3QiKTsK
K3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwLWZvbzovL3d3dy5teWRvbWFpbi5jb20v
cGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnByb3RvY29sIiwiaHR0cC1m
b286Iik7CisKK2RlYnVnKCJQcm90b2NvbCBvbiBtYWxmb3JtZWQgVVJMIik7Cit2YXIgZG9tdXJs
ID0gbmV3IHdlYmtpdFVSTCgiZm9vOj8/YmFyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
bXVybC5wcm90b2NvbCIsICJmb286Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtc2VhcmNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRkZDE0MDFjMTc4
NmFmNWQyZDFlN2E5NDllOTEzMDVmM2MwNzBkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOSBAQAorVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRlIG9mIHRo
ZSBET01VUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitCYXNpYyBUZXN0CitQ
QVNTIGRvbXVybC5zZWFyY2ggaXMgIj9rZXk9dmFsdWUiCitTZWFyY2ggdGhhdCBzdGFydHMgd2l0
aCAnPycgYW5kIGNvbnRhaW5zIHNwYWNlcworUEFTUyBkb211cmwuc2VhcmNoIGlzICI/dmFsJTIw
dWU9JTIwa2V5PyIKK1NlYXJjaCBvbiBtYWxmb3JtZWQgVVJMCitQQVNTIGRvbXVybC5zZWFyY2gg
aXMgIj8lIgorU2VhcmNoIGNvbnRhaW5pbmcgJyMnCitQQVNTIGRvbXVybC5zZWFyY2ggaXMgIj9r
ZXk9dmFsdWUiCitTZWFyY2ggdG8gZW1wdHkKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNo
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTM4NzI2YWMzMjE4YjI5OWNlNDM2OTE3MDk1ODE3NDRmMjNiNTNm
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwt
YXR0cmlidXRlLXNlYXJjaC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3Qgc2V0dGluZyB0aGUgc2VhcmNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCitk
ZWJ1ZygiQmFzaWMgVGVzdCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9tdXJsLnNlYXJjaCIsICI/a2V5PXZhbHVlIik7CisKK2RlYnVnKCJTZWFyY2ggdGhhdCBz
dGFydHMgd2l0aCAnPycgYW5kIGNvbnRhaW5zIHNwYWNlcyIpOwordmFyIGRvbXVybCA9IG5ldyB3
ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz92YWwlMjB1ZT0lMjBrZXk/
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5zZWFyY2giLCAiP3ZhbCUyMHVlPSUy
MGtleT8iKTsKKworZGVidWcoIlNlYXJjaCBvbiBtYWxmb3JtZWQgVVJMIik7Cit2YXIgZG9tdXJs
ID0gbmV3IHdlYmtpdFVSTCgiczp3d3cubXlkb21haW4uY29tL3BhdGgvPyUiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9tdXJsLnNlYXJjaCIsICI/JSIpOworCitkZWJ1ZygiU2VhcmNoIGNv
bnRhaW5pbmcgJyMnIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cu
bXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSNoYXNoIik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImRvbXVybC5zZWFyY2giLCAiP2tleT12YWx1ZSIpOworCitkZWJ1ZygiU2VhcmNoIHRvIGVt
cHR5Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5zZWFyY2giLCAiIik7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJs
LWF0dHJpYnV0ZS1ocmVmLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjk1M2ZjY2Y1YTcyMTA4
NDRkZGY3NDk0OWYyMWNhZTM2Y2Y1MmFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBzdHJpbmdpZmllciBwcm9wZXJ0eSBvZiBocmVm
IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyB1cmwudG9TdHJpbmcoKSBpcyB1cmwuaHJlZgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhy
ZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yYzMxNmU5MGMzOGZmODA0NTc3NDY5ODQ1ZmQ0NTcyMGM3ZWQ1
ODZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0cmlu
Z2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5naWZpZXIgcHJvcGVydHkgb2YgaHJlZiBhdHRyaWJ1dGUg
b2YgdGhlIERPTVVSTC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHA6Ly93d3cu
ZXhhbXBsZS5jb20iKTsKK3Nob3VsZEJlKCJ1cmwudG9TdHJpbmcoKSIsICJ1cmwuaHJlZiIpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118365</attachid>
            <date>2011-12-08 05:06:36 -0800</date>
            <delta_ts>2011-12-10 00:28:16 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>71968_patch.txt</filename>
            <type>text/plain</type>
            <size>52640</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDExLTEyLTA2ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmJiBFcmlrIEFydmlkc3NvbiA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgVVJMIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5NjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0
aW9uIG9mIERPTVVSTCBJREwgYXR0cmlidXRlcy4KKyAgICAgICAgQ2hhbmdlZCB0byBzdGF0aWMg
Y2xhc3MgbWV0aG9kcyBmb3IgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5j
dGlvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaGFzaC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1ob3N0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0
cmlidXRlLWhvc3RuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9N
VVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbAorCisg
ICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpET01V
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6aG9z
dCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpzZXRIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZWFyY2gp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0SGFzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6b3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Z2V0UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6Y2xlYXJQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvRE9NVVJM
Lmg6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnByb3RvY29sKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UHJvdG9j
b2wpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjp1c2VybmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01VUkw6OnNldFVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cGFz
c3dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRQYXNzd29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6Omhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6
cGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpmaWxlbmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRI
cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6dG9TdHJpbmcpOgorICAgICAgICAqIGh0
bWwvRE9NVVJMLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMTEtMTIt
MDggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDIzMjMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwu
Y3BwCShyZXZpc2lvbiAxMDIzMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
TW90b3JvbGEgTW9iaWxpdHkgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNCw1NiArMjUsOTkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoQkxPQikKLQogI2luY2x1ZGUgIkRPTVVSTC5oIgogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
CisjaWYgRU5BQkxFKEJMT0IpCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKLSNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgotCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJl
YW1SZWdpc3RyeS5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1E
T01VUkw6OkRPTVVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKKyNpZiBFTkFCTEUoQkxPQikKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXI7Cit0eXBlZGVm
IEhhc2hNYXA8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE93blB0cjxQdWJsaWNVUkxNYW5hZ2Vy
PiA+IFB1YmxpY1VSTE1hbmFnZXJNYXA7CitzdGF0aWMgUHVibGljVVJMTWFuYWdlck1hcCYgcHVi
bGljVVJMTWFuYWdlck1hcCgpOworCitjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyIDogcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQdWJsaWNV
UkxNYW5hZ2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CisgICAgICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpCisgICAgewor
ICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGJsb2JVUkxzRW5kID0gbV9ibG9iVVJM
cy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBt
X2Jsb2JVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gYmxvYlVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAg
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCAqaXRlcikpOworCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICAgICAg
SGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBzdHJlYW1VUkxzRW5kID0gbV9zdHJlYW1VUkxzLmVu
ZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1fc3Ry
ZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHN0cmVhbVVSTHNFbmQ7ICsraXRlcikKKyAgICAgICAg
ICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFt
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXRlcikpOworI2VuZGlmCisKKyAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsK
KyAgICAgICAgcHVibGljVVJMTWFuYWdlck1hcCgpLnJlbW92ZShjb250ZXh0KTsKKyAgICB9CisK
KyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzKCkgeyByZXR1cm4gbV9ibG9iVVJMczsgfQor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxz
KCkgeyByZXR1cm4gbV9zdHJlYW1VUkxzOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBIYXNo
U2V0PFN0cmluZz4gbV9ibG9iVVJMczsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3N0cmVhbVVSTHM7CisjZW5kaWYKK307CisKK3N0YXRpYyBQdWJsaWNV
UkxNYW5hZ2VyTWFwJiBwdWJsaWNVUkxNYW5hZ2VyTWFwKCkKIHsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFB1YmxpY1VSTE1hbmFnZXJNYXAsIHN0YXRpY1B1YmxpY1VSTE1hbmFnZXJzLCAoKSk7
CisgICAgcmV0dXJuIHN0YXRpY1B1YmxpY1VSTE1hbmFnZXJzOwogfQogCi1ET01VUkw6On5ET01V
UkwoKQorc3RhdGljIFB1YmxpY1VSTE1hbmFnZXImIHB1YmxpY1VSTE1hbmFnZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKKyAgICBQdWJsaWNVUkxN
YW5hZ2VyTWFwJiBtYXAgPSBwdWJsaWNVUkxNYW5hZ2VyTWFwKCk7CisgICAgT3duUHRyPFB1Ymxp
Y1VSTE1hbmFnZXI+JiBtYW5hZ2VyID0gbWFwLmFkZChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBu
dWxscHRyKS5maXJzdC0+c2Vjb25kOworICAgIGlmICghbWFuYWdlcikKKyAgICAgICAgbWFuYWdl
ciA9IGFkb3B0UHRyKG5ldyBQdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
KTsKKyAgICByZXR1cm4gKm1hbmFnZXI7CiB9CiAKLXZvaWQgRE9NVVJMOjpjb250ZXh0RGVzdHJv
eWVkKCkKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHB1YmxpY0Jsb2JVUkxzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7Ci0gICAgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKLQotICAgIEhhc2hTZXQ8U3RyaW5n
Pjo6aXRlcmF0b3IgcHVibGljQmxvYlVSTHNFbmQgPSBtX3B1YmxpY0Jsb2JVUkxzLmVuZCgpOwot
ICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9wdWJsaWNCbG9iVVJM
cy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY0Jsb2JVUkxzRW5kOyArK2l0ZXIpCi0gICAgICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCAqaXRlcikpOworICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLmJsb2JVUkxzKCk7Cit9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
IEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgcHVibGljU3RyZWFtVVJMc0VuZCA9IG1fcHVibGlj
U3RyZWFtVVJMcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRl
ciA9IG1fcHVibGljU3RyZWFtVVJMcy5iZWdpbigpOyBpdGVyICE9IHB1YmxpY1N0cmVhbVVSTHNF
bmQ7ICsraXRlcikKLSAgICAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJl
Z2lzdGVyTWVkaWFTdHJlYW1VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7Ci0jZW5k
aWYKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIHB1YmxpY1N0cmVhbVVSTHMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICByZXR1cm4gcHVibGlj
VVJMTWFuYWdlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zdHJlYW1VUkxzKCk7CiB9CiAKLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1l
ZGlhU3RyZWFtKiBzdHJlYW0pCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWVkaWFTdHJlYW0qIHN0
cmVhbSkKIHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQor
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhc3RyZWFtKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6OmNyZWF0ZVB1Ymxp
Y1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEtV
UkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTgxLDUwICsxMjUsMjEwIEBAIFN0cmluZyBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChNZWRpYVN0cmUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS5yZWdpc3Rlck1lZGlh
U3RyZWFtVVJMKHB1YmxpY1VSTCwgc3RyZWFtKTsKLSAgICBtX3B1YmxpY1N0cmVhbVVSTHMuYWRk
KHB1YmxpY1VSTC5zdHJpbmcoKSk7CisgICAgcHVibGljU3RyZWFtVVJMcyhzY3JpcHRFeGVjdXRp
b25Db250ZXh0KS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKIAogICAgIHJldHVybiBwdWJsaWNV
Ukwuc3RyaW5nKCk7CiB9CiAjZW5kaWYKIAotU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJM
KEJsb2IqIGJsb2IpCitTdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvYiogYmxvYikKIHsKLSAgICBp
ZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhYmxvYikKKyAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgfHwgIWJsb2IpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAg
IEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9i
VVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChwdWJs
aWNVUkwsIGJsb2ItPnVybCgpKTsKLSAgICBtX3B1YmxpY0Jsb2JVUkxzLmFkZChwdWJsaWNVUkwu
c3RyaW5nKCkpOworICAgIHB1YmxpY0Jsb2JVUkxzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmFk
ZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VSTC5zdHJpbmcoKTsK
IH0KIAotdm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykKK3ZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAg
aWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0cmlu
Zyk7CiAKLSAgICBpZiAobV9wdWJsaWNCbG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkpKSB7
CisgICAgSGFzaFNldDxTdHJpbmc+JiBibG9iVVJMcyA9IHB1YmxpY0Jsb2JVUkxzKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOworICAgIGlmIChibG9iVVJMcy5jb250YWlucyh1cmwuc3RyaW5nKCkp
KSB7CiAgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVy
bCk7Ci0gICAgICAgIG1fcHVibGljQmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CisgICAg
ICAgIGJsb2JVUkxzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgIH0KLQogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCi0gICAgaWYgKG1fcHVibGljU3RyZWFtVVJMcy5jb250YWlucyh1cmwuc3Ry
aW5nKCkpKSB7CisgICAgSGFzaFNldDxTdHJpbmc+JiBzdHJlYW1VUkxzID0gcHVibGljU3RyZWFt
VVJMcyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoc3RyZWFtVVJMcy5jb250YWlu
cyh1cmwuc3RyaW5nKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgb2YgdGhpcyBh
c3NlcnRpb24gYmVsb3cuIFJhaXNlIGEgc3BlYyBxdWVzdGlvbiBpZiByZXF1aXJlZC4KICAgICAg
ICAgLy8gU2luY2UgV2ViV29ya2VycyBjYW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3ZSBz
aG91bGQgYmUgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVnaXN0ZXJN
ZWRpYVN0cmVhbVVSTCh1cmwpOwotICAgICAgICBtX3B1YmxpY1N0cmVhbVVSTHMucmVtb3ZlKHVy
bC5zdHJpbmcoKSk7CisgICAgICAgIHN0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAg
ICAgfQogI2VuZGlmCiB9CisjZW5kaWYKKworRE9NVVJMOjpET01VUkwoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkKK3sKKyAgICBtX2hyZWYgPSBLVVJMKEtVUkwoKSwg
dXJsKTsKKyAgICAvLyBSZXNvbHZlIHRoZSBVUkwgcmVsYXRpdmUgdG8gYmFzZVVSTCBpZiBpcyBw
cm92aWRlLgorICAgIGlmICghYmFzZVVSTC5pc0VtcHR5KCkpCisgICAgICAgIG1faHJlZiA9IEtV
UkwobV9ocmVmLCBiYXNlVVJMKTsKK30KKworRE9NVVJMOjp+RE9NVVJMKCkKK3sKK30KKworU3Ry
aW5nIERPTVVSTDo6aG9zdCgpIGNvbnN0Cit7CisgICAgaWYgKG1faHJlZi5ob3N0RW5kKCkgPT0g
bV9ocmVmLnBhdGhTdGFydCgpKQorICAgICAgICByZXR1cm4gbV9ocmVmLmhvc3QoKTsKKyAgICBp
ZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1faHJlZi5wb3J0KCksIG1faHJlZi5wcm90b2Nv
bCgpKSkKKyAgICAgICAgcmV0dXJuIG1faHJlZi5ob3N0KCk7CisgICAgcmV0dXJuIG1faHJlZi5o
b3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihtX2hyZWYucG9ydCgpKTsKK30KKwordm9pZCBE
T01VUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRIb3N0T3JQ
b3J0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBjb2xvbiA9IHZhbHVlLmZpbmQo
JzonKTsKKyAgICBpZiAoIWNvbG9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY29sb24g
PT0gbm90Rm91bmQpCisgICAgICAgIG1faHJlZi5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7CisgICAg
ZWxzZSB7CisgICAgICAgIHVuc2lnbmVkIHBvcnRTdGFydCA9IGNvbG9uICsgMTsKKyAgICAgICAg
dW5zaWduZWQgcG9ydEVuZCA9IHBvcnRTdGFydDsKKworICAgICAgICB3aGlsZSAoaXNBU0NJSURp
Z2l0KHZhbHVlW3BvcnRFbmRdKSkKKyAgICAgICAgICAgICsrcG9ydEVuZDsKKworICAgICAgICB1
bnNpZ25lZCBwb3J0ID0gdmFsdWUuc3Vic3RyaW5nKHBvcnRTdGFydCwgcG9ydEVuZCAtIHBvcnRT
dGFydCkudG9VSW50KCk7CisgICAgICAgIGlmICghcG9ydCkKKyAgICAgICAgICAgIG1faHJlZi5z
ZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgY29sb24gKyAxKSArICIwIik7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0
LCBtX2hyZWYucHJvdG9jb2woKSkpCisgICAgICAgICAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQ
b3J0KHZhbHVlLnN1YnN0cmluZygwLCBjb2xvbikpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIG1faHJlZi5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9ydEVu
ZCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIERPTVVSTDo6c2V0SG9zdG5hbWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICB1bnNpZ25lZCBo
b3N0TGVuZ3RoID0gdmFsdWUubGVuZ3RoKCk7CisgICAgd2hpbGUgKHZhbHVlW2ldID09ICcvJykK
KyAgICAgICAgaSsrOworCisgICAgaWYgKGkgPT0gaG9zdExlbmd0aCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFtX2hyZWYuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2hyZWYuc2V0SG9zdCh2YWx1ZS5zdWJzdHJpbmcoaSkpOworfQorCitTdHJpbmcg
RE9NVVJMOjpwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoaHJlZigpLmhhc1BvcnQoKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGhyZWYoKS5wb3J0KCkpOworCisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQb3J0KGNvbnN0IFN0cmluZyYgdmFs
dWUpCit7CisgICAgaWYgKCFtX2hyZWYuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICB1bnNpZ25lZCBwb3J0ID0gdmFsdWUudG9VSW50KCk7CisgICAgaWYgKGlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCBtX2hyZWYucHJvdG9jb2woKSkpCisgICAgICAgIG1f
aHJlZi5yZW1vdmVQb3J0KCk7CisgICAgZWxzZQorICAgICAgICBtX2hyZWYuc2V0UG9ydCh2YWx1
ZS50b1VJbnQoKSk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIGlmICghbV9ocmVmLmNhblNldFBhdGhuYW1lKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFN0cmluZyBuZXdQYXRobmFtZSA9ICh2YWx1ZVswXSA9PSAnLycpID8gdmFs
dWUgOiAoIi8iICsgdmFsdWUpOworICAgIG1faHJlZi5zZXRQYXRoKG5ld1BhdGhuYW1lKTsKK30K
KworU3RyaW5nIERPTVVSTDo6c2VhcmNoKCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcXVlcnkgPSBo
cmVmKCkucXVlcnkoKTsKKyAgICByZXR1cm4gcXVlcnkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmco
KSA6ICI/IiArIHF1ZXJ5OworfQorCit2b2lkIERPTVVSTDo6c2V0U2VhcmNoKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgU3RyaW5nIG5ld1NlYXJjaCA9ICh2YWx1ZVswXSA9PSAnPycpID8g
dmFsdWUuc3Vic3RyaW5nKDEpIDogdmFsdWU7CisgICAgbV9ocmVmLnNldFF1ZXJ5KG5ld1NlYXJj
aCk7Cit9CisKK1N0cmluZyBET01VUkw6Omhhc2goKSBjb25zdAoreworICAgIFN0cmluZyBmcmFn
bWVudCA9IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gZnJhZ21lbnQu
aXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICIjIiArIGZyYWdtZW50OworfQorCit2b2lkIERP
TVVSTDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIFN0cmluZyBuZXdIYXNo
ID0gKHZhbHVlWzBdID09ICcjJykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICBt
X2hyZWYuc2V0RnJhZ21lbnRJZGVudGlmaWVyKG5ld0hhc2gpOworfQorCit2b2lkIERPTVVSTDo6
c2V0RmlsZW5hbWUoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1l
LgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1N0cmluZyBET01VUkw6Om9yaWdpbigpIGNv
bnN0Cit7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGhyZWYoKSk7CisgICAgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsKK30KKwor
U3RyaW5nIERPTVVSTDo6Z2V0UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKwordm9pZCBET01VUkw6OmFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBET01VUkw6OmFwcGVuZFBh
cmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgbWUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KK3ZvaWQgRE9NVVJMOjpjbGVh
clBhcmFtZXRlcihjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUu
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gRU5BQkxFKEJMT0IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDEw
MjMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkg
SW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjcsOSBAQAog
I2lmbmRlZiBET01VUkxfaAogI2RlZmluZSBET01VUkxfaAogCi0jaWYgRU5BQkxFKEJMT0IpCi0K
LSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0Lmgi
CisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQwLDMwICszOSw3MCBAQCBjbGFzcyBCbG9iOwogY2xh
c3MgTWVkaWFTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBE
T01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIgeworY2xhc3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVVJMPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IERPTVVSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxET01VUkw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBiYXNl
VVJMKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRE9NVVJMKHVybCwgYmFzZVVSTCkpOyB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01VUkwodXJsLCBlbXB0eVN0cmluZygpKSk7IH0KICAgICB+RE9N
VVJMKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFN0cmluZyBjcmVhdGVPYmpl
Y3RVUkwoTWVkaWFTdHJlYW0qKTsKLSNlbmRpZgotICAgIFN0cmluZyBjcmVhdGVPYmplY3RVUkwo
QmxvYiopOwotICAgIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYpOworICAgIFN0
cmluZyBwcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5wcm90b2NvbCgpICsgIjoiOyB9
CisgICAgdm9pZCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZi5zZXRQ
cm90b2NvbCh2YWx1ZSk7IH0KIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBET01VUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOworICAgIFN0cmluZyB1c2VybmFtZSgpIGNvbnN0IHsgcmV0dXJu
IGhyZWYoKS51c2VyKCk7IH0KKyAgICB2b2lkIHNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYgdmFs
dWUpIHsgbV9ocmVmLnNldFVzZXIodmFsdWUpOyB9CisKKyAgICBTdHJpbmcgcGFzc3dvcmQoKSBj
b25zdCB7IHJldHVybiBocmVmKCkucGFzcygpOyB9CisgICAgdm9pZCBzZXRQYXNzd29yZChjb25z
dCBTdHJpbmcmIHZhbHVlKSB7ICBtX2hyZWYuc2V0UGFzcyh2YWx1ZSk7IH0KKworICAgIFN0cmlu
ZyBob3N0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisgICAg
U3RyaW5nIGhvc3RuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLmhvc3QoKTsgfQorICAgIHZv
aWQgc2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgcG9ydCgpIGNvbnN0
OworICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBwYXRobmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYoKS5wYXRoKCk7IH0KKyAgICB2b2lkIHNldFBhdGhuYW1l
KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHNlYXJjaCgpIGNvbnN0OworICAgIHZvaWQg
c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIGhhc2goKSBjb25zdDsKKyAg
ICB2b2lkIHNldEhhc2goY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dERlc3Ryb3llZCgpOworICAgIFN0cmluZyBmaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGhyZWYo
KS5sYXN0UGF0aENvbXBvbmVudCgpOyB9CisgICAgdm9pZCBzZXRGaWxlbmFtZShjb25zdCBTdHJp
bmcmKTsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOworICAgIFN0cmlu
ZyBvcmlnaW4oKSBjb25zdDsKKworICAgIEtVUkwgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1faHJl
ZjsgfQorICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1faHJlZiA9IEtV
UkwoS1VSTCgpLCB2YWx1ZSk7IH0KKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1faHJlZi5zdHJpbmcoKTsgfQorCisgICAgU3RyaW5nIGdldFBhcmFtZXRlcihjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIGFwcGVuZFBhcmFtZXRlcihjb25zdCBTdHJpbmcmLCBjb25zdCBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KTsKKyAgICB2b2lkIGNsZWFyUGFyYW1ldGVyKGNvbnN0
IFN0cmluZyYpOworCisjaWYgRU5BQkxFKEJMT0IpCisgICAgc3RhdGljIHZvaWQgY29udGV4dERl
c3Ryb3llZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxvYiopOworICAgIHN0YXRp
YyB2b2lkIHJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJik7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9w
dWJsaWNTdHJlYW1VUkxzOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlT2JqZWN0VVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbSopOwogI2VuZGlmCisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICBLVVJMIG1faHJlZjsKKworICAgIERPTVVSTChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShCTE9CKQotCiAjZW5kaWYgLy8gRE9NVVJMX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5p
ZGwJKHJldmlzaW9uIDEwMjMyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBN
b3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI1LDE2ICsyNiwzNSBAQAogCiBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAg
ICAgQ29uZGl0aW9uYWw9QkxPQiwKLSAgICAgICAgT21pdENvbnN0cnVjdG9yLAogICAgICAgICBH
ZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgR2VuZXJhdGVUb0pTLAotICAgICAgICBO
b1N0YXRpY1RhYmxlcworICAgICAgICBSZXBsYWNlYWJsZSwKKyAgICAgICAgQ29uc3RydWN0b3Io
aW4gRE9NU3RyaW5nIHVybCwgaW4gW09wdGlvbmFsPUNhbGxXaXRoTnVsbFZhbHVlXSBET01TdHJp
bmcgYmFzZVVSTCkKICAgICBdIERPTVVSTCB7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcg
cHJvdG9jb2w7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgdXNlcm5hbWU7CisgICAgICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgcGFzc3dvcmQ7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmcgaG9zdDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBob3N0bmFtZTsKKyAgICAgICAg
YXR0cmlidXRlIERPTVN0cmluZyBwb3J0OworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHBh
dGhuYW1lOworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNlYXJjaDsKKyAgICAgICAgYXR0
cmlidXRlIERPTVN0cmluZyBoYXNoOworCisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZmls
ZW5hbWU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgb3JpZ2luOworICAg
ICAgICBzdHJpbmdpZmllciBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhyZWY7CisKKyAgICAgICAgW0Rv
bnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKKyAgICAgICAgRE9NU3RyaW5nIGdldFBhcmFt
ZXRlcihpbiBET01TdHJpbmcgbmFtZSk7CisgICAgICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGlu
IERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmFsdWVzKTsKKyAgICAgICAgdm9pZCBhcHBl
bmRQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZ1tdIHZhbHVlcyk7Cisg
ICAgICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXIoaW4gRE9NU3RyaW5nIG5hbWUpOworCiAjaWYgZGVm
aW5lZChFTkFCTEVfTUVESUFfU1RSRUFNKSAmJiBFTkFCTEVfTUVESUFfU1RSRUFNCi0gICAgICAg
IFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVS
TChpbiBNZWRpYVN0cmVhbSBzdHJlYW0pOworICAgICAgICBzdGF0aWMgW0NvbmRpdGlvbmFsPUJM
T0IsQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBNZWRpYVN0cmVhbSBzdHJlYW0p
OwogI2VuZGlmCi0gICAgICAgIFtDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZF0gRE9NU3Ry
aW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOwotICAgICAgICB2b2lkIHJldm9rZU9i
amVjdFVSTChpbiBET01TdHJpbmcgdXJsKTsKKyAgICAgICAgc3RhdGljIFtDb25kaXRpb25hbD1C
TE9CLENvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkLENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIERPTVN0cmluZyBjcmVhdGVPYmplY3RVUkwoaW4gQmxvYiBibG9iKTsKKyAgICAg
ICAgc3RhdGljIFtDb25kaXRpb25hbD1CTE9CLENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIHZvaWQgcmV2b2tlT2JqZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxMDIzMjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzUsMTUg
KzE5MzUsNiBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0CiAgICAg
ZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPnJ1bk1vZGFsKCk7CiB9CiAKLSNpZiBFTkFC
TEUoQkxPQikKLURPTVVSTCogRE9NV2luZG93Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlm
ICghbV9kb21VUkwgJiYgaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIG1f
ZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
LSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShRVU9U
QSkKIFN0b3JhZ2VJbmZvKiBET01XaW5kb3c6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMTAyMzI1KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ3LDEwICszNDcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2lu
ZG93Pjo6cmVmOwogICAgICAgICB1c2luZyBSZWZDb3VudGVkPERPTVdpbmRvdz46OmRlcmVmOwog
Ci0jaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgIERPTVVSTCogd2Via2l0VVJMKCkgY29uc3Q7Ci0j
ZW5kaWYKLQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgICAgIFBhc3NSZWZQdHI8RGF0
YWJhc2U+IG9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRT
aXplLCBQYXNzUmVmUHRyPERhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0aW9uQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2
aXNpb24gMTAyMzI1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MTMsNyArODEzLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1CTE9CXSBXZWJLaXRCbG9iQnVpbGRlckNvbnN0cnVjdG9y
IFdlYktpdEJsb2JCdWlsZGVyOwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0
aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRlIERPTVVSTENv
bnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1FVT1RBKSAmJiBFTkFC
TEVfUVVPVEEKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPVF1
b3RhXSBTdG9yYWdlSW5mbyB3ZWJraXRTdG9yYWdlSW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMTAyMzI1KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDE1
ICszNzksNiBAQCBFdmVudFRhcmdldERhdGEqIFdvcmtlckNvbnRleHQ6OmVuc3VyZUV2CiAgICAg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKIH0KIAotI2lmIEVOQUJMRShCTE9CKQotRE9NVVJM
KiBXb3JrZXJDb250ZXh0Ojp3ZWJraXRVUkwoKSBjb25zdAotewotICAgIGlmICghbV9kb21VUkwp
Ci0gICAgICAgIG1fZG9tVVJMID0gRE9NVVJMOjpjcmVhdGUodGhpcy0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKLSAgICByZXR1cm4gbV9kb21VUkwuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKIHZvaWQgV29ya2VyQ29udGV4dDo6d2Via2l0UmVxdWVzdEZp
bGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1D
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAko
cmV2aXNpb24gMTAyMzI1KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCArMTMxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFkKCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSNpZiBFTkFC
TEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAgICBlbnVtIEZpbGVTeXN0ZW1UeXBlIHsKICAg
ICAgICAgICAgIFRFTVBPUkFSWSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbAkocmV2aXNpb24gMTAyMzI1KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIG1vZHVs
ZSB0aHJlYWRzIHsKICAgICAgICAgYXR0cmlidXRlIEZpbGVSZWFkZXJTeW5jQ29uc3RydWN0b3Ig
RmlsZVJlYWRlclN5bmM7CiAjZW5kaWYKIAotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0Nv
bmRpdGlvbmFsPUJMT0JdIERPTVVSTCB3ZWJraXRVUkw7CisgICAgICAgIGF0dHJpYnV0ZSBET01V
UkxDb25zdHJ1Y3RvciB3ZWJraXRVUkw7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRF
TVBPUkFSWSA9IDA7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDIzMjUpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0xMi0wNiAgS2F1
c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgVVJMIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcxOTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBJREwgQXR0cmlidXRlcy4gQWRkZWQgdGVz
dCBjYXNlcy4KKworICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9m
LWRvbXVybC1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJM
L2RvbXVybC1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2guaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9z
dG5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9t
dXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9E
T01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwt
YXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNo
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211
cmwtYXR0cmlidXRlLWhyZWYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWw6IEFkZGVkLgor
CiAyMDExLTEyLTA4ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1dLMl0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFu
Y2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACitUZXN0IGluc3RhbmNl
b2YgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgJ3Byb3RvY29sJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UK
K1BBU1MgJ3VzZXJuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3Bhc3N3b3JkJyBp
biB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2hvc3QnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQor
UEFTUyAnaG9zdG5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAncG9ydCcgaW4gd2Vi
a2l0VVJMIGlzIGZhbHNlCitQQVNTICdwYXRobmFtZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQ
QVNTICdzZWFyY2gnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnaGFzaCcgaW4gd2Via2l0
VVJMIGlzIGZhbHNlCitQQVNTICdmaWxlbmFtZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNT
ICdvcmlnaW4nIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAncGFyYW1ldGVyTmFtZXMnIGlu
IHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnZ2V0UGFyYW1ldGVybmFtZScgaW4gd2Via2l0VVJM
IGlzIGZhbHNlCitQQVNTICdnZXRQYXJhbWV0ZXJBbGxuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFs
c2UKK1BBU1MgJ2FwcGVuZFBhcmFtZXRlcicgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdj
bGVhclBhcmFtZXRlcm5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnaHJlZicgaW4g
d2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdjcmVhdGVPYmplY3RVUkwnIGluIHdlYmtpdFVSTCBp
cyB0cnVlCitQQVNTICdyZXZva2VPYmplY3RVUkwnIGluIHdlYmtpdFVSTCBpcyB0cnVlCitQQVNT
IHVybCBpbnN0YW5jZW9mIHdlYmtpdFVSTCBpcyB0cnVlCitQQVNTIHVybC5oYXNPd25Qcm9wZXJ0
eSgnZ2V0UGFyYW1ldGVyJykgaXMgZmFsc2UKK1BBU1MgdXJsLmhhc093blByb3BlcnR5KCdhcHBl
bmRQYXJhbWV0ZXInKSBpcyBmYWxzZQorUEFTUyB1cmwuaGFzT3duUHJvcGVydHkoJ2NsZWFyUGFy
YW1ldGVyJykgaXMgZmFsc2UKK1BBU1MgdXJsLmNyZWF0ZU9iamVjdFVSTCBpcyB1bmRlZmluZWQu
CitQQVNTIHVybC5yZXZva2VPYmplY3RVUkwgaXMgdW5kZWZpbmVkLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTICdwcm90b2NvbCcgaW4gd2Vi
a2l0VVJMIGlzIGZhbHNlCitQQVNTICd1c2VybmFtZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQ
QVNTICdwYXNzd29yZCcgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdob3N0JyBpbiB3ZWJr
aXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2hvc3RuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BB
U1MgJ3BvcnQnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAncGF0aG5hbWUnIGluIHdlYmtp
dFVSTCBpcyBmYWxzZQorUEFTUyAnc2VhcmNoJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1Mg
J2hhc2gnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnZmlsZW5hbWUnIGluIHdlYmtpdFVS
TCBpcyBmYWxzZQorUEFTUyAnb3JpZ2luJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3Bh
cmFtZXRlck5hbWVzJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2dldFBhcmFtZXRlcm5h
bWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnZ2V0UGFyYW1ldGVyQWxsbmFtZScgaW4g
d2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdhcHBlbmRQYXJhbWV0ZXInIGluIHdlYmtpdFVSTCBp
cyBmYWxzZQorUEFTUyAnY2xlYXJQYXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UK
K1BBU1MgJ2hyZWYnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnY3JlYXRlT2JqZWN0VVJM
JyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyAncmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRV
UkwgaXMgdHJ1ZQorUEFTUyB1cmwgaW5zdGFuY2VvZiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyB1
cmwuaGFzT3duUHJvcGVydHkoJ2dldFBhcmFtZXRlcicpIGlzIGZhbHNlCitQQVNTIHVybC5oYXNP
d25Qcm9wZXJ0eSgnYXBwZW5kUGFyYW1ldGVyJykgaXMgZmFsc2UKK1BBU1MgdXJsLmhhc093blBy
b3BlcnR5KCdjbGVhclBhcmFtZXRlcicpIGlzIGZhbHNlCitQQVNTIHVybC5jcmVhdGVPYmplY3RV
UkwgaXMgdW5kZWZpbmVkLgorUEFTUyB1cmwucmV2b2tlT2JqZWN0VVJMIGlzIHVuZGVmaW5lZC4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVu
Y3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2No
ZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9u
cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFuZCBwcm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4iKTsK
KwordmFyIHVybCA9IG5ldyB3ZWJraXRVUkwoInd3dy53ZWJraXQub3JnIik7CisKK3Nob3VsZEJl
RmFsc2UoIidwcm90b2NvbCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIndXNlcm5h
bWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3Bhc3N3b3JkJyBpbiB3ZWJraXRV
UkwiKTsKK3Nob3VsZEJlRmFsc2UoIidob3N0JyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFs
c2UoIidob3N0bmFtZScgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncG9ydCcgaW4g
d2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncGF0aG5hbWUnIGluIHdlYmtpdFVSTCIpOwor
c2hvdWxkQmVGYWxzZSgiJ3NlYXJjaCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIn
aGFzaCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInZmlsZW5hbWUnIGluIHdlYmtp
dFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ29yaWdpbicgaW4gd2Via2l0VVJMIik7CitzaG91bGRC
ZUZhbHNlKCIncGFyYW1ldGVyTmFtZXMnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgi
J2dldFBhcmFtZXRlcm5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2dldFBh
cmFtZXRlckFsbG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2FwcGVuZFBh
cmFtZXRlcicgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInY2xlYXJQYXJhbWV0ZXJu
YW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidocmVmJyBpbiB3ZWJraXRVUkwi
KTsKKworc2hvdWxkQmVUcnVlKCInY3JlYXRlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKK3No
b3VsZEJlVHJ1ZSgiJ3Jldm9rZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIik7CisKK3Nob3VsZEJl
VHJ1ZSgidXJsIGluc3RhbmNlb2Ygd2Via2l0VVJMIikKK3Nob3VsZEJlRmFsc2UoInVybC5oYXNP
d25Qcm9wZXJ0eSgnZ2V0UGFyYW1ldGVyJykiKQorc2hvdWxkQmVGYWxzZSgidXJsLmhhc093blBy
b3BlcnR5KCdhcHBlbmRQYXJhbWV0ZXInKSIpCitzaG91bGRCZUZhbHNlKCJ1cmwuaGFzT3duUHJv
cGVydHkoJ2NsZWFyUGFyYW1ldGVyJykiKQorc2hvdWxkQmVVbmRlZmluZWQoInVybC5jcmVhdGVP
YmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwucmV2b2tlT2JqZWN0VVJMIik7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBp
bnN0YW5jZW9mIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuIik7CisKK3Zh
ciB1cmwgPSBuZXcgd2Via2l0VVJMKCJ3d3cud2Via2l0Lm9yZyIpOworCitzaG91bGRCZUZhbHNl
KCIncHJvdG9jb2wnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3VzZXJuYW1lJyBp
biB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidwYXNzd29yZCcgaW4gd2Via2l0VVJMIik7
CitzaG91bGRCZUZhbHNlKCInaG9zdCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIn
aG9zdG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3BvcnQnIGluIHdlYmtp
dFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3BhdGhuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3Vs
ZEJlRmFsc2UoIidzZWFyY2gnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2hhc2gn
IGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2ZpbGVuYW1lJyBpbiB3ZWJraXRVUkwi
KTsKK3Nob3VsZEJlRmFsc2UoIidvcmlnaW4nIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxz
ZSgiJ3BhcmFtZXRlck5hbWVzJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidnZXRQ
YXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidnZXRQYXJhbWV0
ZXJBbGxuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidhcHBlbmRQYXJhbWV0
ZXInIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2NsZWFyUGFyYW1ldGVybmFtZScg
aW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInaHJlZicgaW4gd2Via2l0VVJMIik7CisK
K3Nob3VsZEJlVHJ1ZSgiJ2NyZWF0ZU9iamVjdFVSTCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRC
ZVRydWUoIidyZXZva2VPYmplY3RVUkwnIGluIHdlYmtpdFVSTCIpOworCitzaG91bGRCZVRydWUo
InVybCBpbnN0YW5jZW9mIHdlYmtpdFVSTCIpCitzaG91bGRCZUZhbHNlKCJ1cmwuaGFzT3duUHJv
cGVydHkoJ2dldFBhcmFtZXRlcicpIikKK3Nob3VsZEJlRmFsc2UoInVybC5oYXNPd25Qcm9wZXJ0
eSgnYXBwZW5kUGFyYW1ldGVyJykiKQorc2hvdWxkQmVGYWxzZSgidXJsLmhhc093blByb3BlcnR5
KCdjbGVhclBhcmFtZXRlcicpIikKK3Nob3VsZEJlVW5kZWZpbmVkKCJ1cmwuY3JlYXRlT2JqZWN0
VVJMIik7CitzaG91bGRCZVVuZGVmaW5lZCgidXJsLnJldm9rZU9iamVjdFVSTCIpOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2gtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1h
dHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAK
K1Rlc3Qgc2V0dGluZyB0aGUgaGFzaCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0hhc2ggdmFsdWUgc3RhcnQgd2l0aCAjCitQQVNTIGRv
bXVybC5oYXNoIGlzICIjbWlkZGxlIgorJz8nIGluIGhhc2ggdmFsdWUKK1BBU1MgZG9tdXJsLmhh
c2ggaXMgIiNoYXNoP3ZhbHVlIgorJyMnIGluIGhhc2ggdmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJh
Y3RlcnMgaW4gaG9zdG5hbWUKK1BBU1MgZG9tdXJsLmhhc2ggaXMgIiIKK251bGwgaGFzaAorUEFT
UyBkb211cmwuaGFzaCBpcyAiIgoraGFzaCB0byBtYWlsdG86IHByb3RvY29sCitQQVNTIGRvbXVy
bC5oYXNoIGlzICIjaGFzaC12YWx1ZSIKK0FkZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2Nv
bAorUEFTUyBkb211cmwuaGFzaCBpcyAiI2hhc2giCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hhc2ggdmFsdWUgc3RhcnQgd2l0aCAjCitQQVNTIGRv
bXVybC5oYXNoIGlzICIjbWlkZGxlIgorJz8nIGluIGhhc2ggdmFsdWUKK1BBU1MgZG9tdXJsLmhh
c2ggaXMgIiNoYXNoP3ZhbHVlIgorJyMnIGluIGhhc2ggdmFsdWUsIGFuZCBpbGxlZ2FsIGNoYXJh
Y3RlcnMgaW4gaG9zdG5hbWUKK1BBU1MgZG9tdXJsLmhhc2ggaXMgIiIKK251bGwgaGFzaAorUEFT
UyBkb211cmwuaGFzaCBpcyAiIgoraGFzaCB0byBtYWlsdG86IHByb3RvY29sCitQQVNTIGRvbXVy
bC5oYXNoIGlzICIjaGFzaC12YWx1ZSIKK0FkZCBoYXNoIHRvIG5vbi1zdGFuZGFyZCBwcm90b2Nv
bAorUEFTUyBkb211cmwuaGFzaCBpcyAiI2hhc2giCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2RvbXVybC1hdHRyaWJ1dGUtaGFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2guaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhhc2guaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBz
ZXR0aW5nIHRoZSBoYXNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCitkZWJ1ZygiSGFz
aCB2YWx1ZSBzdGFydCB3aXRoICMiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRw
czovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiI21pZGRsZSIpOworCitkZWJ1Zygi
Jz8nIGluIGhhc2ggdmFsdWUiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwOi8v
d3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3ZhbHVlIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNoP3ZhbHVlIik7CisKK2RlYnVnKCIn
IycgaW4gaGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBob3N0bmFtZSIpOwor
dmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15XCJkKCl7fXx+b20/YWlu
I2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9tdXJsLmhhc2giLCAiIik7CisKK2RlYnVnKCJudWxsIGhhc2giKTsKK3ZhciBkb211cmwgPSBu
ZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90ZXN0dXJsLmh0bWwj
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiIpOworCitkZWJ1Zygi
aGFzaCB0byBtYWlsdG86IHByb3RvY29sIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgi
bWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSNoYXNoLXZhbHVlIik7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNoLXZhbHVlIik7CisKK2RlYnVnKCJBZGQg
aGFzaCB0byBub24tc3RhbmRhcmQgcHJvdG9jb2wiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0
VVJMKCJmb286YmFyI2hhc2giKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2gi
LCAiI2hhc2giKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBzZXR0aW5nIHRoZSBoYXNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOwor
CitkZWJ1ZygiSGFzaCB2YWx1ZSBzdGFydCB3aXRoICMiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Vi
a2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1cmwuaHRtbCNt
aWRkbGUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiI21pZGRsZSIp
OworCitkZWJ1ZygiJz8nIGluIGhhc2ggdmFsdWUiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0
VVJMKCJodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNoYXNoP3ZhbHVl
Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNoP3ZhbHVlIik7
CisKK2RlYnVnKCInIycgaW4gaGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBo
b3N0bmFtZSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15XCJk
KCl7fXx+b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiIik7CisKK2RlYnVnKCJudWxsIGhhc2giKTsKK3Zh
ciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC90
ZXN0dXJsLmh0bWwjIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiIp
OworCitkZWJ1ZygiaGFzaCB0byBtYWlsdG86IHByb3RvY29sIik7Cit2YXIgZG9tdXJsID0gbmV3
IHdlYmtpdFVSTCgibWFpbHRvOmUtbWFpbF9hZGRyZXNzQGdvZXNfaGVyZSNoYXNoLXZhbHVlIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNoLXZhbHVlIik7CisK
K2RlYnVnKCJBZGQgaGFzaCB0byBub24tc3RhbmRhcmQgcHJvdG9jb2wiKTsKK3ZhciBkb211cmwg
PSBuZXcgd2Via2l0VVJMKCJmb286YmFyI2hhc2giKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9tdXJsLmhhc2giLCAiI2hhc2giKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2Rv
bXVybC1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorVGVzdCBzZXR0aW5nIHRoZSBob3N0IGF0dHJp
YnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFz
aWMgdGVzdAorUEFTUyBkb211cmwuaG9zdCBpcyAid3d3Lm15ZG9tYWluLmNvbTo4MDgwIgorRGVm
YXVsdAorUEFTUyBkb211cmwuaG9zdCBpcyAid3d3Lm90aGVyZG9tYWluLmNvbSIKK0hvc3QgVVJM
IGNvbnRhaW5pbmcgdXNlcm5hbWUKK1BBU1MgZG9tdXJsLmhvc3QgaXMgImRvbWFpbi5jb206MjUi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0Jhc2lj
IHRlc3QKK1BBU1MgZG9tdXJsLmhvc3QgaXMgInd3dy5teWRvbWFpbi5jb206ODA4MCIKK0RlZmF1
bHQKK1BBU1MgZG9tdXJsLmhvc3QgaXMgInd3dy5vdGhlcmRvbWFpbi5jb20iCitIb3N0IFVSTCBj
b250YWluaW5nIHVzZXJuYW1lCitQQVNTIGRvbXVybC5ob3N0IGlzICJkb21haW4uY29tOjI1Igor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0
ZS1ob3N0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhl
IERPTVVSTC4nKTsKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Vi
a2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb211cmwuaG9zdCIsICJ3d3cubXlkb21haW4uY29tOjgwODAiKTsKKwor
ZGVidWcoIkRlZmF1bHQiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3
dy5vdGhlcmRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJs
Lmhvc3QiLCAid3d3Lm90aGVyZG9tYWluLmNvbSIpOworCitkZWJ1ZygiSG9zdCBVUkwgY29udGFp
bmluZyB1c2VybmFtZSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vcnd3
bXlAZG9tYWluLmNvbToyNS9wYS4udGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVy
bC5ob3N0IiwgImRvbWFpbi5jb206MjUiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIGhvc3QgYXR0cmlidXRlIG9m
IHRoZSBET01VUkwuJyk7CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3
IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3QiLCAid3d3Lm15ZG9tYWluLmNvbTo4MDgwIik7
CisKK2RlYnVnKCJEZWZhdWx0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6
Ly93d3cub3RoZXJkb21haW4uY29tL3BhdGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRv
bXVybC5ob3N0IiwgInd3dy5vdGhlcmRvbWFpbi5jb20iKTsKKworZGVidWcoIkhvc3QgVVJMIGNv
bnRhaW5pbmcgdXNlcm5hbWUiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczov
L3J3d215QGRvbWFpbi5jb206MjUvcGEuLnRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b211cmwuaG9zdCIsICJkb21haW4uY29tOjI1Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhv
c3RuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAorVGVzdCBz
ZXR0aW5nIHRoZSBob3N0bmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgZG9tdXJsLmhvc3RuYW1lIGlz
ICJ3d3cubXlkb21haW4uY29tIgorSG9zdG5hbWUgd2l0aCBmb286IHByb3RvY29sCitQQVNTIGRv
bXVybC5ob3N0bmFtZSBpcyAid3d3Lm15ZG9tYWluLmNvbSIKK1NldCBkb211cmwgaG9zdG5hbWUg
dGhhdCBjb250YWlucyBzcGFjZSBpbiBpdAorUEFTUyBkb211cmwuaG9zdG5hbWUgaXMgIiIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorQmFzaWMgdGVz
dAorUEFTUyBkb211cmwuaG9zdG5hbWUgaXMgInd3dy5teWRvbWFpbi5jb20iCitIb3N0bmFtZSB3
aXRoIGZvbzogcHJvdG9jb2wKK1BBU1MgZG9tdXJsLmhvc3RuYW1lIGlzICJ3d3cubXlkb21haW4u
Y29tIgorU2V0IGRvbXVybCBob3N0bmFtZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGluIGl0CitQQVNT
IGRvbXVybC5ob3N0bmFtZSBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1l
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3Qgc2V0dGluZyB0aGUgaG9zdG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK2Rl
YnVnKCJCYXNpYyB0ZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tOjgwODAvcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9t
dXJsLmhvc3RuYW1lIiwgInd3dy5teWRvbWFpbi5jb20iKTsKKworZGVidWcoIkhvc3RuYW1lIHdp
dGggZm9vOiBwcm90b2NvbCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImZvbzovL3d3
dy5teWRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhv
c3RuYW1lIiwgInd3dy5teWRvbWFpbi5jb20iKTsKKworZGVidWcoIlNldCBkb211cmwgaG9zdG5h
bWUgdGhhdCBjb250YWlucyBzcGFjZSBpbiBpdCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRV
UkwoImh0dHA6Ly93d3cubXkgZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb211cmwuaG9zdG5hbWUiLCAiIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBob3N0bmFtZSBhdHRyaWJ1
dGUgb2YgdGhlIERPTVVSTC4nKTsKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK3ZhciBkb211cmwg
PSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyIpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuaG9zdG5hbWUiLCAid3d3Lm15ZG9tYWluLmNv
bSIpOworCitkZWJ1ZygiSG9zdG5hbWUgd2l0aCBmb286IHByb3RvY29sIik7Cit2YXIgZG9tdXJs
ID0gbmV3IHdlYmtpdFVSTCgiZm9vOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkb211cmwuaG9zdG5hbWUiLCAid3d3Lm15ZG9tYWluLmNvbSIpOwor
CitkZWJ1ZygiU2V0IGRvbXVybCBob3N0bmFtZSB0aGF0IGNvbnRhaW5zIHNwYWNlIGluIGl0Iik7
Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cDovL3d3dy5teSBkb21haW4uY29tL3Bh
dGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5ob3N0bmFtZSIsICIiKTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wYXRobmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5h
bWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9N
VVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI0IEBACitUZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0ZSBvZiB0
aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQmFzaWMgVGVzdAor
UEFTUyBkb211cmwucGF0aG5hbWUgaXMgIi9wYXRoL3Rlc3R1cmwuaHRtbCIKK1BhdGhuYW1lIHdp
dGggc3ltYm9scworUEFTUyBkb211cmwucGF0aG5hbWUgaXMgIi9wYSUzRnRoIgorcGF0aG5hbWUg
dG8gbnVsbAorUEFTUyBkb211cmwucGF0aG5hbWUgaXMgIi8iCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0Jhc2ljIFRlc3QKK1BBU1MgZG9tdXJsLnBh
dGhuYW1lIGlzICIvcGF0aC90ZXN0dXJsLmh0bWwiCitQYXRobmFtZSB3aXRoIHN5bWJvbHMKK1BB
U1MgZG9tdXJsLnBhdGhuYW1lIGlzICIvcGElM0Z0aCIKK3BhdGhuYW1lIHRvIG51bGwKK1BBU1Mg
ZG9tdXJsLnBhdGhuYW1lIGlzICIvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1l
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rl
c3Qgc2V0dGluZyB0aGUgcGF0aG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK2Rl
YnVnKCJCYXNpYyBUZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93
d3cubXlkb21haW4uY29tL3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb211cmwucGF0aG5hbWUiLCAiL3BhdGgvdGVzdHVybC5odG1sIik7CisK
K2RlYnVnKCJQYXRobmFtZSB3aXRoIHN5bWJvbHMiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0
VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGElM0Z0aD9rZXk9dmFsdWUiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnBhdGhuYW1lIiwgIi9wYSUzRnRoIik7CisKK2RlYnVn
KCJwYXRobmFtZSB0byBudWxsIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6
Ly93d3cubXlkb21haW4uY29tLz9rZXk9dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
ZG9tdXJsLnBhdGhuYW1lIiwgIi8iKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHBhdGhuYW1lIGF0dHJpYnV0ZSBv
ZiB0aGUgRE9NVVJMLicpOworCitkZWJ1ZygiQmFzaWMgVGVzdCIpOwordmFyIGRvbXVybCA9IG5l
dyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbD9r
ZXk9dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnBhdGhuYW1lIiwgIi9w
YXRoL3Rlc3R1cmwuaHRtbCIpOworCitkZWJ1ZygiUGF0aG5hbWUgd2l0aCBzeW1ib2xzIik7Cit2
YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhJTNG
dGg/a2V5PXZhbHVlIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wYXRobmFtZSIs
ICIvcGElM0Z0aCIpOworCitkZWJ1ZygicGF0aG5hbWUgdG8gbnVsbCIpOwordmFyIGRvbXVybCA9
IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15ZG9tYWluLmNvbS8/a2V5PXZhbHVlIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wYXRobmFtZSIsICIvIik7CisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJM
L2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorVGVz
dCBnZXR0aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworRGVmYXVsdCBvciBVbnNwZWNpZmllZCBwb3J0IGlzIGVtcHR5
CitQQVNTIGRvbXVybC5wb3J0IGlzICcnCitFbXB0eSBwb3J0IHNob3VsZCBiZSBlbXB0eQorUEFT
UyBkb211cmwucG9ydCBpcyAnJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitEZWZhdWx0IG9yIFVuc3BlY2lmaWVkIHBvcnQgaXMgZW1wdHkKK1BBU1Mg
ZG9tdXJsLnBvcnQgaXMgJycKK0VtcHR5IHBvcnQgc2hvdWxkIGJlIGVtcHR5CitQQVNTIGRvbXVy
bC5wb3J0IGlzICcnCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtcG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9k
b211cmwtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0MCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBnZXR0aW5nIHRoZSBwb3J0IGF0
dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgi
aHR0cDovL3dlYmtpdC5vcmciKTsKK2RlYnVnKCJEZWZhdWx0IG9yIFVuc3BlY2lmaWVkIHBvcnQg
aXMgZW1wdHkiKTsKK3Nob3VsZEJlKCJkb211cmwucG9ydCIsICInJyIpOworCit2YXIgZG9tdXJs
ID0gbmV3IHdlYmtpdFVSTCgiaHR0cDovL3dlYmtpdC5vcmc6LyIpOworZGVidWcoIkVtcHR5IHBv
cnQgc2hvdWxkIGJlIGVtcHR5Iik7CitzaG91bGRCZSgiZG9tdXJsLnBvcnQiLCAiJyciKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBnZXR0
aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCit2YXIgZG9tdXJsID0g
bmV3IHdlYmtpdFVSTCgiaHR0cDovL3dlYmtpdC5vcmciKTsKK2RlYnVnKCJEZWZhdWx0IG9yIFVu
c3BlY2lmaWVkIHBvcnQgaXMgZW1wdHkiKTsKK3Nob3VsZEJlKCJkb211cmwucG9ydCIsICInJyIp
OworCit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cDovL3dlYmtpdC5vcmc6LyIpOwor
ZGVidWcoIkVtcHR5IHBvcnQgc2hvdWxkIGJlIGVtcHR5Iik7CitzaG91bGRCZSgiZG9tdXJsLnBv
cnQiLCAiJyciKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0
cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBzZXR0aW5nIHRoZSBwcm90b2NvbCBh
dHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0Jhc2ljIHRlc3QKK1BBU1MgZG9tdXJsLnByb3RvY29sIGlzICJodHRwLWZvbzoiCitQcm90b2Nv
bCBvbiBtYWxmb3JtZWQgVVJMCitQQVNTIGRvbXVybC5wcm90b2NvbCBpcyAiZm9vOiIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorQmFzaWMgdGVzdAor
UEFTUyBkb211cmwucHJvdG9jb2wgaXMgImh0dHAtZm9vOiIKK1Byb3RvY29sIG9uIG1hbGZvcm1l
ZCBVUkwKK1BBU1MgZG9tdXJsLnByb3RvY29sIGlzICJmb286IgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0
cmlidXRlLXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgcHJvdG9jb2wgYXR0cmlidXRlIG9mIHRoZSBE
T01VUkwuJyk7CisKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Vi
a2l0VVJMKCJodHRwLWZvbzovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygiZG9tdXJsLnByb3RvY29sIiwiaHR0cC1mb286Iik7CisKK2RlYnVnKCJQcm90
b2NvbCBvbiBtYWxmb3JtZWQgVVJMIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiZm9v
Oj8/YmFyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wcm90b2NvbCIsICJmb286
Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorPCFET0NUWVBFIEhUTUw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbign
VGVzdCBzZXR0aW5nIHRoZSBwcm90b2NvbCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4nKTsKKwor
CitkZWJ1ZygiQmFzaWMgdGVzdCIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHAt
Zm9vOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b211cmwucHJvdG9jb2wiLCJodHRwLWZvbzoiKTsKKworZGVidWcoIlByb3RvY29sIG9uIG1hbGZv
cm1lZCBVUkwiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJmb286Pz9iYXIiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnByb3RvY29sIiwgImZvbzoiKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01V
UkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJs
LWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMy
IEBACitUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIFRlc3QKK1BBU1MgZG9tdXJsLnNl
YXJjaCBpcyAiP2tleT12YWx1ZSIKK1NlYXJjaCB0aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29u
dGFpbnMgc3BhY2VzCitQQVNTIGRvbXVybC5zZWFyY2ggaXMgIj92YWwlMjB1ZT0lMjBrZXk/Igor
U2VhcmNoIG9uIG1hbGZvcm1lZCBVUkwKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiPyUiCitTZWFy
Y2ggY29udGFpbmluZyAnIycKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiP2tleT12YWx1ZSIKK1Nl
YXJjaCB0byBlbXB0eQorUEFTUyBkb211cmwuc2VhcmNoIGlzICIiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0Jhc2ljIFRlc3QKK1BBU1MgZG9tdXJs
LnNlYXJjaCBpcyAiP2tleT12YWx1ZSIKK1NlYXJjaCB0aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQg
Y29udGFpbnMgc3BhY2VzCitQQVNTIGRvbXVybC5zZWFyY2ggaXMgIj92YWwlMjB1ZT0lMjBrZXk/
IgorU2VhcmNoIG9uIG1hbGZvcm1lZCBVUkwKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiPyUiCitT
ZWFyY2ggY29udGFpbmluZyAnIycKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiP2tleT12YWx1ZSIK
K1NlYXJjaCB0byBlbXB0eQorUEFTUyBkb211cmwuc2VhcmNoIGlzICIiCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1zZWFyY2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorPCFET0NU
WVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRlIG9mIHRoZSBET01V
UkwuJyk7CisKK2RlYnVnKCJCYXNpYyBUZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVS
TCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSIpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj9rZXk9dmFsdWUiKTsKKworZGVidWcoIlNl
YXJjaCB0aGF0IHN0YXJ0cyB3aXRoICc/JyBhbmQgY29udGFpbnMgc3BhY2VzIik7Cit2YXIgZG9t
dXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbCUy
MHVlPSUyMGtleT8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnNlYXJjaCIsICI/
dmFsJTIwdWU9JTIwa2V5PyIpOworCitkZWJ1ZygiU2VhcmNoIG9uIG1hbGZvcm1lZCBVUkwiKTsK
K3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJzOnd3dy5teWRvbWFpbi5jb20vcGF0aC8/JSIp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj8lIik7CisKK2RlYnVn
KCJTZWFyY2ggY29udGFpbmluZyAnIyciKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlI2hhc2giKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiZG9tdXJsLnNlYXJjaCIsICI/a2V5PXZhbHVlIik7CisKK2RlYnVnKCJT
ZWFyY2ggdG8gZW1wdHkiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3
dy5teWRvbWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnNl
YXJjaCIsICIiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cis8IURPQ1RZUEUg
SFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHNlYXJjaCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4n
KTsKKworZGVidWcoIkJhc2ljIFRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJo
dHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/a2V5PXZhbHVlIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImRvbXVybC5zZWFyY2giLCAiP2tleT12YWx1ZSIpOworCitkZWJ1ZygiU2VhcmNo
IHRoYXQgc3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBzcGFjZXMiKTsKK3ZhciBkb211cmwg
PSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8/dmFsJTIwdWU9
JTIwa2V5PyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj92YWwl
MjB1ZT0lMjBrZXk/Iik7CisKK2RlYnVnKCJTZWFyY2ggb24gbWFsZm9ybWVkIFVSTCIpOwordmFy
IGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoInM6d3d3Lm15ZG9tYWluLmNvbS9wYXRoLz8lIik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5zZWFyY2giLCAiPyUiKTsKKworZGVidWcoIlNl
YXJjaCBjb250YWluaW5nICcjJyIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBz
Oi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoLz9rZXk9dmFsdWUjaGFzaCIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkb211cmwuc2VhcmNoIiwgIj9rZXk9dmFsdWUiKTsKKworZGVidWcoIlNlYXJj
aCB0byBlbXB0eSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vd3d3Lm15
ZG9tYWluLmNvbS9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211cmwuc2VhcmNo
IiwgIiIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJp
bmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1
dGUtaHJlZi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Qg
c3RyaW5naWZpZXIgcHJvcGVydHkgb2YgaHJlZiBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdXJsLnRvU3RyaW5nKCkgaXMgdXJs
LmhyZWYKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
UEFTUyB1cmwudG9TdHJpbmcoKSBpcyB1cmwuaHJlZgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0
ZS1ocmVmLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
c3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5naWZpZXIgcHJvcGVydHkg
b2YgaHJlZiBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJr
aXRVUkwoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKTsKK3Nob3VsZEJlKCJ1cmwudG9TdHJpbmco
KSIsICJ1cmwuaHJlZiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IHN0cmluZ2lmaWVyIHByb3BlcnR5IG9mIGhyZWYgYXR0cmlidXRlIG9m
IHRoZSBET01VUkwuIik7CisKK3ZhciB1cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwOi8vd3d3LmV4
YW1wbGUuY29tIik7CitzaG91bGRCZSgidXJsLnRvU3RyaW5nKCkiLCAidXJsLmhyZWYiKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="118168"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118687</attachid>
            <date>2011-12-10 00:28:16 -0800</date>
            <delta_ts>2012-01-20 01:55:16 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>71968_patch.txt</filename>
            <type>text/plain</type>
            <size>41590</size>
            <attacher name="Kaustubh Atrawalkar">kaustubh.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjUxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDExLTEyLTA2ICBLYXVzdHVi
aCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPiAmJiBFcmlrIEFydmlkc3NvbiA8
YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgVVJMIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5NjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0
aW9uIG9mIERPTVVSTCBJREwgYXR0cmlidXRlcy4KKyAgICAgICAgQ2hhbmdlZCB0byBzdGF0aWMg
Y2xhc3MgbWV0aG9kcyBmb3IgY3JlYXRlT2JqZWN0VVJMICYgcmV2b2tlT2JqZWN0VVJMCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZG9tL0RPTVVSTC9jaGVjay1pbnN0YW5jZW9mLWRvbXVybC1mdW5j
dGlvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1
dGUtaGFzaC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJp
YnV0ZS1ob3N0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0
cmlidXRlLWhvc3RuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRE9N
VVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9jb2wuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbAorCisg
ICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpET01V
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6aG9z
dCk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpzZXRIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OnBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZWFyY2gp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVVJMOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0SGFzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01VUkw6OnNldEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVVSTDo6b3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6Z2V0UGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVVSTDo6Y2xlYXJQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvRE9NVVJM
Lmg6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01VUkw6OnByb3RvY29sKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6c2V0UHJvdG9j
b2wpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjp1c2VybmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01VUkw6OnNldFVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6cGFz
c3dvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRQYXNzd29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6Omhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6
cGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpmaWxlbmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01VUkw6OmhyZWYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVVJMOjpzZXRI
cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVVSTDo6dG9TdHJpbmcpOgorICAgICAgICAqIGh0
bWwvRE9NVVJMLmlkbDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKIDIwMTEtMTIt
MDkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHRoZSBGaWxlU3lzdGVtIGZ1bmN0aW9ucyBvZiBpT1MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5j
cHAJKHJldmlzaW9uIDEwMjUxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBN
b3Rvcm9sYSBNb2JpbGl0eSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI0LDU2ICsyNSw5OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShCTE9CKQotCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisK
KyNpZiBFTkFCTEUoQkxPQikKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5o
IgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgotI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+Ci0KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVJlZ2lzdHJ5LmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURP
TVVSTDo6RE9NVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCi0gICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQorI2lmIEVOQUJMRShCTE9CKQorY2xhc3MgUHVibGljVVJMTWFuYWdlcjsKK3R5cGVkZWYg
SGFzaE1hcDxTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgT3duUHRyPFB1YmxpY1VSTE1hbmFnZXI+
ID4gUHVibGljVVJMTWFuYWdlck1hcDsKK3N0YXRpYyBQdWJsaWNVUkxNYW5hZ2VyTWFwJiBwdWJs
aWNVUkxNYW5hZ2VyTWFwKCk7CisKK2NsYXNzIFB1YmxpY1VSTE1hbmFnZXIgOiBwdWJsaWMgQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFB1YmxpY1VS
TE1hbmFnZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
KyAgICAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkKKyAgICB7Cisg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgYmxvYlVSTHNFbmQgPSBtX2Jsb2JVUkxz
LmVuZCgpOworICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3IgaXRlciA9IG1f
YmxvYlVSTHMuYmVnaW4oKTsgaXRlciAhPSBibG9iVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRV
UkxTdHJpbmcsICppdGVyKSk7CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgICAgICBI
YXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIHN0cmVhbVVSTHNFbmQgPSBtX3N0cmVhbVVSTHMuZW5k
KCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVyID0gbV9zdHJl
YW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gc3RyZWFtVVJMc0VuZDsgKytpdGVyKQorICAgICAgICAg
ICAgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKS51bnJlZ2lzdGVyTWVkaWFTdHJlYW1V
UkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsICppdGVyKSk7CisjZW5kaWYKKworICAgICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwor
ICAgICAgICBwdWJsaWNVUkxNYW5hZ2VyTWFwKCkucmVtb3ZlKGNvbnRleHQpOworICAgIH0KKwor
ICAgIEhhc2hTZXQ8U3RyaW5nPiYgYmxvYlVSTHMoKSB7IHJldHVybiBtX2Jsb2JVUkxzOyB9Cisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMo
KSB7IHJldHVybiBtX3N0cmVhbVVSTHM7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX2Jsb2JVUkxzOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgSGFz
aFNldDxTdHJpbmc+IG1fc3RyZWFtVVJMczsKKyNlbmRpZgorfTsKKworc3RhdGljIFB1YmxpY1VS
TE1hbmFnZXJNYXAmIHB1YmxpY1VSTE1hbmFnZXJNYXAoKQogeworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUHVibGljVVJMTWFuYWdlck1hcCwgc3RhdGljUHVibGljVVJMTWFuYWdlcnMsICgpKTsK
KyAgICByZXR1cm4gc3RhdGljUHVibGljVVJMTWFuYWdlcnM7CiB9CiAKLURPTVVSTDo6fkRPTVVS
TCgpCitzdGF0aWMgUHVibGljVVJMTWFuYWdlciYgcHVibGljVVJMTWFuYWdlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogeworICAgIFB1YmxpY1VSTE1h
bmFnZXJNYXAmIG1hcCA9IHB1YmxpY1VSTE1hbmFnZXJNYXAoKTsKKyAgICBPd25QdHI8UHVibGlj
VVJMTWFuYWdlcj4mIG1hbmFnZXIgPSBtYXAuYWRkKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG51
bGxwdHIpLmZpcnN0LT5zZWNvbmQ7CisgICAgaWYgKCFtYW5hZ2VyKQorICAgICAgICBtYW5hZ2Vy
ID0gYWRvcHRQdHIobmV3IFB1YmxpY1VSTE1hbmFnZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkp
OworICAgIHJldHVybiAqbWFuYWdlcjsKIH0KIAotdm9pZCBET01VUkw6OmNvbnRleHREZXN0cm95
ZWQoKQorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgcHVibGljQmxvYlVSTHMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKLSAgICBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotCi0gICAgSGFzaFNldDxTdHJpbmc+
OjppdGVyYXRvciBwdWJsaWNCbG9iVVJMc0VuZCA9IG1fcHVibGljQmxvYlVSTHMuZW5kKCk7Ci0g
ICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3B1YmxpY0Jsb2JVUkxz
LmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljQmxvYlVSTHNFbmQ7ICsraXRlcikKLSAgICAgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoS1VSTChQYXJzZWRVUkxTdHJp
bmcsICppdGVyKSk7CisgICAgcmV0dXJuIHB1YmxpY1VSTE1hbmFnZXIoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkuYmxvYlVSTHMoKTsKK30KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAg
SGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBwdWJsaWNTdHJlYW1VUkxzRW5kID0gbV9wdWJsaWNT
dHJlYW1VUkxzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdGVy
ID0gbV9wdWJsaWNTdHJlYW1VUkxzLmJlZ2luKCk7IGl0ZXIgIT0gcHVibGljU3RyZWFtVVJMc0Vu
ZDsgKytpdGVyKQotICAgICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnVucmVn
aXN0ZXJNZWRpYVN0cmVhbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0ZXIpKTsKLSNlbmRp
Zgorc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgcHVibGljU3RyZWFtVVJMcyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIHJldHVybiBwdWJsaWNV
UkxNYW5hZ2VyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnN0cmVhbVVSTHMoKTsKIH0KIAotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoTWVk
aWFTdHJlYW0qIHN0cmVhbSkKK1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBNZWRpYVN0cmVhbSogc3Ry
ZWFtKQogewotICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCisg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzdHJlYW0pCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIEtVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGlj
VVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgS1VS
TCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKHB1YmxpY1VSTC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtODEsNTAgKzEyNSwyMTAgQEAgU3RyaW5nIERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKE1lZGlhU3RyZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKICAgICBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpLnJlZ2lzdGVyTWVkaWFT
dHJlYW1VUkwocHVibGljVVJMLCBzdHJlYW0pOwotICAgIG1fcHVibGljU3RyZWFtVVJMcy5hZGQo
cHVibGljVVJMLnN0cmluZygpKTsKKyAgICBwdWJsaWNTdHJlYW1VUkxzKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLmFkZChwdWJsaWNVUkwuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHB1YmxpY1VS
TC5zdHJpbmcoKTsKIH0KICNlbmRpZgogCi1TdHJpbmcgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwo
QmxvYiogYmxvYikKK1N0cmluZyBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG9iKiBibG9iKQogewotICAgIGlm
ICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFibG9iKQorICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCB8fCAhYmxvYikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAg
S1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JV
Ukw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdp
bigpKTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKHB1Ymxp
Y1VSTCwgYmxvYi0+dXJsKCkpOwotICAgIG1fcHVibGljQmxvYlVSTHMuYWRkKHB1YmxpY1VSTC5z
dHJpbmcoKSk7CisgICAgcHVibGljQmxvYlVSTHMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuYWRk
KHB1YmxpY1VSTC5zdHJpbmcoKSk7CiAKICAgICByZXR1cm4gcHVibGljVVJMLnN0cmluZygpOwog
fQogCi12b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KQordm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBp
ZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3RyaW5n
KTsKIAotICAgIGlmIChtX3B1YmxpY0Jsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsK
KyAgICBIYXNoU2V0PFN0cmluZz4mIGJsb2JVUkxzID0gcHVibGljQmxvYlVSTHMoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CisgICAgaWYgKGJsb2JVUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkp
IHsKICAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwodXJs
KTsKLSAgICAgICAgbV9wdWJsaWNCbG9iVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKKyAgICAg
ICAgYmxvYlVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQotCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLSAgICBpZiAobV9wdWJsaWNTdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJp
bmcoKSkpIHsKKyAgICBIYXNoU2V0PFN0cmluZz4mIHN0cmVhbVVSTHMgPSBwdWJsaWNTdHJlYW1V
UkxzKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmIChzdHJlYW1VUkxzLmNvbnRhaW5z
KHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSBvZiB0aGlzIGFz
c2VydGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVjIHF1ZXN0aW9uIGlmIHJlcXVpcmVkLgogICAgICAg
ICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNo
b3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1l
ZGlhU3RyZWFtVVJMKHVybCk7Ci0gICAgICAgIG1fcHVibGljU3RyZWFtVVJMcy5yZW1vdmUodXJs
LnN0cmluZygpKTsKKyAgICAgICAgc3RyZWFtVVJMcy5yZW1vdmUodXJsLnN0cmluZygpKTsKICAg
ICB9CiAjZW5kaWYKIH0KKyNlbmRpZgorCitET01VUkw6OkRPTVVSTChjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQoreworICAgIG1faHJlZiA9IEtVUkwoS1VSTCgpLCB1
cmwpOworICAgIC8vIFJlc29sdmUgdGhlIFVSTCByZWxhdGl2ZSB0byBiYXNlVVJMIGlmIGlzIHBy
b3ZpZGUuCisgICAgaWYgKCFiYXNlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgbV9ocmVmID0gS1VS
TChtX2hyZWYsIGJhc2VVUkwpOworfQorCitET01VUkw6On5ET01VUkwoKQoreworfQorCitTdHJp
bmcgRE9NVVJMOjpob3N0KCkgY29uc3QKK3sKKyAgICBpZiAobV9ocmVmLmhvc3RFbmQoKSA9PSBt
X2hyZWYucGF0aFN0YXJ0KCkpCisgICAgICAgIHJldHVybiBtX2hyZWYuaG9zdCgpOworICAgIGlm
IChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9ocmVmLnBvcnQoKSwgbV9ocmVmLnByb3RvY29s
KCkpKQorICAgICAgICByZXR1cm4gbV9ocmVmLmhvc3QoKTsKKyAgICByZXR1cm4gbV9ocmVmLmhv
c3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKG1faHJlZi5wb3J0KCkpOworfQorCit2b2lkIERP
TVVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9ocmVmLmNhblNldEhvc3RPclBv
cnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGNvbG9uID0gdmFsdWUuZmluZCgn
OicpOworICAgIGlmICghY29sb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjb2xvbiA9
PSBub3RGb3VuZCkKKyAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgdW5zaWduZWQgcG9ydFN0YXJ0ID0gY29sb24gKyAxOworICAgICAgICB1
bnNpZ25lZCBwb3J0RW5kID0gcG9ydFN0YXJ0OworCisgICAgICAgIHdoaWxlIChpc0FTQ0lJRGln
aXQodmFsdWVbcG9ydEVuZF0pKQorICAgICAgICAgICAgKytwb3J0RW5kOworCisgICAgICAgIHVu
c2lnbmVkIHBvcnQgPSB2YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0
YXJ0KS50b1VJbnQoKTsKKyAgICAgICAgaWYgKCFwb3J0KQorICAgICAgICAgICAgbV9ocmVmLnNl
dEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBjb2xvbiArIDEpICsgIjAiKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQs
IG1faHJlZi5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICBtX2hyZWYuc2V0SG9zdEFuZFBv
cnQodmFsdWUuc3Vic3RyaW5nKDAsIGNvbG9uKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgbV9ocmVmLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBwb3J0RW5k
KSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRIb3N0bmFtZShjb25z
dCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIHVuc2lnbmVkIGhv
c3RMZW5ndGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICB3aGlsZSAodmFsdWVbaV0gPT0gJy8nKQor
ICAgICAgICBpKys7CisKKyAgICBpZiAoaSA9PSBob3N0TGVuZ3RoKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faHJlZi5zZXRIb3N0KHZhbHVlLnN1YnN0cmluZyhpKSk7Cit9CisKK1N0cmluZyBE
T01VUkw6OnBvcnQoKSBjb25zdAoreworICAgIGlmIChocmVmKCkuaGFzUG9ydCgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigpLnBvcnQoKSk7CisKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKK30KKwordm9pZCBET01VUkw6OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK3sKKyAgICBpZiAoIW1faHJlZi5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1ZS50b1VJbnQoKTsKKyAgICBpZiAoaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHBvcnQsIG1faHJlZi5wcm90b2NvbCgpKSkKKyAgICAgICAgbV9o
cmVmLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIG1faHJlZi5zZXRQb3J0KHZhbHVl
LnRvVUludCgpKTsKK30KKwordm9pZCBET01VUkw6OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYg
dmFsdWUpCit7CisgICAgaWYgKCFtX2hyZWYuY2FuU2V0UGF0aG5hbWUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgU3RyaW5nIG5ld1BhdGhuYW1lID0gKHZhbHVlWzBdID09ICcvJykgPyB2YWx1
ZSA6ICgiLyIgKyB2YWx1ZSk7CisgICAgbV9ocmVmLnNldFBhdGgobmV3UGF0aG5hbWUpOworfQor
CitTdHJpbmcgRE9NVVJMOjpzZWFyY2goKSBjb25zdAoreworICAgIFN0cmluZyBxdWVyeSA9IGhy
ZWYoKS5xdWVyeSgpOworICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygp
IDogIj8iICsgcXVlcnk7Cit9CisKK3ZvaWQgRE9NVVJMOjpzZXRTZWFyY2goY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09ICc/JykgPyB2
YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICBtX2hyZWYuc2V0UXVlcnkobmV3U2VhcmNo
KTsKK30KKworU3RyaW5nIERPTVVSTDo6aGFzaCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIGZyYWdt
ZW50ID0gaHJlZigpLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgIHJldHVybiBmcmFnbWVudC5p
c0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIiMiICsgZnJhZ21lbnQ7Cit9CisKK3ZvaWQgRE9N
VVJMOjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgU3RyaW5nIG5ld0hhc2gg
PSAodmFsdWVbMF0gPT0gJyMnKSA/IHZhbHVlLnN1YnN0cmluZygxKSA6IHZhbHVlOworICAgIG1f
aHJlZi5zZXRGcmFnbWVudElkZW50aWZpZXIobmV3SGFzaCk7Cit9CisKK3ZvaWQgRE9NVVJMOjpz
ZXRGaWxlbmFtZShjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUu
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworU3RyaW5nIERPTVVSTDo6b3JpZ2luKCkgY29u
c3QKK3sKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoaHJlZigpKTsKKyAgICByZXR1cm4gb3JpZ2luLT50b1N0cmluZygpOworfQorCitT
dHJpbmcgRE9NVVJMOjpnZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IG1lLgorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCit2b2lkIERPTVVSTDo6YXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIERPTVVSTDo6YXBwZW5kUGFy
YW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCBtZS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQordm9pZCBET01VUkw6OmNsZWFy
UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZS4K
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBFTkFCTEUoQkxPQikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkocmV2aXNpb24gMTAy
NTE4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBNb3Rvcm9sYSBNb2JpbGl0eSBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNyw5IEBACiAj
aWZuZGVmIERPTVVSTF9oCiAjZGVmaW5lIERPTVVSTF9oCiAKLSNpZiBFTkFCTEUoQkxPQikKLQot
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIK
KyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDAsMzAgKzM5LDcwIEBAIGNsYXNzIEJsb2I7CiBjbGFz
cyBNZWRpYVN0cmVhbTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIERP
TVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CitjbGFzcyBET01VUkwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01VUkw+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgRE9NVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERPTVVSTD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01VUkwodXJsLCBiYXNlVVJMKSk7IH0KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxET01VUkw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IERPTVVSTCh1cmwsIGVtcHR5U3RyaW5nKCkpKTsgfQogICAgIH5ET01V
UkwoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVj
dFVSTChNZWRpYVN0cmVhbSopOwotI2VuZGlmCi0gICAgU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChC
bG9iKik7Ci0gICAgdm9pZCByZXZva2VPYmplY3RVUkwoY29uc3QgU3RyaW5nJik7CisgICAgU3Ry
aW5nIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gaHJlZigpLnByb3RvY29sKCkgKyAiOiI7IH0K
KyAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV9ocmVmLnNldFBy
b3RvY29sKHZhbHVlKTsgfQogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IERPTVVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7CisgICAgU3RyaW5nIHVzZXJuYW1lKCkgY29uc3QgeyByZXR1cm4g
aHJlZigpLnVzZXIoKTsgfQorICAgIHZvaWQgc2V0VXNlcm5hbWUoY29uc3QgU3RyaW5nJiB2YWx1
ZSkgeyBtX2hyZWYuc2V0VXNlcih2YWx1ZSk7IH0KKworICAgIFN0cmluZyBwYXNzd29yZCgpIGNv
bnN0IHsgcmV0dXJuIGhyZWYoKS5wYXNzKCk7IH0KKyAgICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0
IFN0cmluZyYgdmFsdWUpIHsgIG1faHJlZi5zZXRQYXNzKHZhbHVlKTsgfQorCisgICAgU3RyaW5n
IGhvc3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICBT
dHJpbmcgaG9zdG5hbWUoKSBjb25zdCB7IHJldHVybiBocmVmKCkuaG9zdCgpOyB9CisgICAgdm9p
ZCBzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRQb3J0KGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBhdGhuYW1l
KCkgY29uc3QgeyByZXR1cm4gaHJlZigpLnBhdGgoKTsgfQorICAgIHZvaWQgc2V0UGF0aG5hbWUo
Y29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgc2VhcmNoKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRTZWFyY2goY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OworICAg
IHZvaWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCk7CisgICAgU3RyaW5nIGZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gaHJlZigp
Lmxhc3RQYXRoQ29tcG9uZW50KCk7IH0KKyAgICB2b2lkIHNldEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fcHVibGljQmxvYlVSTHM7CisgICAgU3RyaW5n
IG9yaWdpbigpIGNvbnN0OworCisgICAgS1VSTCBocmVmKCkgY29uc3QgeyByZXR1cm4gbV9ocmVm
OyB9CisgICAgdm9pZCBzZXRIcmVmKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV9ocmVmID0gS1VS
TChLVVJMKCksIHZhbHVlKTsgfQorCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9ocmVmLnN0cmluZygpOyB9CisKKyAgICBTdHJpbmcgZ2V0UGFyYW1ldGVyKGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgYXBwZW5kUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOworICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXIoY29uc3Qg
U3RyaW5nJik7CisKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBzdGF0aWMgdm9pZCBjb250ZXh0RGVz
dHJveWVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHN0YXRpYyBTdHJpbmcgY3Jl
YXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbG9iKik7CisgICAgc3RhdGlj
IHZvaWQgcmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3B1
YmxpY1N0cmVhbVVSTHM7CisgICAgc3RhdGljIFN0cmluZyBjcmVhdGVPYmplY3RVUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtKik7CiAjZW5kaWYKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIEtVUkwgbV9ocmVmOworCisgICAgRE9NVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKEJMT0IpCi0KICNlbmRpZiAvLyBET01VUkxfaApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmlk
bAkocmV2aXNpb24gMTAyNTE4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIE1v
dG9yb2xhIE1vYmlsaXR5IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMTYgKzI2LDM1IEBACiAKIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwotICAgICAg
ICBDb25kaXRpb25hbD1CTE9CLAotICAgICAgICBPbWl0Q29uc3RydWN0b3IsCiAgICAgICAgIEdl
bmVyYXRlTmF0aXZlQ29udmVydGVyLAogICAgICAgICBHZW5lcmF0ZVRvSlMsCi0gICAgICAgIE5v
U3RhdGljVGFibGVzCisgICAgICAgIFJlcGxhY2VhYmxlLAorICAgICAgICBDb25zdHJ1Y3Rvcihp
biBET01TdHJpbmcgdXJsLCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhOdWxsVmFsdWVdIERPTVN0cmlu
ZyBiYXNlVVJMKQogICAgIF0gRE9NVVJMIHsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBw
cm90b2NvbDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyB1c2VybmFtZTsKKyAgICAgICAg
YXR0cmlidXRlIERPTVN0cmluZyBwYXNzd29yZDsKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBob3N0OworICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGhvc3RuYW1lOworICAgICAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHBvcnQ7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgcGF0
aG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc2VhcmNoOworICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGhhc2g7CisKKyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyBmaWxl
bmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBvcmlnaW47CisgICAg
ICAgIHN0cmluZ2lmaWVyIGF0dHJpYnV0ZSBET01TdHJpbmcgaHJlZjsKKworICAgICAgICBbRG9u
dEVudW1dIERPTVN0cmluZyB0b1N0cmluZygpOworICAgICAgICBET01TdHJpbmcgZ2V0UGFyYW1l
dGVyKGluIERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgdm9pZCBhcHBlbmRQYXJhbWV0ZXIoaW4g
RE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyB2YWx1ZXMpOworICAgICAgICB2b2lkIGFwcGVu
ZFBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nW10gdmFsdWVzKTsKKyAg
ICAgICAgdm9pZCBjbGVhclBhcmFtZXRlcihpbiBET01TdHJpbmcgbmFtZSk7CisKICNpZiBkZWZp
bmVkKEVOQUJMRV9NRURJQV9TVFJFQU0pICYmIEVOQUJMRV9NRURJQV9TVFJFQU0KLSAgICAgICAg
W0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJM
KGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7CisgICAgICAgIHN0YXRpYyBbQ29uZGl0aW9uYWw9QkxP
QixDb252ZXJ0TnVsbFN0cmluZ1RvPVVuZGVmaW5lZCxDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSBET01TdHJpbmcgY3JlYXRlT2JqZWN0VVJMKGluIE1lZGlhU3RyZWFtIHN0cmVhbSk7
CiAjZW5kaWYKLSAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJp
bmcgY3JlYXRlT2JqZWN0VVJMKGluIEJsb2IgYmxvYik7Ci0gICAgICAgIHZvaWQgcmV2b2tlT2Jq
ZWN0VVJMKGluIERPTVN0cmluZyB1cmwpOworICAgICAgICBzdGF0aWMgW0NvbmRpdGlvbmFsPUJM
T0IsQ29udmVydE51bGxTdHJpbmdUbz1VbmRlZmluZWQsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dF0gRE9NU3RyaW5nIGNyZWF0ZU9iamVjdFVSTChpbiBCbG9iIGJsb2IpOworICAgICAg
ICBzdGF0aWMgW0NvbmRpdGlvbmFsPUJMT0IsQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dF0gdm9pZCByZXZva2VPYmplY3RVUkwoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAgfTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDEwMjUxOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzNSwxNSAr
MTkzNSw2IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29uc3QgU3QKICAgICBk
aWFsb2dGcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+cnVuTW9kYWwoKTsKIH0KIAotI2lmIEVOQUJM
RShCTE9CKQotRE9NVVJMKiBET01XaW5kb3c6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2RvbVVSTCAmJiBpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKLSAgICAgICAgbV9k
b21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
ICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFFVT1RB
KQogU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiAxMDI1MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsMTAgKzM0Nyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxET01XaW5k
b3c+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8RE9NV2luZG93Pjo6ZGVyZWY7CiAK
LSNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgRE9NVVJMKiB3ZWJraXRVUkwoKSBjb25zdDsKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAgICAgUGFzc1JlZlB0cjxEYXRh
YmFzZT4gb3BlbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUsIFBhc3NSZWZQdHI8RGF0YWJhc2VDYWxsYmFjaz4gY3JlYXRpb25DYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAxMDI1MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTgxMyw3ICs4MTMsNyBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBh
dHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUJMT0JdIFdlYktpdEJsb2JCdWlsZGVyQ29uc3RydWN0b3Ig
V2ViS2l0QmxvYkJ1aWxkZXI7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb25kaXRp
b25hbD1CTE9CXSBET01VUkwgd2Via2l0VVJMOworICAgICAgICBhdHRyaWJ1dGUgRE9NVVJMQ29u
c3RydWN0b3Igd2Via2l0VVJMOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfUVVPVEEpICYmIEVOQUJM
RV9RVU9UQQogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9UXVv
dGFdIFN0b3JhZ2VJbmZvIHdlYmtpdFN0b3JhZ2VJbmZvOwpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiAxMDI1MTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksMTUg
KzM3OSw2IEBAIEV2ZW50VGFyZ2V0RGF0YSogV29ya2VyQ29udGV4dDo6ZW5zdXJlRXYKICAgICBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwogfQogCi0jaWYgRU5BQkxFKEJMT0IpCi1ET01VUkwq
IFdvcmtlckNvbnRleHQ6OndlYmtpdFVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RvbVVSTCkK
LSAgICAgICAgbV9kb21VUkwgPSBET01VUkw6OmNyZWF0ZSh0aGlzLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIHJldHVybiBtX2RvbVVSTC5nZXQoKTsKLX0KLSNlbmRpZgotCiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQogdm9pZCBXb3JrZXJDb250ZXh0Ojp3ZWJraXRSZXF1ZXN0Rmls
ZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCShy
ZXZpc2lvbiAxMDI1MTgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDEwICsxMzEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKIAotI2lmIEVOQUJM
RShCTE9CKQotICAgICAgICBET01VUkwqIHdlYmtpdFVSTCgpIGNvbnN0OwotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIGVudW0gRmlsZVN5c3RlbVR5cGUgewogICAg
ICAgICAgICAgVEVNUE9SQVJZLApJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaWRsCShyZXZpc2lvbiAxMDI1MTgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgbW9kdWxl
IHRocmVhZHMgewogICAgICAgICBhdHRyaWJ1dGUgRmlsZVJlYWRlclN5bmNDb25zdHJ1Y3RvciBG
aWxlUmVhZGVyU3luYzsKICNlbmRpZgogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29u
ZGl0aW9uYWw9QkxPQl0gRE9NVVJMIHdlYmtpdFVSTDsKKyAgICAgICAgYXR0cmlidXRlIERPTVVS
TENvbnN0cnVjdG9yIHdlYmtpdFVSTDsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVN
KSAmJiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVN
UE9SQVJZID0gMDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjUxOCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDExLTEyLTA2ICBLYXVz
dHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBVUkwgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIElETCBBdHRyaWJ1dGVzLiBBZGRlZCB0ZXN0
IGNhc2VzLgorCisgICAgICAgICogZmFzdC9kb20vRE9NVVJMOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2Yt
ZG9tdXJsLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwv
ZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0
bmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RP
TVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLXBvcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML2RvbXVybC1h
dHRyaWJ1dGUtcHJvdG9jb2wtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2gu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVy
bC1hdHRyaWJ1dGUtaHJlZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RPTVVSTC9zdHJpbmdpZmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbDogQWRkZWQuCisK
IDIwMTEtMTItMDkgICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBO
YW1lTm9kZUxpc3RDYWNoZSBzaG91bGQgYmUgaW52YWxpZGF0ZWQgd2hlbiBuYW1lIGF0dHJpYnV0
ZSBjaGFuZ2VzL21vZGlmaWVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2No
ZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1
bmN0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ET01VUkwvY2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorVGVzdCBpbnN0YW5jZW9mIGZ1bmN0aW9ucyBh
bmQgcHJvcGVydGllcyBvZiB3ZWJraXRVUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTICdwcm90b2NvbCcgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICd1c2VybmFt
ZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdwYXNzd29yZCcgaW4gd2Via2l0VVJMIGlz
IGZhbHNlCitQQVNTICdob3N0JyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2hvc3RuYW1l
JyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3BvcnQnIGluIHdlYmtpdFVSTCBpcyBmYWxz
ZQorUEFTUyAncGF0aG5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnc2VhcmNoJyBp
biB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2hhc2gnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQor
UEFTUyAnZmlsZW5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnb3JpZ2luJyBpbiB3
ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ3BhcmFtZXRlck5hbWVzJyBpbiB3ZWJraXRVUkwgaXMg
ZmFsc2UKK1BBU1MgJ2dldFBhcmFtZXRlcm5hbWUnIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFT
UyAnZ2V0UGFyYW1ldGVyQWxsbmFtZScgaW4gd2Via2l0VVJMIGlzIGZhbHNlCitQQVNTICdhcHBl
bmRQYXJhbWV0ZXInIGluIHdlYmtpdFVSTCBpcyBmYWxzZQorUEFTUyAnY2xlYXJQYXJhbWV0ZXJu
YW1lJyBpbiB3ZWJraXRVUkwgaXMgZmFsc2UKK1BBU1MgJ2hyZWYnIGluIHdlYmtpdFVSTCBpcyBm
YWxzZQorUEFTUyAnY3JlYXRlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyAn
cmV2b2tlT2JqZWN0VVJMJyBpbiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyB1cmwgaW5zdGFuY2Vv
ZiB3ZWJraXRVUkwgaXMgdHJ1ZQorUEFTUyB1cmwuaGFzT3duUHJvcGVydHkoJ2dldFBhcmFtZXRl
cicpIGlzIGZhbHNlCitQQVNTIHVybC5oYXNPd25Qcm9wZXJ0eSgnYXBwZW5kUGFyYW1ldGVyJykg
aXMgZmFsc2UKK1BBU1MgdXJsLmhhc093blByb3BlcnR5KCdjbGVhclBhcmFtZXRlcicpIGlzIGZh
bHNlCitQQVNTIHVybC5jcmVhdGVPYmplY3RVUkwgaXMgdW5kZWZpbmVkLgorUEFTUyB1cmwucmV2
b2tlT2JqZWN0VVJMIGlzIHVuZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwv
Y2hlY2staW5zdGFuY2VvZi1kb211cmwtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNrLWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9u
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2NoZWNr
LWluc3RhbmNlb2YtZG9tdXJsLWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGluc3RhbmNlb2YgZnVuY3Rpb25zIGFuZCBw
cm9wZXJ0aWVzIG9mIHdlYmtpdFVSTC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJraXRVUkwoInd3
dy53ZWJraXQub3JnIik7CisKK3Nob3VsZEJlRmFsc2UoIidwcm90b2NvbCcgaW4gd2Via2l0VVJM
Iik7CitzaG91bGRCZUZhbHNlKCIndXNlcm5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVG
YWxzZSgiJ3Bhc3N3b3JkJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidob3N0JyBp
biB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlRmFsc2UoIidob3N0bmFtZScgaW4gd2Via2l0VVJMIik7
CitzaG91bGRCZUZhbHNlKCIncG9ydCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIn
cGF0aG5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ3NlYXJjaCcgaW4gd2Vi
a2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCInaGFzaCcgaW4gd2Via2l0VVJMIik7CitzaG91bGRC
ZUZhbHNlKCInZmlsZW5hbWUnIGluIHdlYmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ29yaWdp
bicgaW4gd2Via2l0VVJMIik7CitzaG91bGRCZUZhbHNlKCIncGFyYW1ldGVyTmFtZXMnIGluIHdl
YmtpdFVSTCIpOworc2hvdWxkQmVGYWxzZSgiJ2dldFBhcmFtZXRlcm5hbWUnIGluIHdlYmtpdFVS
TCIpOworc2hvdWxkQmVGYWxzZSgiJ2dldFBhcmFtZXRlckFsbG5hbWUnIGluIHdlYmtpdFVSTCIp
Oworc2hvdWxkQmVGYWxzZSgiJ2FwcGVuZFBhcmFtZXRlcicgaW4gd2Via2l0VVJMIik7CitzaG91
bGRCZUZhbHNlKCInY2xlYXJQYXJhbWV0ZXJuYW1lJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJl
RmFsc2UoIidocmVmJyBpbiB3ZWJraXRVUkwiKTsKKworc2hvdWxkQmVUcnVlKCInY3JlYXRlT2Jq
ZWN0VVJMJyBpbiB3ZWJraXRVUkwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3Jldm9rZU9iamVjdFVSTCcg
aW4gd2Via2l0VVJMIik7CisKK3Nob3VsZEJlVHJ1ZSgidXJsIGluc3RhbmNlb2Ygd2Via2l0VVJM
IikKK3Nob3VsZEJlRmFsc2UoInVybC5oYXNPd25Qcm9wZXJ0eSgnZ2V0UGFyYW1ldGVyJykiKQor
c2hvdWxkQmVGYWxzZSgidXJsLmhhc093blByb3BlcnR5KCdhcHBlbmRQYXJhbWV0ZXInKSIpCitz
aG91bGRCZUZhbHNlKCJ1cmwuaGFzT3duUHJvcGVydHkoJ2NsZWFyUGFyYW1ldGVyJykiKQorc2hv
dWxkQmVVbmRlZmluZWQoInVybC5jcmVhdGVPYmplY3RVUkwiKTsKK3Nob3VsZEJlVW5kZWZpbmVk
KCJ1cmwucmV2b2tlT2JqZWN0VVJMIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFz
aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJM
L2RvbXVybC1hdHRyaWJ1dGUtaGFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1oYXNoLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorVGVzdCBzZXR0aW5nIHRoZSBoYXNoIGF0
dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
SGFzaCB2YWx1ZSBzdGFydCB3aXRoICMKK1BBU1MgZG9tdXJsLmhhc2ggaXMgIiNtaWRkbGUiCisn
PycgaW4gaGFzaCB2YWx1ZQorUEFTUyBkb211cmwuaGFzaCBpcyAiI2hhc2g/dmFsdWUiCisnIycg
aW4gaGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBob3N0bmFtZQorUEFTUyBk
b211cmwuaGFzaCBpcyAiIgorbnVsbCBoYXNoCitQQVNTIGRvbXVybC5oYXNoIGlzICIiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaGFzaC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhh
c2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLWhhc2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdCBzZXR0aW5nIHRoZSBoYXNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9N
VVJMLicpOworCitkZWJ1ZygiSGFzaCB2YWx1ZSBzdGFydCB3aXRoICMiKTsKK3ZhciBkb211cmwg
PSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoL3Rlc3R1
cmwuaHRtbCNtaWRkbGUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAi
I21pZGRsZSIpOworCitkZWJ1ZygiJz8nIGluIGhhc2ggdmFsdWUiKTsKK3ZhciBkb211cmwgPSBu
ZXcgd2Via2l0VVJMKCJodHRwOi8vd3d3Lm15ZG9tYWluLmNvbS9wYXRoL3Rlc3R1cmwuaHRtbCNo
YXNoP3ZhbHVlIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5oYXNoIiwgIiNoYXNo
P3ZhbHVlIik7CisKK2RlYnVnKCInIycgaW4gaGFzaCB2YWx1ZSwgYW5kIGlsbGVnYWwgY2hhcmFj
dGVycyBpbiBob3N0bmFtZSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8v
d3d3Lm15XCJkKCl7fXx+b20/YWluI2NvbS9wYXRoL3Rlc3R1cmwuaHRtbCNtaWRkbGUiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhhc2giLCAiIik7CisKK2RlYnVnKCJudWxsIGhh
c2giKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5teWRvbWFpbi5j
b20vcGF0aC90ZXN0dXJsLmh0bWwjIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5o
YXNoIiwgIiIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmli
dXRlLWhvc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3Qgc2V0dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhl
IERPTVVSTC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BB
U1MgZG9tdXJsLmhvc3QgaXMgInd3dy5teWRvbWFpbi5jb206ODA4MCIKK0RlZmF1bHQKK1BBU1Mg
ZG9tdXJsLmhvc3QgaXMgInd3dy5vdGhlcmRvbWFpbi5jb20iCitIb3N0IFVSTCBjb250YWluaW5n
IHVzZXJuYW1lCitQQVNTIGRvbXVybC5ob3N0IGlzICJkb21haW4uY29tOjI1IgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3QuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0
dHJpYnV0ZS1ob3N0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQ
RSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgaG9zdCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4n
KTsKKworZGVidWcoIkJhc2ljIHRlc3QiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJo
dHRwczovL3d3dy5teWRvbWFpbi5jb206ODA4MC9wYXRoLyIpOworc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJkb211cmwuaG9zdCIsICJ3d3cubXlkb21haW4uY29tOjgwODAiKTsKKworZGVidWcoIkRl
ZmF1bHQiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3dy5vdGhlcmRv
bWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3QiLCAi
d3d3Lm90aGVyZG9tYWluLmNvbSIpOworCitkZWJ1ZygiSG9zdCBVUkwgY29udGFpbmluZyB1c2Vy
bmFtZSIpOwordmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHBzOi8vcnd3bXlAZG9tYWlu
LmNvbToyNS9wYS4udGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5ob3N0Iiwg
ImRvbWFpbi5jb206MjUiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1ob3N0bmFtZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2Rv
bXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtaG9zdG5hbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitUZXN0IHNldHRpbmcgdGhlIGhv
c3RuYW1lIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworQmFzaWMgdGVzdAorUEFTUyBkb211cmwuaG9zdG5hbWUgaXMgInd3dy5teWRvbWFp
bi5jb20iCitIb3N0bmFtZSB3aXRoIGZ0cDogcHJvdG9jb2wKK1BBU1MgZG9tdXJsLmhvc3RuYW1l
IGlzICJ3d3cubXlkb21haW4uY29tIgorU2V0IGRvbXVybCBob3N0bmFtZSB0aGF0IGNvbnRhaW5z
IHN5bWJvbCBpbiBpdAorUEFTUyBkb211cmwuaG9zdG5hbWUgaXMgInd3dy5teS1kb21haW4uY29t
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1h
dHRyaWJ1dGUtaG9zdG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLWhvc3RuYW1lLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUgaG9zdG5h
bWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK2RlYnVnKCJCYXNpYyB0ZXN0Iik7Cit2
YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tOjgwODAv
cGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3RuYW1lIiwgInd3dy5t
eWRvbWFpbi5jb20iKTsKKworZGVidWcoIkhvc3RuYW1lIHdpdGggZnRwOiBwcm90b2NvbCIpOwor
dmFyIGRvbXVybCA9IG5ldyB3ZWJraXRVUkwoImZ0cDovL3d3dy5teWRvbWFpbi5jb20vcGF0aC8i
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3RuYW1lIiwgInd3dy5teWRvbWFp
bi5jb20iKTsKKworZGVidWcoIlNldCBkb211cmwgaG9zdG5hbWUgdGhhdCBjb250YWlucyBzeW1i
b2wgaW4gaXQiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwOi8vd3d3Lm15LWRv
bWFpbi5jb20vcGF0aC8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLmhvc3RuYW1l
IiwgInd3dy5teS1kb21haW4uY29tIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcGF0
aG5hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RP
TVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1l
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVzdCBzZXR0aW5n
IHRoZSBwYXRobmFtZSBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK0Jhc2ljIFRlc3QKK1BBU1MgZG9tdXJsLnBhdGhuYW1lIGlzICIvcGF0
aC90ZXN0dXJsLmh0bWwiCitQYXRobmFtZSB3aXRoIHN5bWJvbHMKK1BBU1MgZG9tdXJsLnBhdGhu
YW1lIGlzICIvcGElM0Z0aCIKK3BhdGhuYW1lIHRvIG51bGwKK1BBU1MgZG9tdXJsLnBhdGhuYW1l
IGlzICIvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBh
dGhuYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2Rv
bXVybC1hdHRyaWJ1dGUtcGF0aG5hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBhdGhuYW1lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qgc2V0dGluZyB0aGUg
cGF0aG5hbWUgYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK2RlYnVnKCJCYXNpYyBUZXN0
Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29t
L3BhdGgvdGVzdHVybC5odG1sP2tleT12YWx1ZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
b211cmwucGF0aG5hbWUiLCAiL3BhdGgvdGVzdHVybC5odG1sIik7CisKK2RlYnVnKCJQYXRobmFt
ZSB3aXRoIHN5bWJvbHMiKTsKK3ZhciBkb211cmwgPSBuZXcgd2Via2l0VVJMKCJodHRwczovL3d3
dy5teWRvbWFpbi5jb20vcGElM0Z0aD9rZXk9dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZG9tdXJsLnBhdGhuYW1lIiwgIi9wYSUzRnRoIik7CisKK2RlYnVnKCJwYXRobmFtZSB0byBu
dWxsIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4u
Y29tLz9rZXk9dmFsdWUiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnBhdGhuYW1l
IiwgIi8iKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wb3J0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0
ZS1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzIEBACitUZXN0IGdldHRpbmcgdGhlIHBvcnQgYXR0cmlidXRlIG9mIHRoZSBE
T01VUkwuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEZWZhdWx0IG9yIFVuc3Bl
Y2lmaWVkIHBvcnQgaXMgZW1wdHkKK1BBU1MgZG9tdXJsLnBvcnQgaXMgJycKK0VtcHR5IHBvcnQg
c2hvdWxkIGJlIGVtcHR5CitQQVNTIGRvbXVybC5wb3J0IGlzICcnCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcG9ydC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXBvcnQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LXBvcnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bignVGVzdCBnZXR0aW5nIHRoZSBwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCit2
YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cDovL3dlYmtpdC5vcmciKTsKK2RlYnVnKCJE
ZWZhdWx0IG9yIFVuc3BlY2lmaWVkIHBvcnQgaXMgZW1wdHkiKTsKK3Nob3VsZEJlKCJkb211cmwu
cG9ydCIsICInJyIpOworCit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cDovL3dlYmtp
dC5vcmc6LyIpOworZGVidWcoIkVtcHR5IHBvcnQgc2hvdWxkIGJlIGVtcHR5Iik7CitzaG91bGRC
ZSgiZG9tdXJsLnBvcnQiLCAiJyciKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtcHJvdG9j
b2wtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVS
TC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXByb3RvY29sLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBzZXR0aW5nIHRo
ZSBwcm90b2NvbCBhdHRyaWJ1dGUgb2YgdGhlIERPTVVSTC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK0Jhc2ljIHRlc3QKK1BBU1MgZG9tdXJsLnByb3RvY29sIGlzICJodHRwLWZv
bzoiCitQcm90b2NvbCBvbiBtYWxmb3JtZWQgVVJMCitQQVNTIGRvbXVybC5wcm90b2NvbCBpcyAi
Zm9vOiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90
b2NvbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211
cmwtYXR0cmlidXRlLXByb3RvY29sLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1wcm90b2NvbC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHNldHRpbmcgdGhlIHBy
b3RvY29sIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLicpOworCisKK2RlYnVnKCJCYXNpYyB0ZXN0
Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cC1mb286Ly93d3cubXlkb21haW4u
Y29tL3BhdGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5wcm90b2NvbCIsImh0
dHAtZm9vOiIpOworCitkZWJ1ZygiUHJvdG9jb2wgb24gbWFsZm9ybWVkIFVSTCIpOwordmFyIGRv
bXVybCA9IG5ldyB3ZWJraXRVUkwoImZvbzo/P2JhciIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkb211cmwucHJvdG9jb2wiLCAiZm9vOiIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRl
LXNlYXJjaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
RE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9kb211cmwtYXR0cmlidXRlLXNlYXJjaC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3Qgc2V0dGluZyB0
aGUgc2VhcmNoIGF0dHJpYnV0ZSBvZiB0aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworQmFzaWMgVGVzdAorUEFTUyBkb211cmwuc2VhcmNoIGlzICI/a2V5PXZhbHVl
IgorU2VhcmNoIHRoYXQgc3RhcnRzIHdpdGggJz8nIGFuZCBjb250YWlucyBzcGFjZXMKK1BBU1Mg
ZG9tdXJsLnNlYXJjaCBpcyAiP3ZhbCUyMHVlPSUyMGtleT8iCitTZWFyY2ggY29udGFpbmluZyAn
IycKK1BBU1MgZG9tdXJsLnNlYXJjaCBpcyAiP2tleT12YWx1ZSIKK1NlYXJjaCB0byBlbXB0eQor
UEFTUyBkb211cmwuc2VhcmNoIGlzICIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML2Rv
bXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRE9NVVJML2RvbXVybC1hdHRyaWJ1dGUtc2VhcmNoLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvZG9tdXJsLWF0dHJpYnV0ZS1zZWFyY2guaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBz
ZXR0aW5nIHRoZSBzZWFyY2ggYXR0cmlidXRlIG9mIHRoZSBET01VUkwuJyk7CisKK2RlYnVnKCJC
YXNpYyBUZXN0Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgiaHR0cHM6Ly93d3cubXlk
b21haW4uY29tL3BhdGgvP2tleT12YWx1ZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkb211
cmwuc2VhcmNoIiwgIj9rZXk9dmFsdWUiKTsKKworZGVidWcoIlNlYXJjaCB0aGF0IHN0YXJ0cyB3
aXRoICc/JyBhbmQgY29udGFpbnMgc3BhY2VzIik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVS
TCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP3ZhbCUyMHVlPSUyMGtleT8iKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiZG9tdXJsLnNlYXJjaCIsICI/dmFsJTIwdWU9JTIwa2V5PyIp
OworCitkZWJ1ZygiU2VhcmNoIGNvbnRhaW5pbmcgJyMnIik7Cit2YXIgZG9tdXJsID0gbmV3IHdl
YmtpdFVSTCgiaHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvP2tleT12YWx1ZSNoYXNoIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRvbXVybC5zZWFyY2giLCAiP2tleT12YWx1ZSIpOwor
CitkZWJ1ZygiU2VhcmNoIHRvIGVtcHR5Iik7Cit2YXIgZG9tdXJsID0gbmV3IHdlYmtpdFVSTCgi
aHR0cHM6Ly93d3cubXlkb21haW4uY29tL3BhdGgvIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRvbXVybC5zZWFyY2giLCAiIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRy
aWJ1dGUtaHJlZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vRE9NVVJML3N0cmluZ2lmaWVyLWRvbXVybC1hdHRyaWJ1dGUtaHJlZi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXIt
ZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMCBAQAorVGVzdCBzdHJpbmdpZmllciBwcm9wZXJ0eSBvZiBocmVmIGF0dHJpYnV0ZSBvZiB0
aGUgRE9NVVJMLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB1cmwudG9T
dHJpbmcoKSBpcyB1cmwuaHJlZgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RPTVVSTC9zdHJpbmdp
Zmllci1kb211cmwtYXR0cmlidXRlLWhyZWYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXItZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ET01VUkwvc3RyaW5naWZpZXIt
ZG9tdXJsLWF0dHJpYnV0ZS1ocmVmLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgc3RyaW5naWZpZXIgcHJvcGVydHkgb2YgaHJlZiBhdHRy
aWJ1dGUgb2YgdGhlIERPTVVSTC4iKTsKKwordmFyIHVybCA9IG5ldyB3ZWJraXRVUkwoImh0dHA6
Ly93d3cuZXhhbXBsZS5jb20iKTsKK3Nob3VsZEJlKCJ1cmwudG9TdHJpbmcoKSIsICJ1cmwuaHJl
ZiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="118507"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>