<?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>16133</bug_id>
          
          <creation_ts>2007-11-25 12:41:39 -0800</creation_ts>
          <short_desc>Implement pixel test support on Windows</short_desc>
          <delta_ts>2007-11-25 16:04:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>62295</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 12:41:39 -0800</bug_when>
    <thetext>We need to implement pixel test support on Windows to flesh out our testing. I have a patch that does just that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62296</commentid>
    <comment_count>1</comment_count>
      <attachid>17511</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 12:43:21 -0800</bug_when>
    <thetext>Created attachment 17511
patch with changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62304</commentid>
    <comment_count>2</comment_count>
      <attachid>17511</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 13:46:37 -0800</bug_when>
    <thetext>Comment on attachment 17511
patch with changelog

I&apos;m going to break this up into some smaller pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62314</commentid>
    <comment_count>3</comment_count>
      <attachid>17516</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 14:26:26 -0800</bug_when>
    <thetext>Created attachment 17516
[1/5]         Make Windows DRT stop changing LF into CRLF


        Reviewed by NOBODY (OOPS!).

        * DumpRenderTree/win/DumpRenderTree.cpp:
        (main): Put stdout in binary mode.
        * Scripts/run-webkit-tests: Remove the CRLF hack.
---
 WebKitTools/ChangeLog                             |   10 ++++++++++
 WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp |    4 ++++
 WebKitTools/Scripts/run-webkit-tests              |    1 -
 3 files changed, 14 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62315</commentid>
    <comment_count>4</comment_count>
      <attachid>17517</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 14:26:28 -0800</bug_when>
    <thetext>Created attachment 17517
[2/5]         Clean up Windows DRT&apos;s option parsing a little bit


        Reviewed by NOBODY (OOPS!).

        * DumpRenderTree/win/DumpRenderTree.cpp:
        (main): Put non-option arguments into a Vector.
---
 WebKitTools/ChangeLog                             |    9 +++++++
 WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp |   27 +++++++++++----------
 2 files changed, 23 insertions(+), 13 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62316</commentid>
    <comment_count>5</comment_count>
      <attachid>17518</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 14:26:29 -0800</bug_when>
    <thetext>Created attachment 17518
[3/5]         Implement pixel dumping in Windows DRT


        Part of http://bugs.webkit.org/show_bug.cgi?id=16133
        &lt;rdar://5071708&gt;

        Reviewed by NOBODY (OOPS!).

        * DumpRenderTree/cg/PixelDumpSupportCG.cpp: Added.
        (printPNG): Dumps a CGImageRef as a PNG to stdout, along with a
        Content-Length header.
        (getMD5HashStringForBitmap):
        (dumpWebViewAsPixelsAndCompareWithExpected):
        * DumpRenderTree/cg/PixelDumpSupportCG.h: Copied from WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.h.
        * DumpRenderTree/win/DumpRenderTree.cpp:
        (dump): Do a pixel dump if requested.
        (main): Parse pixel test options.
        * DumpRenderTree/win/DumpRenderTree.vcproj: Added new files and added
        the cg/ subdirectory to the include path.
        * DumpRenderTree/win/MD5.cpp: Added. Windows MD5 functions aren&apos;t
        available in a header or import library, so we have to go through this
        LoadLibrary/GetProcAddress dance to use them.
        (cryptDLL):
        (init):
        (update):
        (final):
        (MD5_Init):
        (MD5_Update):
        (MD5_Final):
        * DumpRenderTree/win/MD5.h: Added.
        * DumpRenderTree/win/PixelDumpSupport.h: Added. This file should be
        moved up to the top level to share it with Mac eventually.
        * DumpRenderTree/win/PixelDumpSupportWin.cpp: Added.
        (getBitmapContextFromWebView): Forces the WebView to paint using a
        WM_PRINTCLIENT message, and puts the result in a CGBitmapContext.
---
 WebKitTools/ChangeLog                              |   37 +++++++
 .../DumpRenderTree/cg/PixelDumpSupportCG.cpp       |  105 ++++++++++++++++++++
 WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.h |   41 ++++++++
 WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp  |   21 ++++
 .../DumpRenderTree/win/DumpRenderTree.vcproj       |   34 ++++++-
 WebKitTools/DumpRenderTree/win/MD5.cpp             |   77 ++++++++++++++
 WebKitTools/DumpRenderTree/win/MD5.h               |   45 +++++++++
 WebKitTools/DumpRenderTree/win/PixelDumpSupport.h  |   36 +++++++
 .../DumpRenderTree/win/PixelDumpSupportWin.cpp     |   67 +++++++++++++
 9 files changed, 458 insertions(+), 5 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62317</commentid>
    <comment_count>6</comment_count>
      <attachid>17519</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 14:26:31 -0800</bug_when>
    <thetext>Created attachment 17519
[4/5]         Fix image diff link generation on Windows


        Reviewed by NOBODY (OOPS!).

        * Scripts/run-webkit-tests: Removed unnecessary and incorrect calls
        to toURL.
---
 WebKitTools/ChangeLog                |    9 +++++++++
 WebKitTools/Scripts/run-webkit-tests |    6 +++---
 2 files changed, 12 insertions(+), 3 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62318</commentid>
    <comment_count>7</comment_count>
      <attachid>17520</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 14:26:33 -0800</bug_when>
    <thetext>Created attachment 17520
[5/5] Fix Bug 16133: Implement pixel test support on Windows


WebKit/win:

        Add ImageDiff.vcproj to WebKit.sln

        Reviewed by NOBODY (OOPS!).

        * WebKit.vcproj/WebKit.sln:

WebKitTools:

        Port ImageDiff to CG and C++

        Final part of http://bugs.webkit.org/show_bug.cgi?id=16133
        &lt;rdar://5071708&gt;

        Reviewed by NOBODY (OOPS!).

        * DumpRenderTree/DumpRenderTree.sln: Added ImageDiff.vcproj.
        * DumpRenderTree/cg/ImageDiff.cpp: Added.
        (main):
        (createImageFromStdin):
        (compareImages):
        (getDifferenceBitmap):
        (computePercentageDifferent):
        * DumpRenderTree/win/ImageDiff.vcproj: Added.
---
 WebKit/win/ChangeLog                            |    8 +
 WebKit/win/WebKit.vcproj/WebKit.sln             |   21 ++-
 WebKitTools/ChangeLog                           |   18 ++
 WebKitTools/DumpRenderTree/DumpRenderTree.sln   |    8 +
 WebKitTools/DumpRenderTree/cg/ImageDiff.cpp     |  203 +++++++++++++++++++++++
 WebKitTools/DumpRenderTree/win/ImageDiff.vcproj |  182 ++++++++++++++++++++
 6 files changed, 435 insertions(+), 5 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62322</commentid>
    <comment_count>8</comment_count>
      <attachid>17518</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-11-25 14:57:38 -0800</bug_when>
    <thetext>Comment on attachment 17518
[3/5]         Implement pixel dumping in Windows DRT

Style wise, this should be the first #include (we should really add a config.h).
+#include &quot;PixelDumpSupportCG.h&quot;

You should include &lt;wtf/StringExtras.h&gt; instead of doing this #define.
+#define snprintf _snprintf


Please use the WTF ASSERT
+    assert(bitsPerPixel == 32); // ImageDiff assumes 32 bit RGBA, we must as well.

+    assert(bytesPerRow &gt;= (pixelsWide * bytesPerPixel));

In PixelDumpSupportCG.h it doesn&apos;t look like you need to #include &lt;wtf/Platform.h&gt;.  Also, are you sure it&apos;s a good idea to return a RetainPtr?  That feels weird to me.

None of these are show-stoppers.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62323</commentid>
    <comment_count>9</comment_count>
      <attachid>17520</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-11-25 15:06:10 -0800</bug_when>
    <thetext>Comment on attachment 17520
[5/5] Fix Bug 16133: Implement pixel test support on Windows

I can&apos;t image that forwarding the main function is helpful.
+/* prototypes */
+int main(int argc, const char* argv[]);

Please use c++ style casts here.
+    percentage = (float)((int)(percentage * 100.0f)) / 100.0f; // round to 2 decimal places

Please use ASSERT.
+    assert(!(bitmapInfo &amp; kCGImageAlphaFirst));
+    assert(!(bitmapInfo &amp; kCGBitmapFloatComponents));


r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62329</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 15:23:12 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 17518 [edit])
&gt; Also, are you sure it&apos;s a good idea to return a RetainPtr?  That feels weird to me.

It probably feels weird to you because we don&apos;t have a &quot;PassRetainPtr&quot; (the equivalent of PassRefPtr for CF types). All this means is that we&apos;ll do an extra CFRetain/CFRelease when the function returns. Since these are not performance critical functions, I think the extra retain count churn is worth the lifetime guarantees that come along with using RetainPtr as the return type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62330</commentid>
    <comment_count>11</comment_count>
      <attachid>17516</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 16:01:58 -0800</bug_when>
    <thetext>Comment on attachment 17516
[1/5]         Make Windows DRT stop changing LF into CRLF

Landed as r28019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62331</commentid>
    <comment_count>12</comment_count>
      <attachid>17517</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 16:02:37 -0800</bug_when>
    <thetext>Comment on attachment 17517
[2/5]         Clean up Windows DRT&apos;s option parsing a little bit

Landed as r28020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62332</commentid>
    <comment_count>13</comment_count>
      <attachid>17518</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 16:03:07 -0800</bug_when>
    <thetext>Comment on attachment 17518
[3/5]         Implement pixel dumping in Windows DRT

Laned as r28021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62333</commentid>
    <comment_count>14</comment_count>
      <attachid>17519</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 16:03:25 -0800</bug_when>
    <thetext>Comment on attachment 17519
[4/5]         Fix image diff link generation on Windows

Landed as r28022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62334</commentid>
    <comment_count>15</comment_count>
      <attachid>17520</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 16:03:46 -0800</bug_when>
    <thetext>Comment on attachment 17520
[5/5] Fix Bug 16133: Implement pixel test support on Windows

Landed as r28023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62335</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-25 16:04:24 -0800</bug_when>
    <thetext>&lt;rdar://5071708&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17511</attachid>
            <date>2007-11-25 12:43:21 -0800</date>
            <delta_ts>2007-11-25 14:26:43 -0800</delta_ts>
            <desc>patch with changelog</desc>
            <filename>0001-Bug-16133-Implement-pixel-test-support-on-Windows.patch</filename>
            <type>text/plain</type>
            <size>55924</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSBhM2NjMjI5MGU4M2M0ZmMxMGY1ZmRhMzA3MWY0ZDdhZTgzYTliOGQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBT
dW4sIDI1IE5vdiAyMDA3IDEyOjQyOjM4IC0wODAwClN1YmplY3Q6IFtQRlJdIEJ1ZyAxNjEzMzog
SW1wbGVtZW50IHBpeGVsIHRlc3Qgc3VwcG9ydCBvbiBXaW5kb3dzCgpXZWJLaXQvd2luOgoKICAg
ICAgICBBZGQgSW1hZ2VEaWZmLnZjcHJvaiB0byBXZWJLaXQuc2xuCgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0LnNsbjoK
CldlYktpdFRvb2xzOgoKICAgICAgICBCdWcgMTYxMzM6IEltcGxlbWVudCBwaXhlbCB0ZXN0IHN1
cHBvcnQgb24gV2luZG93cwoKICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjEzMwoKICAgICAgICBUaGlzIG1vc3RseSBpbnZvbHZlZCB0YWtpbmcgdGhlIE1h
YyBjb2RlIGFuZCBwb3J0aW5nIHRoZSBPYmplY3RpdmUgQwogICAgICAgIHBhcnRzIHRvIGVpdGhl
ciBDRyBvciBQT1NJWCBjYWxscy4gSSB0cmllZCB0byBlbnN1cmUgdGhhdCBteSBuZXcgY29kZQog
ICAgICAgIGNhbiBiZSBzaGFyZWQgYnkgYm90aCBwbGF0Zm9ybXMsIGJ1dCBoYXZlbid0IGFjdHVh
bGx5IHRyaWVkIGNvbXBpbGluZwogICAgICAgIGl0IG9uIHRoZSBNYWMgeWV0LgoKICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5zbG46IEFkZGVkIEltYWdlRGlmZi52Y3Byb2ouCiAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jZy9JbWFnZURpZmYuY3BwOiBDb3BpZWQgZnJvbQogICAgICAgIER1bXBSZW5kZXJU
cmVlL21hYy9JbWFnZURpZmYubW0gYW5kIHBvcnRlZCB0byBDRyBhbmQgQysrLgogICAgICAgICht
YWluKToKICAgICAgICAoY3JlYXRlSW1hZ2VGcm9tU3RkaW4pOgogICAgICAgIChjb21wYXJlSW1h
Z2VzKToKICAgICAgICAoZ2V0RGlmZmVyZW5jZUJpdG1hcCk6CiAgICAgICAgKGNvbXB1dGVQZXJj
ZW50YWdlRGlmZmVyZW50KToKICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5jcHA6IEFkZGVkLgogICAgICAgIChwcmludFBORyk6IER1bXBzIGEgQ0dJbWFnZVJl
ZiBhcyBhIFBORyB0byBzdGRvdXQsIGFsb25nIHdpdGggYQogICAgICAgIENvbnRlbnQtTGVuZ3Ro
IGhlYWRlci4KICAgICAgICAoZ2V0TUQ1SGFzaFN0cmluZ0ZvckJpdG1hcCk6CiAgICAgICAgKGR1
bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToKICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oOiBBZGRlZC4KICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CiAgICAgICAgKGR1bXApOiBEbyBhIHBp
eGVsIGR1bXAgaWYgcmVxdWVzdGVkLgogICAgICAgIChtYWluKToKICAgICAgICAgICAtIFB1dCBz
dGRvdXQgaW4gYmluYXJ5IG1vZGUgc28gdGhhdCBuZXdsaW5lcyBkb24ndCBnZXQgdHJhbnNsYXRl
ZAogICAgICAgICAgICAgdG8gQ1JMRiBwYWlycy4KICAgICAgICAgICAtIFBhcnNlIG5ldyBvcHRp
b25zIGZvciBwaXhlbCB0ZXN0cy4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS52Y3Byb2o6IEFkZGVkIG5ldyBmaWxlcy4KICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9JbWFnZURpZmYudmNwcm9qOiBBZGRlZC4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9NRDUuY3BwOiBBZGRlZC4gV2luZG93cyBNRDUgZnVuY3Rpb25zIGFyZW4ndAogICAgICAgIGF2
YWlsYWJsZSBpbiBhIGhlYWRlciBvciBpbXBvcnQgbGlicmFyeSwgc28gd2UgaGF2ZSB0byBnbyB0
aHJvdWdoIHRoaXMKICAgICAgICBMb2FkTGlicmFyeS9HZXRQcm9jQWRkcmVzcyBkYW5jZSB0byB1
c2UgdGhlbS4KICAgICAgICAoY3J5cHRETEwpOgogICAgICAgIChpbml0KToKICAgICAgICAodXBk
YXRlKToKICAgICAgICAoZmluYWwpOgogICAgICAgIChNRDVfSW5pdCk6CiAgICAgICAgKE1ENV9V
cGRhdGUpOgogICAgICAgIChNRDVfRmluYWwpOgogICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L01ENS5oOiBBZGRlZC4KICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBw
b3J0Lmg6IEFkZGVkLgogICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBv
cnRXaW4uY3BwOiBBZGRlZC4KICAgICAgICAoZ2V0Qml0bWFwQ29udGV4dEZyb21XZWJWaWV3KTog
Rm9yY2VzIHRoZSBXZWJWaWV3IHRvIHBhaW50IHVzaW5nIGEKICAgICAgICBXTV9QUklOVENMSUVO
VCBtZXNzYWdlLCBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIGEgQ0dCaXRtYXBDb250ZXh0LgogICAg
ICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOgogICAgICAgICAgIC0gUmVtb3ZlZCB0aGUg
Q1JMRiBoYWNrIG5vdyB0aGF0IHdlIGhhdmUgc3Rkb3V0IGluIGJpbmFyeSBtb2RlLgogICAgICAg
ICAgIC0gRml4ZWQgdGhlIFVSTCBnZW5lcmF0aW9uIGZvciBpbWFnZSBkaWZmcyBvbiBXaW5kb3dz
LgotLS0KIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgOCArCiBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnNsbiAgICAgICAgICAg
ICAgICB8ICAgMjEgKystCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgNTQgKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnNsbiAgICAgIHwgICAgOCArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
Zy9JbWFnZURpZmYuY3BwICAgICAgICB8ICAyMDMgKysrKysrKysrKysrKysrKysrKysKIC4uLi9E
dW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwICAgICAgIHwgIDEwNSArKysr
KysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cu
aCB8ICAgNDEgKysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcCAgfCAgIDUzICsrKystLQogLi4uL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS52Y3Byb2ogICAgICAgfCAgIDQwICsrKy0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9JbWFnZURpZmYudmNwcm9qICAgIHwgIDE4MiArKysrKysrKysrKysrKysrKysKIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuY3BwICAgICAgICAgICAgIHwgICA3NyArKysr
KysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oICAgICAgICAgICAgICAg
fCAgIDQ1ICsrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3Vw
cG9ydC5oICB8ICAgMzYgKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBw
b3J0V2luLmNwcCAgICAgfCAgIDY3ICsrKysrKysKIFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdl
YmtpdC10ZXN0cyAgICAgICAgICAgICAgIHwgICAgNyArLQogMTUgZmlsZXMgY2hhbmdlZCwgOTE3
IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZi5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1w
U3VwcG9ydENHLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vSW1hZ2VEaWZmLnZjcHJvagogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9NRDUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL01ENS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAoK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
aW5kZXggYjA5MDg4My4uZWZkYzFhOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAwNy0xMS0yNSAg
QWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEltYWdlRGlmZi52
Y3Byb2ogdG8gV2ViS2l0LnNsbgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXQuc2xuOgorCiAyMDA3LTExLTE3ICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0
LnNsbiBiL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuc2xuCmluZGV4IDkxOGQ2Y2Qu
LmYxOTNlOTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuc2xu
CisrKyBiL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuc2xuCkBAIC0zLDExICszLDEx
IEBAIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9u
IDkuMDAKICMgVmlzdWFsIFN0dWRpbyAyMDA1DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFE
MC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJXZWJLaXQiLCAiV2ViS2l0LnZjcHJvaiIsICJ7MDY2
MkE4QTktODJBMy00NjM4LTk3RDgtRUM0MjVEOEQ4N0M5fSINCiAJUHJvamVjdFNlY3Rpb24oUHJv
amVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJezAxMUQxMEYxLUI2NTYtNEExQi1B
MEMzLTM4NDJGMDIxMjJDNX0gPSB7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0MkYwMjEyMkM1
fQ0KLQkJezkxNzYyQkUyLTg3RUYtNEY1QS1BNDgwLTQ4QjkwRUIzRjQwNn0gPSB7OTE3NjJCRTIt
ODdFRi00RjVBLUE0ODAtNDhCOTBFQjNGNDA2fQ0KLQkJezFDMTYzMzdCLUFDRjMtNEQwMy1BQTkw
LTg1MUM1QjVFQURBNn0gPSB7MUMxNjMzN0ItQUNGMy00RDAzLUFBOTAtODUxQzVCNUVBREE2fQ0K
LQkJe0I4NDM3QTQxLTY3QkMtNDc2OS05NDUyLTQ1MjAzODI3RjgyMX0gPSB7Qjg0MzdBNDEtNjdC
Qy00NzY5LTk0NTItNDUyMDM4MjdGODIxfQ0KIAkJe0FBOEE1QTg1LTU5MkItNDM1Ny1CQzYwLUUw
RTkxRTAyNkFGNn0gPSB7QUE4QTVBODUtNTkyQi00MzU3LUJDNjAtRTBFOTFFMDI2QUY2fQ0KKwkJ
e0I4NDM3QTQxLTY3QkMtNDc2OS05NDUyLTQ1MjAzODI3RjgyMX0gPSB7Qjg0MzdBNDEtNjdCQy00
NzY5LTk0NTItNDUyMDM4MjdGODIxfQ0KKwkJezFDMTYzMzdCLUFDRjMtNEQwMy1BQTkwLTg1MUM1
QjVFQURBNn0gPSB7MUMxNjMzN0ItQUNGMy00RDAzLUFBOTAtODUxQzVCNUVBREE2fQ0KKwkJezkx
NzYyQkUyLTg3RUYtNEY1QS1BNDgwLTQ4QjkwRUIzRjQwNn0gPSB7OTE3NjJCRTItODdFRi00RjVB
LUE0ODAtNDhCOTBFQjNGNDA2fQ0KKwkJezAxMUQxMEYxLUI2NTYtNEExQi1BMEMzLTM4NDJGMDIx
MjJDNX0gPSB7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0MkYwMjEyMkM1fQ0KIAlFbmRQcm9q
ZWN0U2VjdGlvbg0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThE
MTEtMDBBMEM5MUJDOTQyfSIpID0gIldlYktpdEdVSUQiLCAiV2ViS2l0R1VJRC52Y3Byb2oiLCAi
e0I4NDM3QTQxLTY3QkMtNDc2OS05NDUyLTQ1MjAzODI3RjgyMX0iDQpAQCAtNDIsOCArNDIsOCBA
QCBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIkph
dmFTY3JpcHRDb3JlIiwgIi4uXC4uXC4uXAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VC
OC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidGVzdGtqcyIsICIuLlwuLlwuLlxK
YXZhU2NyaXB0Q29yZVxKYXZhU2NyaXB0Q29yZS52Y3Byb2pcdGVzdGtqc1x0ZXN0a2pzLnZjcHJv
aiIsICJ7QzU5RTUxMjktQjQ1My00OUI3LUE1MkItMUUxMDQ3MTVGNzZFfSINCiAJUHJvamVjdFNl
Y3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJezAxMUQxMEYxLUI2
NTYtNEExQi1BMEMzLTM4NDJGMDIxMjJDNX0gPSB7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0
MkYwMjEyMkM1fQ0KIAkJe0FBOEE1QTg1LTU5MkItNDM1Ny1CQzYwLUUwRTkxRTAyNkFGNn0gPSB7
QUE4QTVBODUtNTkyQi00MzU3LUJDNjAtRTBFOTFFMDI2QUY2fQ0KKwkJezAxMUQxMEYxLUI2NTYt
NEExQi1BMEMzLTM4NDJGMDIxMjJDNX0gPSB7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0MkYw
MjEyMkM1fQ0KIAlFbmRQcm9qZWN0U2VjdGlvbg0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJD
OUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImRmdGFibGVzIiwgIi4uXC4u
XC4uXEphdmFTY3JpcHRDb3JlXEphdmFTY3JpcHRDb3JlLnZjcHJvalxkZnRhYmxlc1xkZnRhYmxl
cy52Y3Byb2oiLCAie0JDMjk4MUMwLTY3QTUtNEEzQy04NzlCLTc4NEJDQkRFMjU0MX0iDQpAQCAt
NTIsNiArNTIsMTMgQEAgUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFC
Qzk0Mn0iKSA9ICJXVEYiLCAiLi5cLi5cLi5cSmF2YVNjcmlwdEMKIEVuZFByb2plY3QNCiBQcm9q
ZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIkZpbmRTYWZh
cmkiLCAiLi5cLi5cLi5cV2ViS2l0VG9vbHNcRmluZFNhZmFyaVxGaW5kU2FmYXJpLnZjcHJvaiIs
ICJ7REEzMURBNTItNjY3NS00OEQ0LTg5RTAtMzMzQTcxNDQzOTdDfSINCiBFbmRQcm9qZWN0DQor
UHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJJbWFn
ZURpZmYiLCAiLi5cLi5cLi5cV2ViS2l0VG9vbHNcRHVtcFJlbmRlclRyZWVcd2luXEltYWdlRGlm
Zi52Y3Byb2oiLCAiezU5Q0MwNTQ3LTcwQUMtNDk5Qy05QjE5LUVDMDFDNkY2MTEzN30iDQorCVBy
b2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXsxQzE2
MzM3Qi1BQ0YzLTREMDMtQUE5MC04NTFDNUI1RUFEQTZ9ID0gezFDMTYzMzdCLUFDRjMtNEQwMy1B
QTkwLTg1MUM1QjVFQURBNn0NCisJCXtBQThBNUE4NS01OTJCLTQzNTctQkM2MC1FMEU5MUUwMjZB
RjZ9ID0ge0FBOEE1QTg1LTU5MkItNDM1Ny1CQzYwLUUwRTkxRTAyNkFGNn0NCisJCXswMTFEMTBG
MS1CNjU2LTRBMUItQTBDMy0zODQyRjAyMTIyQzV9ID0gezAxMUQxMEYxLUI2NTYtNEExQi1BMEMz
LTM4NDJGMDIxMjJDNX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQogR2xvYmFs
DQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNv
bHV0aW9uDQogCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQpAQCAtMTAyLDYgKzEwOSwxMCBA
QCBHbG9iYWwKIAkJe0RBMzFEQTUyLTY2NzUtNDhENC04OUUwLTMzM0E3MTQ0Mzk3Q30uRGVidWd8
V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7REEzMURBNTItNjY3NS00OEQ0LTg5RTAt
MzMzQTcxNDQzOTdDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJ
CXtEQTMxREE1Mi02Njc1LTQ4RDQtODlFMC0zMzNBNzE0NDM5N0N9LlJlbGVhc2V8V2luMzIuQnVp
bGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1FQzAxQzZG
NjExMzd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7NTlDQzA1NDct
NzBBQy00OTlDLTlCMTktRUMwMUM2RjYxMTM3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8
V2luMzINCisJCXs1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1FQzAxQzZGNjExMzd9LlJlbGVhc2V8
V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05
QjE5LUVDMDFDNkY2MTEzN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0K
IAlFbmRHbG9iYWxTZWN0aW9uDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9
IHByZVNvbHV0aW9uDQogCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMmFjZDVm
Yi4uY2M0MjNjNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDA3LTExLTI1ICBBZGFtIFJvYmVu
ICA8YXJvYmVuQGFwcGxlLmNvbT4KKworICAgICAgICBCdWcgMTYxMzM6IEltcGxlbWVudCBwaXhl
bCB0ZXN0IHN1cHBvcnQgb24gV2luZG93cworCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTMzCisKKyAgICAgICAgVGhpcyBtb3N0bHkgaW52b2x2ZWQg
dGFraW5nIHRoZSBNYWMgY29kZSBhbmQgcG9ydGluZyB0aGUgT2JqZWN0aXZlIEMKKyAgICAgICAg
cGFydHMgdG8gZWl0aGVyIENHIG9yIFBPU0lYIGNhbGxzLiBJIHRyaWVkIHRvIGVuc3VyZSB0aGF0
IG15IG5ldyBjb2RlCisgICAgICAgIGNhbiBiZSBzaGFyZWQgYnkgYm90aCBwbGF0Zm9ybXMsIGJ1
dCBoYXZlbid0IGFjdHVhbGx5IHRyaWVkIGNvbXBpbGluZworICAgICAgICBpdCBvbiB0aGUgTWFj
IHlldC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnNsbjogQWRkZWQgSW1hZ2VEaWZmLnZjcHJv
ai4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmYuY3BwOiBDb3BpZWQgZnJv
bQorICAgICAgICBEdW1wUmVuZGVyVHJlZS9tYWMvSW1hZ2VEaWZmLm1tIGFuZCBwb3J0ZWQgdG8g
Q0cgYW5kIEMrKy4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY3JlYXRlSW1hZ2VGcm9tU3Rk
aW4pOgorICAgICAgICAoY29tcGFyZUltYWdlcyk6CisgICAgICAgIChnZXREaWZmZXJlbmNlQml0
bWFwKToKKyAgICAgICAgKGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHByaW50UE5HKTogRHVtcHMgYSBDR0ltYWdlUmVmIGFzIGEgUE5HIHRvIHN0ZG91dCwgYWxvbmcg
d2l0aCBhCisgICAgICAgIENvbnRlbnQtTGVuZ3RoIGhlYWRlci4KKyAgICAgICAgKGdldE1ENUhh
c2hTdHJpbmdGb3JCaXRtYXApOgorICAgICAgICAoZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBh
cmVXaXRoRXhwZWN0ZWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICAoZHVtcCk6IERvIGEgcGl4ZWwgZHVtcCBpZiByZXF1ZXN0ZWQu
CisgICAgICAgIChtYWluKToKKyAgICAgICAgICAgLSBQdXQgc3Rkb3V0IGluIGJpbmFyeSBtb2Rl
IHNvIHRoYXQgbmV3bGluZXMgZG9uJ3QgZ2V0IHRyYW5zbGF0ZWQKKyAgICAgICAgICAgICB0byBD
UkxGIHBhaXJzLgorICAgICAgICAgICAtIFBhcnNlIG5ldyBvcHRpb25zIGZvciBwaXhlbCB0ZXN0
cy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qOiBB
ZGRlZCBuZXcgZmlsZXMuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ltYWdlRGlmZi52
Y3Byb2o6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9NRDUuY3BwOiBBZGRl
ZC4gV2luZG93cyBNRDUgZnVuY3Rpb25zIGFyZW4ndAorICAgICAgICBhdmFpbGFibGUgaW4gYSBo
ZWFkZXIgb3IgaW1wb3J0IGxpYnJhcnksIHNvIHdlIGhhdmUgdG8gZ28gdGhyb3VnaCB0aGlzCisg
ICAgICAgIExvYWRMaWJyYXJ5L0dldFByb2NBZGRyZXNzIGRhbmNlIHRvIHVzZSB0aGVtLgorICAg
ICAgICAoY3J5cHRETEwpOgorICAgICAgICAoaW5pdCk6CisgICAgICAgICh1cGRhdGUpOgorICAg
ICAgICAoZmluYWwpOgorICAgICAgICAoTUQ1X0luaXQpOgorICAgICAgICAoTUQ1X1VwZGF0ZSk6
CisgICAgICAgIChNRDVfRmluYWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9NRDUu
aDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnQu
aDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRX
aW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKGdldEJpdG1hcENvbnRleHRGcm9tV2ViVmlldyk6IEZv
cmNlcyB0aGUgV2ViVmlldyB0byBwYWludCB1c2luZyBhCisgICAgICAgIFdNX1BSSU5UQ0xJRU5U
IG1lc3NhZ2UsIGFuZCBwdXRzIHRoZSByZXN1bHQgaW4gYSBDR0JpdG1hcENvbnRleHQuCisgICAg
ICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOgorICAgICAgICAgICAtIFJlbW92ZWQgdGhl
IENSTEYgaGFjayBub3cgdGhhdCB3ZSBoYXZlIHN0ZG91dCBpbiBiaW5hcnkgbW9kZS4KKyAgICAg
ICAgICAgLSBGaXhlZCB0aGUgVVJMIGdlbmVyYXRpb24gZm9yIGltYWdlIGRpZmZzIG9uIFdpbmRv
d3MuCisKIDIwMDctMTEtMjMgIERhdmlkIEQuIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRml4IGJpc2VjdC1idWlsZHMgdG8gd29yayB3aXRoIHJlY2VudCBXZWJLaXQg
bmlnaHRseSBidWlsZHMuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5zbG4gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5zbG4KaW5kZXggZWJhNDlhZi4uOWE5MDg2OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuc2xuCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnNsbgpAQCAtNyw2ICs3LDggQEAgUHJvamVjdCgiezhC
QzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJUZXN0TmV0c2NhcGVQbHVn
aW4iLCAid2luXFQKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThE
MTEtMDBBMEM5MUJDOTQyfSIpID0gIkZpbmRTYWZhcmkiLCAiLi5cRmluZFNhZmFyaVxGaW5kU2Fm
YXJpLnZjcHJvaiIsICJ7REEzMURBNTItNjY3NS00OEQ0LTg5RTAtMzMzQTcxNDQzOTdDfSINCiBF
bmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0
Mn0iKSA9ICJJbWFnZURpZmYiLCAid2luXEltYWdlRGlmZi52Y3Byb2oiLCAiezU5Q0MwNTQ3LTcw
QUMtNDk5Qy05QjE5LUVDMDFDNkY2MTEzN30iDQorRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9i
YWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0K
IAkJRGVidWdfSW50ZXJuYWx8V2luMzIgPSBEZWJ1Z19JbnRlcm5hbHxXaW4zMg0KQEAgLTMyLDYg
KzM0LDEyIEBAIEdsb2JhbAogCQl7REEzMURBNTItNjY3NS00OEQ0LTg5RTAtMzMzQTcxNDQzOTdD
fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtEQTMxREE1Mi02Njc1LTQ4
RDQtODlFMC0zMzNBNzE0NDM5N0N9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxX
aW4zMg0KIAkJe0RBMzFEQTUyLTY2NzUtNDhENC04OUUwLTMzM0E3MTQ0Mzk3Q30uUmVsZWFzZXxX
aW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05QjE5
LUVDMDFDNkY2MTEzN30uRGVidWdfSW50ZXJuYWx8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2lu
MzINCisJCXs1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1FQzAxQzZGNjExMzd9LkRlYnVnX0ludGVy
bmFsfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05
QjE5LUVDMDFDNkY2MTEzN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJ
CXs1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1FQzAxQzZGNjExMzd9LkRlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05QjE5LUVDMDFDNkY2MTEz
N30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NTlDQzA1NDct
NzBBQy00OTlDLTlCMTktRUMwMUM2RjYxMTM3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxl
YXNlfFdpbjMyDQogCUVuZEdsb2JhbFNlY3Rpb24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblBy
b3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZi5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmYuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMzAwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmYuY3BwCkBAIC0wLDAgKzEsMjAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSBCZW4gTGEgTW9uaWNhIDxiZW4ubGFtb25pY2FA
Z21haWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjZGVmaW5lIG1pbiBtaW4KKworI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dJbWFn
ZS5oPgorI2luY2x1ZGUgPEltYWdlSU8vQ0dJbWFnZURlc3RpbmF0aW9uLmg+CisjaW5jbHVkZSA8
c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRl
IDxpby5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKKy8qIHByb3RvdHlwZXMg
Ki8KK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pOworUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNyZWF0ZUltYWdlRnJvbVN0ZGluKGludCBpbWFnZVNpemUpOwordm9pZCBjb21w
YXJlSW1hZ2VzKENHSW1hZ2VSZWYgYWN0dWFsQml0bWFwLCBDR0ltYWdlUmVmIGJhc2VsaW5lSW1h
Z2UsIHVuc2lnbmVkIHRocmVzaG9sZCk7CitSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBnZXREaWZm
ZXJlbmNlQml0bWFwKENHSW1hZ2VSZWYgYWN0dWFsQml0bWFwLCBDR0ltYWdlUmVmIGJhc2VsaW5l
SW1hZ2UpOworZmxvYXQgY29tcHV0ZVBlcmNlbnRhZ2VEaWZmZXJlbnQoQ0dDb250ZXh0UmVmIGRp
ZmZCaXRtYXAsIHVuc2lnbmVkIHRocmVzaG9sZCk7CisKK3N0YXRpYyBjb25zdCBDRlN0cmluZ1Jl
ZiBrVVRUeXBlUE5HID0gQ0ZTVFIoInB1YmxpYy5wbmciKTsKKworaW50IG1haW4oaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqIGFyZ3ZbXSkKK3sKKyNpZiBQTEFURk9STShXSU4pCisgICAgX3NldG1vZGUo
MCwgX09fQklOQVJZKTsKKyAgICBfc2V0bW9kZSgxLCBfT19CSU5BUlkpOworI2VuZGlmCisKKyAg
ICB1bnNpZ25lZCB0aHJlc2hvbGQgPSAwOworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdj
OyArK2kpIHsKKyAgICAgICAgaWYgKCFzdHJjbXAoYXJndltpXSwgIi10IikgfHwgIXN0cmNtcChh
cmd2W2ldLCAiLS10aHJlc2hvbGQiKSkgeworICAgICAgICAgICAgaWYgKGkgPj0gYXJnYyAtIDEp
CisgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgIHRocmVzaG9sZCA9IHN0cnRv
bChhcmd2W2kgKyAxXSwgMCwgMCk7CisgICAgICAgICAgICArK2k7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNoYXIgYnVmZmVyWzIwNDhdOworICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBhY3R1YWxJbWFnZTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gYmFzZWxpbmVJbWFnZTsKKworICAgIHdoaWxlIChmZ2V0cyhidWZmZXIsIHNpemVvZihidWZm
ZXIpLCBzdGRpbikpIHsKKyAgICAgICAgLy8gcmVtb3ZlIHRoZSBDUgorICAgICAgICBjaGFyKiBu
ZXdMaW5lQ2hhcmFjdGVyID0gc3RyY2hyKGJ1ZmZlciwgJ1xuJyk7CisgICAgICAgIGlmIChuZXdM
aW5lQ2hhcmFjdGVyKQorICAgICAgICAgICAgKm5ld0xpbmVDaGFyYWN0ZXIgPSAnXDAnOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFzdHJuY21wKCJDb250ZW50LWxlbmd0aDogIiwgYnVmZmVyLCAx
NikpIHsKKyAgICAgICAgICAgIHN0cnRvayhidWZmZXIsICIgIik7CisgICAgICAgICAgICBpbnQg
aW1hZ2VTaXplID0gc3RydG9sKHN0cnRvaygwLCAiICIpLCAwLCAxMCk7CisKKyAgICAgICAgICAg
IGlmIChpbWFnZVNpemUgPiAwICYmICFhY3R1YWxJbWFnZSkgCisgICAgICAgICAgICAgICAgYWN0
dWFsSW1hZ2UgPSBjcmVhdGVJbWFnZUZyb21TdGRpbihpbWFnZVNpemUpOworICAgICAgICAgICAg
ZWxzZSBpZiAoaW1hZ2VTaXplID4gMCAmJiAhYmFzZWxpbmVJbWFnZSkKKyAgICAgICAgICAgICAg
ICBiYXNlbGluZUltYWdlID0gY3JlYXRlSW1hZ2VGcm9tU3RkaW4oaW1hZ2VTaXplKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcHV0cygiZXJyb3IsIGltYWdlIHNpemUgbXVz
dCBiZSBzcGVjaWZpZWQuXG4iLCBzdGRvdXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFj
dHVhbEltYWdlICYmIGJhc2VsaW5lSW1hZ2UpIHsKKyAgICAgICAgICAgIGNvbXBhcmVJbWFnZXMo
YWN0dWFsSW1hZ2UuZ2V0KCksIGJhc2VsaW5lSW1hZ2UuZ2V0KCksIHRocmVzaG9sZCk7CisgICAg
ICAgICAgICBhY3R1YWxJbWFnZSA9IDA7CisgICAgICAgICAgICBiYXNlbGluZUltYWdlID0gMDsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgfQorICAg
IAorICAgIHJldHVybiAwOworfQorCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VG
cm9tU3RkaW4oaW50IGJ5dGVzUmVtYWluaW5nKQoreworICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVy
WzIwNDhdOworICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIENG
RGF0YUNyZWF0ZU11dGFibGUoMCwgYnl0ZXNSZW1haW5pbmcpKTsKKyAgICAKKyAgICB3aGlsZSAo
Ynl0ZXNSZW1haW5pbmcgPiAwKSB7CisgICAgICAgIHNpemVfdCBieXRlc1RvUmVhZCA9IG1pbihi
eXRlc1JlbWFpbmluZywgMjA0OCk7CisgICAgICAgIHNpemVfdCBieXRlc1JlYWQgPSBmcmVhZChi
dWZmZXIsIDEsIGJ5dGVzVG9SZWFkLCBzdGRpbik7CisgICAgICAgIENGRGF0YUFwcGVuZEJ5dGVz
KGRhdGEuZ2V0KCksIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oYnl0ZXNSZWFkKSk7Cisg
ICAgICAgIGJ5dGVzUmVtYWluaW5nIC09IHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKKyAg
ICB9CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRD
RiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAgICByZXR1
cm4gUmV0YWluUHRyPENHSW1hZ2VSZWY+KEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGVXaXRoUE5HRGF0
YVByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKK30KKwordm9pZCBjb21wYXJlSW1hZ2VzKENHSW1hZ2VSZWYgYWN0dWFsQml0
bWFwLCBDR0ltYWdlUmVmIGJhc2VsaW5lQml0bWFwLCB1bnNpZ25lZCB0aHJlc2hvbGQpCit7Cisg
ICAgLy8gcHJlcGFyZSB0aGUgZGlmZmVyZW5jZSBibGVuZCB0byBjaGVjayBmb3IgcGl4ZWwgdmFy
aWF0aW9ucworICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGRpZmZCaXRtYXAgPSBnZXREaWZm
ZXJlbmNlQml0bWFwKGFjdHVhbEJpdG1hcCwgYmFzZWxpbmVCaXRtYXApOworICAgICAgICAgICAg
CisgICAgZmxvYXQgcGVyY2VudGFnZSA9IGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KGRpZmZC
aXRtYXAuZ2V0KCksIHRocmVzaG9sZCk7CisgICAgCisgICAgcGVyY2VudGFnZSA9IChmbG9hdCko
KGludCkocGVyY2VudGFnZSAqIDEwMC4wZikpIC8gMTAwLjBmOyAvLyByb3VuZCB0byAyIGRlY2lt
YWwgcGxhY2VzCisgICAgCisgICAgLy8gc2VuZCBtZXNzYWdlIHRvIGxldCB0aGVtIGtub3cgaWYg
YW4gaW1hZ2Ugd2FzIHdyb25nCisgICAgaWYgKHBlcmNlbnRhZ2UgPiAwLjBmKSB7CisgICAgICAg
IC8vIHNpbmNlIHRoZSBkaWZmIG1pZ2h0IGFjdHVhbGx5IHNob3cgc29tZXRoaW5nLCBzZW5kIGl0
IHRvIHN0ZG91dAorICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoQWRvcHRDRiwg
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoZGlmZkJpdG1hcC5nZXQoKSkpOworICAgICAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gaW1hZ2VEYXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0
ZU11dGFibGUoMCwgMCkpOworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVm
PiBpbWFnZURlc3QoQWRvcHRDRiwgQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoaW1h
Z2VEYXRhLmdldCgpLCBrVVRUeXBlUE5HLCAxLCAwKSk7CisgICAgICAgIENHSW1hZ2VEZXN0aW5h
dGlvbkFkZEltYWdlKGltYWdlRGVzdC5nZXQoKSwgaW1hZ2UuZ2V0KCksIDApOworICAgICAgICBD
R0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOworICAgICAgICBwcmlu
dGYoIkNvbnRlbnQtbGVuZ3RoOiAlbHVcbiIsIENGRGF0YUdldExlbmd0aChpbWFnZURhdGEuZ2V0
KCkpKTsKKyAgICAgICAgZndyaXRlKENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdldCgpKSwg
MSwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQoKSksIHN0ZG91dCk7CisgICAgICAgIGZw
cmludGYoc3Rkb3V0LCAiZGlmZjogJTAxLjJmJSUgZmFpbGVkXG4iLCBwZXJjZW50YWdlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBwYXNzZWRc
biIsIHBlcmNlbnRhZ2UpOworfQorCitSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBnZXREaWZmZXJl
bmNlQml0bWFwKENHSW1hZ2VSZWYgdGVzdEJpdG1hcCwgQ0dJbWFnZVJlZiByZWZlcmVuY2VCaXRt
YXApCit7CisgICAgLy8gd2UgbXVzdCBoYXZlIGJvdGggaW1hZ2VzIHRvIHRha2UgZGlmZgorICAg
IGlmICghdGVzdEJpdG1hcCB8fCAhcmVmZXJlbmNlQml0bWFwKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dD
b2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSBu
ZXcgdW5zaWduZWQgY2hhcltDR0ltYWdlR2V0SGVpZ2h0KHRlc3RCaXRtYXApICogQ0dJbWFnZUdl
dEJ5dGVzUGVyUm93KHRlc3RCaXRtYXApXTsKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBj
b250ZXh0KEFkb3B0Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBDR0ltYWdlR2V0V2lk
dGgodGVzdEJpdG1hcCksIENHSW1hZ2VHZXRIZWlnaHQodGVzdEJpdG1hcCksCisgICAgICAgIENH
SW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KHRlc3RCaXRtYXApLCBDR0ltYWdlR2V0Qnl0ZXNQZXJS
b3codGVzdEJpdG1hcCksIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0
dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOworCisgICAgQ0dDb250ZXh0
U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZU5vcm1hbCk7CisgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgc3RhdGljX2Nh
c3Q8Q0dGbG9hdD4oQ0dJbWFnZUdldFdpZHRoKHRlc3RCaXRtYXApKSwgc3RhdGljX2Nhc3Q8Q0dG
bG9hdD4oQ0dJbWFnZUdldEhlaWdodCh0ZXN0Qml0bWFwKSkpLCB0ZXN0Qml0bWFwKTsKKyAgICBD
R0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlRGlmZmVyZW5j
ZSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oQ0dJbWFnZUdldFdpZHRoKHJlZmVyZW5jZUJpdG1hcCkp
LCBzdGF0aWNfY2FzdDxDR0Zsb2F0PihDR0ltYWdlR2V0SGVpZ2h0KHJlZmVyZW5jZUJpdG1hcCkp
KSwgcmVmZXJlbmNlQml0bWFwKTsKKworICAgIHJldHVybiBjb250ZXh0OworfQorCisvKioKKyAq
IENvdW50cyB0aGUgbnVtYmVyIG9mIG5vbi1ibGFjayBwaXhlbHMsIGFuZCByZXR1cm5zIHRoZSBw
ZXJjZW50YWdlCisgKiBvZiBub24tYmxhY2sgcGl4ZWxzIHRvIHRvdGFsIHBpeGVscyBpbiB0aGUg
aW1hZ2UuCisgKi8KK2Zsb2F0IGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KENHQ29udGV4dFJl
ZiBkaWZmQml0bWFwLCB1bnNpZ25lZCB0aHJlc2hvbGQpCit7CisgICAgLy8gaWYgZGlmZkJpYXRt
YXAgaXMgbmlsLCB0aGVuIHRoZXJlIHdhcyBhbiBlcnJvciwgYW5kIGl0IGRpZG4ndCBtYXRjaC4K
KyAgICBpZiAoIWRpZmZCaXRtYXApCisgICAgICAgIHJldHVybiAxMDAuMGY7CisgICAgCisgICAg
Q0dCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBDR0JpdG1hcENvbnRleHRHZXRCaXRtYXBJbmZvKGRp
ZmZCaXRtYXApOworICAgIGFzc2VydCghKGJpdG1hcEluZm8gJiBrQ0dJbWFnZUFscGhhRmlyc3Qp
KTsKKyAgICBhc3NlcnQoIShiaXRtYXBJbmZvICYga0NHQml0bWFwRmxvYXRDb21wb25lbnRzKSk7
CisgICAgCisgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBDR0JpdG1hcENvbnRleHRHZXRIZWlnaHQo
ZGlmZkJpdG1hcCk7CisgICAgc2l6ZV90IHBpeGVsc1dpZGUgPSBDR0JpdG1hcENvbnRleHRHZXRX
aWR0aChkaWZmQml0bWFwKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0JpdG1hcENvbnRl
eHRHZXRCeXRlc1BlclJvdyhkaWZmQml0bWFwKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbFJv
d0RhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oQ0dCaXRtYXBDb250ZXh0R2V0RGF0
YShkaWZmQml0bWFwKSk7CisgICAgdW5zaWduZWQgZGlmZmVyZW5jZXMgPSAwOworICAgIAorICAg
IC8vIE5PVEU6IFRoaXMgbWF5IG5vdCBiZSBzYWZlIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gRU5E
SUFOIHR5cGVzCisgICAgZm9yICh1bnNpZ25lZCByb3cgPSAwOyByb3cgPCBwaXhlbHNIaWdoOyBy
b3crKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbCA9IDA7IGNvbCA8IChwaXhlbHNXaWRl
ICogNCk7IGNvbCArPSA0KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiByZWQgPSBwaXhl
bFJvd0RhdGEgKyBjb2w7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBncmVlbiA9IHJlZCAr
IDE7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBibHVlID0gcmVkICsgMjsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGRpc3RhbmNlID0gKnJlZCArICpncmVlbiArICpibHVlOworICAgICAgICAg
ICAgaWYgKGRpc3RhbmNlID4gdGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgZGlmZmVyZW5j
ZXMrKzsKKyAgICAgICAgICAgICAgICAvLyBzaGlmdCB0aGUgcGl4ZWxzIHRvd2FyZHMgd2hpdGUg
dG8gbWFrZSB0aGVtIG1vcmUgdmlzaWJsZQorICAgICAgICAgICAgICAgICpyZWQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihtaW4oVUNIQVJfTUFYLCAqcmVkICsgMTAwKSk7CisgICAgICAg
ICAgICAgICAgKmdyZWVuID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obWluKFVDSEFSX01B
WCwgKmdyZWVuICsgMTAwKSk7CisgICAgICAgICAgICAgICAgKmJsdWUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihtaW4oVUNIQVJfTUFYLCAqYmx1ZSArIDEwMCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHBpeGVsUm93RGF0YSArPSBieXRlc1BlclJvdzsKKyAgICB9
CisgICAgCisgICAgZmxvYXQgdG90YWxQaXhlbHMgPSBzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxz
SGlnaCAqIHBpeGVsc1dpZGUpOworICAgIHJldHVybiAoZGlmZmVyZW5jZXMgKiAxMDAuZikgLyB0
b3RhbFBpeGVsczsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nn
L1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9Q
aXhlbER1bXBTdXBwb3J0Q0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljk3NjY5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
Zy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgICAgICAgICAgKEMpIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFp
bC5jb20pCisgKiAgICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5o
IgorCisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydENHLmgiCisjaW5jbHVkZSA8SW1hZ2VJTy9D
R0ltYWdlRGVzdGluYXRpb24uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJNRDUuaCIKKyNkZWZp
bmUgc25wcmludGYgX3NucHJpbnRmCisjZWxpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIENPTU1P
Tl9ESUdFU1RfRk9SX09QRU5TU0wKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uRGlnZXN0
Lmg+CisjZW5kaWYKKworc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtVVFR5cGVQTkcgPSBDRlNU
UigicHVibGljLnBuZyIpOworCitzdGF0aWMgdm9pZCBwcmludFBORyhDR0ltYWdlUmVmIGltYWdl
KQoreworICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEoQWRvcHRDRiwg
Q0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5h
dGlvblJlZj4gaW1hZ2VEZXN0KEFkb3B0Q0YsIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhE
YXRhKGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgMCkpOworICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdC5nZXQoKSwgaW1hZ2UsIDApOworICAgIENHSW1hZ2VE
ZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdC5nZXQoKSk7CisgICAgcHJpbnRmKCJDb250ZW50
LWxlbmd0aDogJWx1XG4iLCBDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRhLmdldCgpKSk7CisgICAg
ZndyaXRlKENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdldCgpKSwgMSwgQ0ZEYXRhR2V0TGVu
Z3RoKGltYWdlRGF0YS5nZXQoKSksIHN0ZG91dCk7Cit9CisKK3N0YXRpYyB2b2lkIGdldE1ENUhh
c2hTdHJpbmdGb3JCaXRtYXAoQ0dDb250ZXh0UmVmIGJpdG1hcCwgY2hhciBzdHJpbmdbMzNdKQor
eworICAgIE1ENV9DVFggbWQ1Q29udGV4dDsKKyAgICB1bnNpZ25lZCBjaGFyIGhhc2hbMTZdOwor
ICAgIAorICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0JpdG1hcENvbnRleHRHZXRCaXRzUGVy
UGl4ZWwoYml0bWFwKTsKKyAgICBhc3NlcnQoYml0c1BlclBpeGVsID09IDMyKTsgLy8gSW1hZ2VE
aWZmIGFzc3VtZXMgMzIgYml0IFJHQkEsIHdlIG11c3QgYXMgd2VsbC4KKyAgICBzaXplX3QgYnl0
ZXNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAvIDg7CisgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBD
R0JpdG1hcENvbnRleHRHZXRIZWlnaHQoYml0bWFwKTsKKyAgICBzaXplX3QgcGl4ZWxzV2lkZSA9
IENHQml0bWFwQ29udGV4dEdldFdpZHRoKGJpdG1hcCk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93
ID0gQ0dCaXRtYXBDb250ZXh0R2V0Qnl0ZXNQZXJSb3coYml0bWFwKTsKKyAgICBhc3NlcnQoYnl0
ZXNQZXJSb3cgPj0gKHBpeGVsc1dpZGUgKiBieXRlc1BlclBpeGVsKSk7CisgICAgCisgICAgTUQ1
X0luaXQoJm1kNUNvbnRleHQpOworICAgIHVuc2lnbmVkIGNoYXIqIGJpdG1hcERhdGEgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShiaXRtYXApKTsK
KyAgICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hpZ2g7IHJvdysrKSB7Cisg
ICAgICAgIE1ENV9VcGRhdGUoJm1kNUNvbnRleHQsIGJpdG1hcERhdGEsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwaXhlbHNXaWRlICogYnl0ZXNQZXJQaXhlbCkpOworICAgICAgICBiaXRtYXBEYXRh
ICs9IGJ5dGVzUGVyUm93OworICAgIH0KKyAgICBNRDVfRmluYWwoaGFzaCwgJm1kNUNvbnRleHQp
OworICAgIAorICAgIHN0cmluZ1swXSA9ICdcMCc7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAx
NjsgaSsrKQorICAgICAgICBzbnByaW50ZihzdHJpbmcsIDMzLCAiJXMlMDJ4Iiwgc3RyaW5nLCBo
YXNoW2ldKTsKK30KKwordm9pZCBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZChjb25zdCBjaGFyKiAvKmN1cnJlbnRUZXN0Ki8sIGJvb2wgLypmb3JjZUFsbFRlc3RzVG9E
dW1wUGl4ZWxzKi8pCit7CisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9IGdl
dEJpdG1hcENvbnRleHRGcm9tV2ViVmlldygpOworCisgICAgLy8gQ29tcHV0ZSB0aGUgYWN0dWFs
IGhhc2ggdG8gY29tcGFyZSB0byB0aGUgZXhwZWN0ZWQgaW1hZ2UncyBoYXNoLgorICAgIGNoYXIg
YWN0dWFsSGFzaFszM107CisgICAgZ2V0TUQ1SGFzaFN0cmluZ0ZvckJpdG1hcChjb250ZXh0Lmdl
dCgpLCBhY3R1YWxIYXNoKTsKKyAgICBwcmludGYoIlxuQWN0dWFsSGFzaDogJXNcbiIsIGFjdHVh
bEhhc2gpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb21wYXJlIHRoZSBhY3R1YWxIYXNo
IHRvIHRoZSBleHBlY3RlZCBoYXNoIGhlcmUgYW5kCisgICAgLy8gb25seSBzZXQgZHVtcEltYWdl
IHRvIHRydWUgaWYgdGhleSBkb24ndCBtYXRjaCwgYnV0IERSVCBkb2Vzbid0IGhhdmUKKyAgICAv
LyBlbm91Z2ggaW5mb3JtYXRpb24gY3VycmVudGx5IHRvIGZpbmQgdGhlIGV4cGVjdGVkIGNoZWNr
c3VtIGZpbGUuCisgICAgYm9vbCBkdW1wSW1hZ2UgPSB0cnVlOworCisgICAgaWYgKGR1bXBJbWFn
ZSkgeworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoQWRvcHRDRiwgQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgICAgICBwcmludFBORyhp
bWFnZS5nZXQoKSk7CisgICAgfQorCisgICAgcHJpbnRmKCIjRU9GXG4iKTsKK30KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0M2QxMwotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5oCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykgMjAwNyBHcmFoYW0g
RGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKKyAqICAgICAgICAgICAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGl4ZWxEdW1wU3VwcG9ydENHX2gK
KyNkZWZpbmUgUGl4ZWxEdW1wU3VwcG9ydENHX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0
KiBDR0NvbnRleHRSZWY7CisKK1JldGFpblB0cjxDR0NvbnRleHRSZWY+IGdldEJpdG1hcENvbnRl
eHRGcm9tV2ViVmlldygpOworCisjZW5kaWYgLy8gUGl4ZWxEdW1wU3VwcG9ydENHX2gKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IGMyMTU5OTMuLjQ3MzliZDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVkaXRp
bmdEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyRGVsZWdhdGUuaCIKICNpbmNsdWRl
ICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIK
ICNpbmNsdWRlICJQb2xpY3lEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlVJRGVsZWdhdGUuaCIKICNp
bmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCkBAIC01MCw2ICs1MSw4IEBACiAjaW5jbHVkZSA8V2Vi
S2l0L0lXZWJVUkxSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYktpdC9JV2ViVmlld1ByaXZhdGUu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxpby5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogCkBA
IC02Nyw2ICs3MCw4IEBAIHN0YXRpYyBMUENXU1RSIGZvbnRzRW52aXJvbm1lbnRWYXJpYWJsZSA9
IEwiV0VCS0lUX1RFU1RGT05UUyI7CiBjb25zdCBMUENXU1RSIGtEdW1wUmVuZGVyVHJlZUNsYXNz
TmFtZSA9IEwiRHVtcFJlbmRlclRyZWVXaW5kb3ciOwogCiBzdGF0aWMgYm9vbCBkdW1wVHJlZSA9
IHRydWU7CitzdGF0aWMgYm9vbCBkdW1wUGl4ZWxzOworc3RhdGljIGJvb2wgZHVtcEFsbFBpeGVs
czsKIHN0YXRpYyBib29sIHByaW50U2VwYXJhdG9yczsKIHN0YXRpYyBib29sIGxlYWtDaGVja2lu
ZyA9IGZhbHNlOwogc3RhdGljIGJvb2wgdGltZWRPdXQgPSBmYWxzZTsKQEAgLTU2Myw2ICs1Njgs
MTQgQEAgdm9pZCBkdW1wKCkKIAogICAgIGlmIChwcmludFNlcGFyYXRvcnMpCiAgICAgICAgIHB1
dHMoIiNFT0YiKTsKKworICAgIGlmIChkdW1wUGl4ZWxzKSB7CisgICAgICAgIGlmIChsYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcEFzVGV4dCgpIHx8IGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
RE9NQXNXZWJBcmNoaXZlKCkgfHwgbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dl
YkFyY2hpdmUoKSkKKyAgICAgICAgICAgIHByaW50ZigiI0VPRlxuIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGN1
cnJlbnRUZXN0LCBkdW1wQWxsUGl4ZWxzKTsKKyAgICB9CisKIGZhaWw6CiAgICAgU3lzRnJlZVN0
cmluZyhyZXN1bHRTdHJpbmcpOwogICAgIC8vIFRoaXMgd2lsbCBleGl0IGZyb20gb3VyIG1lc3Nh
Z2UgbG9vcApAQCAtODA2LDkgKzgxOSwzMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJn
dltdKQogewogICAgIGxlYWtDaGVja2luZyA9IGZhbHNlOwogCisgICAgX3NldG1vZGUoMSwgX09f
QklOQVJZKTsKKwogICAgIGluaXRpYWxpemUoR2V0TW9kdWxlSGFuZGxlKDApKTsKIAotICAgIC8v
IEZJWE1FOiBvcHRpb25zCisgICAgY2hhcioqIHRlc3RzID0gbmV3IGNoYXIqW2FyZ2NdOworICAg
IGludCB0ZXN0Q291bnQgPSAwOworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjOyArK2kp
IHsKKyAgICAgICAgaWYgKCFzdHJpY21wKGFyZ3ZbaV0sICItLWR1bXAtYWxsLXBpeGVscyIpKSB7
CisgICAgICAgICAgICBkdW1wQWxsUGl4ZWxzID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzdHJpY21wKGFyZ3ZbaV0sICItLXBpeGVsLXRl
c3RzIikpIHsKKyAgICAgICAgICAgIGR1bXBQaXhlbHMgPSB0cnVlOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXN0cmljbXAoYXJndltpXSwgIi0tdGhy
ZWFkZWQiKSkgeworICAgICAgICAgICAgdGhyZWFkZWQgPSB0cnVlOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICB0ZXN0c1t0ZXN0Q291bnQrK10gPSBhcmd2W2ld
OworICAgIH0KIAogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKICAgICBIUkVTVUxUIGhy
ID0gQ29DcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJWaWV3LCAwLCBDTFNDVFhfQUxMLCBJSURfSVdl
YlZpZXcsICh2b2lkKiopJndlYlZpZXcpOwpAQCAtODkyLDE4ICs5MjcsMTAgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgX0NydE1lbUNoZWNrcG9pbnQoJmVudHJ5
VG9NYWluTWVtQ2hlY2twb2ludCk7CiAjZW5kaWYKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
YXJnYzsgKytpKQotICAgICAgICBpZiAoIXN0cmljbXAoYXJndltpXSwgIi0tdGhyZWFkZWQiKSkg
ewotICAgICAgICAgICAgYXJndltpXSA9IGFyZ3ZbYXJnYyAtIDFdOwotICAgICAgICAgICAgYXJn
Yy0tOwotICAgICAgICAgICAgdGhyZWFkZWQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLQogICAgIGlmICh0aHJlYWRlZCkKICAgICAgICAgc3RhcnRKYXZhU2NyaXB0VGhy
ZWFkcygpOwogCi0gICAgaWYgKGFyZ2MgPT0gMiAmJiBzdHJjbXAoYXJndlsxXSwgIi0iKSA9PSAw
KSB7CisgICAgaWYgKHRlc3RDb3VudCA9PSAxICYmICFzdHJjbXAodGVzdHNbMF0sICItIikpIHsK
ICAgICAgICAgY2hhciBmaWxlbmFtZUJ1ZmZlclsyMDQ4XTsKICAgICAgICAgcHJpbnRTZXBhcmF0
b3JzID0gdHJ1ZTsKICAgICAgICAgd2hpbGUgKGZnZXRzKGZpbGVuYW1lQnVmZmVyLCBzaXplb2Yo
ZmlsZW5hbWVCdWZmZXIpLCBzdGRpbikpIHsKQEAgLTkxOCw5ICs5NDUsOSBAQCBpbnQgbWFpbihp
bnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBwcmludFNlcGFyYXRvcnMgPSBhcmdjID4gMjsK
LSAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgIT0gYXJnYzsgaSsrKQotICAgICAgICAgICAgcnVu
VGVzdChhcmd2W2ldKTsKKyAgICAgICAgcHJpbnRTZXBhcmF0b3JzID0gdGVzdENvdW50ID4gMSB8
fCAoZHVtcFBpeGVscyAmJiBkdW1wVHJlZSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
dGVzdENvdW50OyBpKyspCisgICAgICAgICAgICBydW5UZXN0KHRlc3RzW2ldKTsKICAgICB9CiAK
ICAgICBpZiAodGhyZWFkZWQpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLnZjcHJvagppbmRleCA2NDQ3YmM0Li5lZjk5OGJlIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9q
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3By
b2oKQEAgLTEsNyArMSw3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dz
LTEyNTEiPz4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4N
CiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVy
c2lvbj0iOCwwMCINCisJVmVyc2lvbj0iOC4wMCINCiAJTmFtZT0iRHVtcFJlbmRlclRyZWUiDQog
CVByb2plY3RHVUlEPSJ7NjU2N0RGRDQtRDZERS00Q0Q1LTgyNUQtMTdFMzUzRDE2MEUxfSINCiAJ
Um9vdE5hbWVzcGFjZT0iRHVtcFJlbmRlclRyZWUiDQpAQCAtNDEsNyArNDEsNyBAQAogCQkJPFRv
b2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJT3B0aW1pemF0aW9uPSIwIg0K
LQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpXC4m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLiZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRl
XEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7
OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OyINCisJCQkJQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGlyKVwuJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxjZyZxdW90OzsmcXVv
dDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNv
cmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90
OyINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19DT05TT0xFO19TQ0xfU0VD
VVJFX05PX0RFUFJFQ0FURTtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiDQogCQkJCU1pbmltYWxS
ZWJ1aWxkPSJ0cnVlIg0KIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQpAQCAtNjIsNyArNjIs
NyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFk
ZGl0aW9uYWxEZXBlbmRlbmNpZXM9IldlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGli
IFdlYktpdCQoV2ViS2l0RExMQ29uZmlnU3VmZml4KS5saWIgV1RGJChXZWJLaXRDb25maWdTdWZm
aXgpLmxpYiBDb3JlR3JhcGhpY3MkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBDb3JlRm91bmRh
dGlvbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdT
dWZmaXgpLmxpYiBnZGkzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1c2VyMzIubGliIg0K
KwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJXZWJLaXRHVUlEJChXZWJLaXRDb25maWdTdWZm
aXgpLmxpYiBXZWJLaXQkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkubGliIFdURiQoV2ViS2l0Q29u
ZmlnU3VmZml4KS5saWIgQ29yZUdyYXBoaWNzJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgQ29y
ZUZvdW5kYXRpb24kKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBwdGhyZWFkVkMyJChMaWJyYXJ5
Q29uZmlnU3VmZml4KS5saWIgc2hsd2FwaS5saWIgZ2RpMzIubGliIG9sZTMyLmxpYiBvbGVhdXQz
Mi5saWIgdXNlcjMyLmxpYiINCiAJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5h
bWUpJChXZWJLaXRDb25maWdTdWZmaXgpLmV4ZSINCiAJCQkJTGlua0luY3JlbWVudGFsPSIyIg0K
IAkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdE91dHB1dERp
cilcbGliJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxsaWImcXVvdDs7JnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGJpbiZxdW90OyINCkBAIC0xMjMsNyArMTIzLDcgQEAKIAkJCS8+
DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25h
bEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGlyKVwuJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVh
ZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29y
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDsiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcilcLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cY2cmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5j
bHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZx
dW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDsiDQogCQkJCVByZXBy
b2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEU7X1NDTF9TRUNVUkVfTk9f
REVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSINCiAJCQkJUnVudGltZUxpYnJhcnk9
IjIiDQogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KQEAgLTE0Miw3ICsxNDIsNyBAQAog
CQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9u
YWxEZXBlbmRlbmNpZXM9IldlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYktp
dCQoV2ViS2l0RExMQ29uZmlnU3VmZml4KS5saWIgV1RGJChXZWJLaXRDb25maWdTdWZmaXgpLmxp
YiBDb3JlR3JhcGhpY3MkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBDb3JlRm91bmRhdGlvbiQo
TGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgp
LmxpYiBnZGkzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1c2VyMzIubGliIg0KKwkJCQlB
ZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJXZWJLaXRHVUlEJChXZWJLaXRDb25maWdTdWZmaXgpLmxp
YiBXZWJLaXQkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkubGliIFdURiQoV2ViS2l0Q29uZmlnU3Vm
Zml4KS5saWIgQ29yZUdyYXBoaWNzJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgQ29yZUZvdW5k
YXRpb24kKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29uZmln
U3VmZml4KS5saWIgc2hsd2FwaS5saWIgZ2RpMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIg
dXNlcjMyLmxpYiINCiAJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpJChX
ZWJLaXRDb25maWdTdWZmaXgpLmV4ZSINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlB
ZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdE91dHB1dERpcilcbGli
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxsaWImcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXGJpbiZxdW90OyINCkBAIC0yMDUsNyArMjA1LDcgQEAKIAkJCTxUb29sDQog
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGlyKVwuJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXElu
Y2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3
YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVv
dDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDsiDQorCQkJCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcilcLiZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpXC4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cY2cmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXElu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxw
dGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlJnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDsiDQog
CQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEU7X1NDTF9T
RUNVUkVfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSINCiAJCQkJTWluaW1h
bFJlYnVpbGQ9InRydWUiDQogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCkBAIC0yMjYsNyAr
MjI2LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJ
CQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJXZWJLaXRHVUlEJChXZWJLaXRDb25maWdTdWZmaXgp
LmxpYiBXZWJLaXQkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkubGliIFdURiQoV2ViS2l0Q29uZmln
U3VmZml4KS5saWIgQ29yZUdyYXBoaWNzJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgQ29yZUZv
dW5kYXRpb24kKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBwdGhyZWFkVkMyJChMaWJyYXJ5Q29u
ZmlnU3VmZml4KS5saWIgZ2RpMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXNlcjMyLmxp
YiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iV2ViS2l0R1VJRCQoV2ViS2l0Q29uZmln
U3VmZml4KS5saWIgV2ViS2l0JChXZWJLaXRETExDb25maWdTdWZmaXgpLmxpYiBXVEYkKFdlYktp
dENvbmZpZ1N1ZmZpeCkubGliIENvcmVHcmFwaGljcyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGli
IENvcmVGb3VuZGF0aW9uJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgcHRocmVhZFZDMiQoTGli
cmFyeUNvbmZpZ1N1ZmZpeCkubGliIHNobHdhcGkubGliIGdkaTMyLmxpYiBvbGUzMi5saWIgb2xl
YXV0MzIubGliIHVzZXIzMi5saWIiDQogCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2pl
Y3ROYW1lKSQoV2ViS2l0Q29uZmlnU3VmZml4KS5leGUiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0i
MiINCiAJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXGxpYiZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcbGliJnF1b3Q7OyZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxiaW4mcXVvdDsiDQpAQCAtMzU0LDYgKzM1NCwzMCBAQAog
CQkJPg0KIAkJPC9GaWxlPg0KIAkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii5cTUQ1LmNwcCIN
CisJCQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLlxNRDUuaCIN
CisJCQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLlxQaXhlbER1
bXBTdXBwb3J0LmgiDQorCQkJPg0KKwkJPC9GaWxlPg0KKwkJPEZpbGUNCisJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGNnXFBpeGVsRHVtcFN1cHBvcnRDRy5jcHAiDQorCQkJPg0KKwkJPC9GaWxlPg0KKwkJ
PEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNnXFBpeGVsRHVtcFN1cHBvcnRDRy5oIg0KKwkJ
CT4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuXFBpeGVsRHVtcFN1
cHBvcnRXaW4uY3BwIg0KKwkJCT4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQogCQkJUmVsYXRpdmVQ
YXRoPSIuLlxXb3JrUXVldWUuY3BwIg0KIAkJCT4NCiAJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmLnZjcHJvaiBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9JbWFnZURpZmYudmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmUzYjFiNDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmLnZjcHJvagpAQCAtMCwwICsxLDE4MiBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0
dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQorCVZlcnNpb249IjguMDAi
DQorCU5hbWU9IkltYWdlRGlmZiINCisJUHJvamVjdEdVSUQ9Ins1OUNDMDU0Ny03MEFDLTQ5OUMt
OUIxOS1FQzAxQzZGNjExMzd9Ig0KKwlSb290TmFtZXNwYWNlPSJJbWFnZURpZmYiDQorCT4NCisJ
PFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5hbWU9IldpbjMyIg0KKwkJLz4NCisJPC9Q
bGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9vbEZpbGVzPg0KKwk8Q29uZmlndXJhdGlv
bnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1
dERpcmVjdG9yeT0iJChXZWJLaXRPdXRwdXREaXIpXGJpbiINCisJCQlJbnRlcm1lZGlhdGVEaXJl
Y3Rvcnk9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcJChDb25maWd1cmF0
aW9uTmFtZSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJQ2hhcmFjdGVyU2V0PSIy
Ig0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJ
CS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQorCQkJLz4NCisJ
CQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJ
PFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+
DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQor
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCU9wdGltaXphdGlvbj0iMCINCisJCQkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxjZyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXHdpbiZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxp
bmNsdWRlJnF1b3Q7Ig0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVf
Tk9fV0FSTklOR1MiDQorCQkJCU1pbmltYWxSZWJ1aWxkPSJ0cnVlIg0KKwkJCQlCYXNpY1J1bnRp
bWVDaGVja3M9IjMiDQorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KKwkJCQlXYXJuaW5nTGV2ZWw9
IjQiDQorCQkJCVdhcm5Bc0Vycm9yPSJ0cnVlIg0KKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5
UHJvYmxlbXM9InRydWUiDQorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiDQorCQkJLz4N
CisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCisJ
CQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJ
Lz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQorCQkJLz4NCisJ
CQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQorCQkJCUxpbmtMaWJyYXJ5RGVwZW5k
ZW5jaWVzPSJmYWxzZSINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iQ29yZUdyYXBoaWNz
LmxpYiBDb3JlRm91bmRhdGlvbi5saWIiDQorCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3Jp
ZXM9IiQoV2ViS2l0T3V0cHV0RGlyKVxsaWI7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGxpYiINCisJ
CQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIx
Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJ
CQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQor
CQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJW
Q0JzY01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wi
DQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkv
Pg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJ
CQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9D
b25maWd1cmF0aW9uPg0KKwkJPENvbmZpZ3VyYXRpb24NCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMy
Ig0KKwkJCU91dHB1dERpcmVjdG9yeT0iJChXZWJLaXRPdXRwdXREaXIpXGJpbiINCisJCQlJbnRl
cm1lZGlhdGVEaXJlY3Rvcnk9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
JChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQorCQkJQ2hh
cmFjdGVyU2V0PSIyIg0KKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCisJCQk+DQor
CQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxU
b29sDQorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJ
CQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJ
CU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCisJCQkvPg0KKwkJCTxUb29s
DQorCQkJCU5hbWU9IlZDTUlETFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVv
dDskKFByb2plY3REaXIpXC4uXGNnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cd2luJnF1
b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDsiDQorCQkJCVByZXByb2Nlc3NvckRl
ZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyINCisJCQkJUnVudGltZUxpYnJhcnk9
IjIiDQorCQkJCVdhcm5pbmdMZXZlbD0iNCINCisJCQkJV2FybkFzRXJyb3I9InRydWUiDQorCQkJ
CURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0idHJ1ZSINCisJCQkJRGVidWdJbmZvcm1h
dGlvbkZvcm1hdD0iMyINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTWFuYWdlZFJl
c291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNSZXNv
dXJjZUNvbXBpbGVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlTGlu
a0V2ZW50VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIN
CisJCQkJTGlua0xpYnJhcnlEZXBlbmRlbmNpZXM9ImZhbHNlIg0KKwkJCQlBZGRpdGlvbmFsRGVw
ZW5kZW5jaWVzPSJDb3JlR3JhcGhpY3MubGliIENvcmVGb3VuZGF0aW9uLmxpYiINCisJCQkJQWRk
aXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJChXZWJLaXRPdXRwdXREaXIpXGxpYjskKFdlYktp
dExpYnJhcmllc0RpcilcbGliIg0KKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUi
DQorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0i
MiINCisJCQkJVGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9
IlZDQUxpbmtUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRv
b2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+
DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29s
DQorCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0i
VkNBcHBWZXJpZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRl
cGxveW1lbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRF
dmVudFRvb2wiDQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJPC9Db25maWd1cmF0aW9u
cz4NCisJPFJlZmVyZW5jZXM+DQorCTwvUmVmZXJlbmNlcz4NCisJPEZpbGVzPg0KKwkJPEZpbGUN
CisJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNnXEltYWdlRGlmZi5jcHAiDQorCQkJPg0KKwkJPC9GaWxl
Pg0KKwk8L0ZpbGVzPg0KKwk8R2xvYmFscz4NCisJPC9HbG9iYWxzPg0KKzwvVmlzdWFsU3R1ZGlv
UHJvamVjdD4NCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNGM4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmNwcApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgIk1ENS5oIgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorCit0eXBlZGVmIHZvaWQgKFdJ
TkFQSSppbml0UHRyKShNRDVfQ1RYKik7Cit0eXBlZGVmIHZvaWQgKFdJTkFQSSp1cGRhdGVQdHIp
KE1ENV9DVFgqLCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQpOwordHlwZWRlZiB2b2lkIChXSU5B
UEkqZmluYWxQdHIpKE1ENV9DVFgqKTsKKworc3RhdGljIEhNT0RVTEUgY3J5cHRETEwoKQorewor
ICAgIHN0YXRpYyBITU9EVUxFIG1vZHVsZSA9IExvYWRMaWJyYXJ5VyhMIkNyeXB0ZGxsLmRsbCIp
OworICAgIHJldHVybiBtb2R1bGU7Cit9CisKK3N0YXRpYyBpbml0UHRyIGluaXQoKQoreworICAg
IHN0YXRpYyBpbml0UHRyIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW5pdFB0cj4oR2V0UHJvY0Fk
ZHJlc3MoY3J5cHRETEwoKSwgIk1ENUluaXQiKSk7CisgICAgcmV0dXJuIHB0cjsKK30KKworc3Rh
dGljIHVwZGF0ZVB0ciB1cGRhdGUoKQoreworICAgIHN0YXRpYyB1cGRhdGVQdHIgcHRyID0gcmVp
bnRlcnByZXRfY2FzdDx1cGRhdGVQdHI+KEdldFByb2NBZGRyZXNzKGNyeXB0RExMKCksICJNRDVV
cGRhdGUiKSk7CisgICAgcmV0dXJuIHB0cjsKK30KKworc3RhdGljIGZpbmFsUHRyIGZpbmFsKCkK
K3sKKyAgICBzdGF0aWMgZmluYWxQdHIgcHRyID0gcmVpbnRlcnByZXRfY2FzdDxmaW5hbFB0cj4o
R2V0UHJvY0FkZHJlc3MoY3J5cHRETEwoKSwgIk1ENUZpbmFsIikpOworICAgIHJldHVybiBwdHI7
Cit9CisKK3ZvaWQgTUQ1X0luaXQoTUQ1X0NUWCogY29udGV4dCkKK3sKKyAgICBpbml0KCkoY29u
dGV4dCk7Cit9CisKK3ZvaWQgTUQ1X1VwZGF0ZShNRDVfQ1RYKiBjb250ZXh0LCB1bnNpZ25lZCBj
aGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHVwZGF0ZSgpKGNvbnRleHQsIGlu
cHV0LCBsZW5ndGgpOworfQorCit2b2lkIE1ENV9GaW5hbCh1bnNpZ25lZCBjaGFyIGhhc2hbMTZd
LCBNRDVfQ1RYKiBjb250ZXh0KQoreworICAgIGZpbmFsKCkoY29udGV4dCk7CisKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDE2OyArK2kpCisgICAgICAgIGhhc2hbaV0gPSBjb250ZXh0LT5kaWdl
c3RbaV07Cit9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1
LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNzAyYmM4MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
RDVfaAorI2RlZmluZSBNRDVfaAorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVUxPTkc7CisKK3N0
cnVjdCBNRDVfQ1RYIHsNCisgICAgVUxPTkcgaVsyXTsNCisgICAgVUxPTkcgYnVmWzRdOw0KKyAg
ICB1bnNpZ25lZCBjaGFyIGluWzY0XTsNCisgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbMTZdOw0K
K307CisKK3ZvaWQgTUQ1X0luaXQoTUQ1X0NUWCopOwordm9pZCBNRDVfVXBkYXRlKE1ENV9DVFgq
LCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoKTsKK3ZvaWQgTUQ1X0ZpbmFs
KHVuc2lnbmVkIGNoYXIgaGFzaFsxNl0sIE1ENV9DVFgqKTsKKworI2VuZGlmIC8vIE1ENV9oCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9y
dC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjNjMDBhCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnQuaApA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQaXhlbER1bXBTdXBwb3J0X2gKKyNkZWZpbmUgUGl4
ZWxEdW1wU3VwcG9ydF9oCisKKy8vIEZJWE1FOiBUaGlzIGZpbGUgc2hvdWxkIG1vdmUgb3V0IG9m
IHRoZSB3aW4vIHN1YmRpcmVjdG9yeS4KKwordm9pZCBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29t
cGFyZVdpdGhFeHBlY3RlZChjb25zdCBjaGFyKiBjdXJyZW50VGVzdCwgYm9vbCBmb3JjZUFsbFRl
c3RzVG9EdW1wUGl4ZWxzKTsKKworI2VuZGlmIC8vIFBpeGVsRHVtcFN1cHBvcnRfaApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4u
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnRXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MTgzYmYKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9y
dFdpbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBs
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgor
I2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnRDRy5oIgorCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NHQml0bWFwQ29udGV4dC5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPiBnZXRCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoKQoreworICAgIFJFQ1Qg
ZnJhbWU7CisgICAgaWYgKCFHZXRXaW5kb3dSZWN0KHdlYlZpZXdXaW5kb3csICZmcmFtZSkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgSERDIG1lbW9yeURDID0gQ3JlYXRlQ29tcGF0aWJsZURD
KDApOworCisgICAgQklUTUFQSU5GTyBibXAgPSB7MH07CisgICAgYm1wLmJtaUhlYWRlci5iaVNp
emUgPSBzaXplb2YoQklUTUFQSU5GT0hFQURFUik7CisgICAgYm1wLmJtaUhlYWRlci5iaVdpZHRo
ID0gZnJhbWUucmlnaHQgLSBmcmFtZS5sZWZ0OworICAgIGJtcC5ibWlIZWFkZXIuYmlIZWlnaHQg
PSAtKGZyYW1lLmJvdHRvbSAtIGZyYW1lLnRvcCk7CisgICAgYm1wLmJtaUhlYWRlci5iaVBsYW5l
cyA9IDE7CisgICAgYm1wLmJtaUhlYWRlci5iaUJpdENvdW50ID0gMzI7CisgICAgYm1wLmJtaUhl
YWRlci5iaUNvbXByZXNzaW9uID0gQklfUkdCOworCisgICAgdm9pZCogcXVhZCA9IDA7CisgICAg
SEJJVE1BUCBiaXRtYXAgPSBDcmVhdGVESUJTZWN0aW9uKDAsICZibXAsIERJQl9SR0JfQ09MT1JT
LCAmcXVhZCwgMCwgMCk7CisgICAgU2VsZWN0T2JqZWN0KG1lbW9yeURDLCBiaXRtYXApOworCisg
ICAgU2VuZE1lc3NhZ2Uod2ViVmlld1dpbmRvdywgV01fUFJJTlRDTElFTlQsIHJlaW50ZXJwcmV0
X2Nhc3Q8V1BBUkFNPihtZW1vcnlEQyksIFBSRl9DTElFTlQgfCBQUkZfQ0hJTERSRU4gfCBQUkZf
T1dORUQpOworCisgICAgQklUTUFQIGluZm8gPSB7MH07CisgICAgR2V0T2JqZWN0KGJpdG1hcCwg
c2l6ZW9mKGluZm8pLCAmaW5mbyk7CisgICAgQVNTRVJUKGluZm8uYm1CaXRzUGl4ZWwgPT0gMzIp
OworCisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBD
R0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgcmV0dXJuIFJldGFpblB0cjxDR0Nv
bnRleHRSZWY+KEFkb3B0Q0YsIENHQml0bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5m
by5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdpZHRoQnl0ZXMsIGNvbG9yU3BhY2UuZ2V0KCks
IGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRG
aXJzdCkpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRl
c3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IDRmOTM0YWMu
LmFmNjUxMDkgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTUwOCw3ICs1
MDgsNiBAQCBmb3IgbXkgJHRlc3QgKEB0ZXN0cykgewogICAgICAgICBsYXN0IGlmIC8jRU9GLzsK
ICAgICAgICAgJGFjdHVhbCAuPSAkXzsKICAgICB9Ci0gICAgJGFjdHVhbCA9fiBzL1xyLy9nIGlm
IGlzQ3lnd2luKCk7CiAKICAgICBteSAkaXNUZXh0ID0gaXNUZXh0T25seVRlc3QoJGFjdHVhbCk7
CiAKQEAgLTkwOSw5ICs5MDgsOSBAQCBpZiAoJGNvdW50c3ttaXNtYXRjaH0pIHsKICAgICAgICAg
cHJpbnQgSFRNTCBodG1sRm9yRXhwZWN0ZWRBbmRBY3R1YWxSZXN1bHRzKCRiYXNlKTsKICAgICAg
ICAgaWYgKCRwaXhlbFRlc3RzKSB7CiAgICAgICAgICAgICBpZiAoJGltYWdlc1ByZXNlbnR7JGJh
c2V9KSB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgSFRNTCAiPHRkPjxhIGhyZWY9XCIiIC4gdG9V
UkwoIiRiYXNlLSRleHBlY3RlZFRhZy5wbmciKSAuICJcIj5leHBlY3RlZCBpbWFnZTwvYT48L3Rk
PlxuIjsKLSAgICAgICAgICAgICAgICBwcmludCBIVE1MICI8dGQ+PGEgaHJlZj1cIiIgLiB0b1VS
TCgiJGJhc2UtJGRpZmZzVGFnLmh0bWwiKSAuICJcIj5pbWFnZSBkaWZmczwvYT5cbiI7Ci0gICAg
ICAgICAgICAgICAgcHJpbnQgSFRNTCAiPGEgaHJlZj1cIiIgLiB0b1VSTCgiJGJhc2UtJGRpZmZz
VGFnLnBuZyIpIC4gIlwiPiRpbWFnZURpZmZlcmVuY2VzeyRiYXNlfSU8L2E+PC90ZD5cbiI7Cisg
ICAgICAgICAgICAgICAgcHJpbnQgSFRNTCAiPHRkPjxhIGhyZWY9XCIkYmFzZS0kZXhwZWN0ZWRU
YWcucG5nXCI+ZXhwZWN0ZWQgaW1hZ2U8L2E+PC90ZD5cbiI7CisgICAgICAgICAgICAgICAgcHJp
bnQgSFRNTCAiPHRkPjxhIGhyZWY9XCIkYmFzZS0kZGlmZnNUYWcuaHRtbFwiPmltYWdlIGRpZmZz
PC9hPlxuIjsKKyAgICAgICAgICAgICAgICBwcmludCBIVE1MICI8YSBocmVmPVwiJGJhc2UtJGRp
ZmZzVGFnLnBuZ1wiPiRpbWFnZURpZmZlcmVuY2VzeyRiYXNlfSU8L2E+PC90ZD5cbiI7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHByaW50IEhUTUwgIjx0ZD48L3RkPjx0
ZD48L3RkPlxuIjsKICAgICAgICAgICAgIH0gICAgICAgICAgICAKLS0gCjEuNS4zLjQuMTM0Mi5n
OGI2YTEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17516</attachid>
            <date>2007-11-25 14:26:26 -0800</date>
            <delta_ts>2007-11-25 14:40:37 -0800</delta_ts>
            <desc>[1/5]         Make Windows DRT stop changing LF into CRLF</desc>
            <filename>-Make-Windows-DRT-stop-changing-LF-into-CRLF.patch</filename>
            <type>text/plain</type>
            <size>1610</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">NjI2YzgwN2M0ZTdiOGMzZDkwODA1Y2FjODcyYjVhZWViNDFmNDM5OApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM4NWQ2NjYu
LjJkYWY3ZDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwNy0xMS0yNSAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBXaW5kb3dzIERSVCBzdG9wIGNoYW5n
aW5nIExGIGludG8gQ1JMRgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKG1haW4pOiBQdXQgc3Rkb3V0IGluIGJpbmFyeSBtb2RlLgorICAgICAgICAqIFNjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0czogUmVtb3ZlIHRoZSBDUkxGIGhhY2suCisKIDIwMDctMTEtMjQgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlZCBlbXB0
eSBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBS
ZW5kZXJUcmVlLmNwcAppbmRleCBjMjE1OTkzLi5hMjdiNzRmIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTUwLDYgKzUwLDgg
QEAKICNpbmNsdWRlIDxXZWJLaXQvSVdlYlVSTFJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L0lXZWJWaWV3UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQuaD4KKyNpbmNsdWRl
IDxmY250bC5oPgorI2luY2x1ZGUgPGlvLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAKQEAgLTgwNiw2ICs4MDgsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciogYXJndltdKQogewogICAgIGxlYWtDaGVja2luZyA9IGZhbHNlOwogCisgICAgX3NldG1vZGUo
MSwgX09fQklOQVJZKTsKKwogICAgIGluaXRpYWxpemUoR2V0TW9kdWxlSGFuZGxlKDApKTsKIAog
ICAgIC8vIEZJWE1FOiBvcHRpb25zCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1
bi13ZWJraXQtdGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKaW5k
ZXggNGY5MzRhYy4uZWJmYmM3OCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwpA
QCAtNTA4LDcgKzUwOCw2IEBAIGZvciBteSAkdGVzdCAoQHRlc3RzKSB7CiAgICAgICAgIGxhc3Qg
aWYgLyNFT0YvOwogICAgICAgICAkYWN0dWFsIC49ICRfOwogICAgIH0KLSAgICAkYWN0dWFsID1+
IHMvXHIvL2cgaWYgaXNDeWd3aW4oKTsKIAogICAgIG15ICRpc1RleHQgPSBpc1RleHRPbmx5VGVz
dCgkYWN0dWFsKTsKIAo=
</data>
<flag name="review"
          id="7527"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17517</attachid>
            <date>2007-11-25 14:26:28 -0800</date>
            <delta_ts>2007-11-25 14:42:50 -0800</delta_ts>
            <desc>[2/5]         Clean up Windows DRT&apos;s option parsing a little bit</desc>
            <filename>-Clean-up-Windows-DRT-s-option-parsing-a-little-bit.patch</filename>
            <type>text/plain</type>
            <size>2328</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">N2E0MDNjYTY3ODlkOTVkOTAyMDAxNTY5OWY2MjU0ZDg3MmE1NTllYQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJkYWY3ZDku
LmU2ZTg1N2IgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNCBAQAogMjAwNy0xMS0yNSAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgQ2xlYW4gdXAgV2luZG93cyBEUlQncyBvcHRp
b24gcGFyc2luZyBhIGxpdHRsZSBiaXQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6
CisgICAgICAgIChtYWluKTogUHV0IG5vbi1vcHRpb24gYXJndW1lbnRzIGludG8gYSBWZWN0b3Iu
CisKKzIwMDctMTEtMjUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAg
IE1ha2UgV2luZG93cyBEUlQgc3RvcCBjaGFuZ2luZyBMRiBpbnRvIENSTEYKIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGEyN2I3NGYuLjAxNGVjZDQgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAK
KysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApA
QCAtODEyLDcgKzgxMiwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogCiAg
ICAgaW5pdGlhbGl6ZShHZXRNb2R1bGVIYW5kbGUoMCkpOwogCi0gICAgLy8gRklYTUU6IG9wdGlv
bnMKKyAgICBWZWN0b3I8Y29uc3QgY2hhcio+IHRlc3RzOworCisgICAgZm9yIChpbnQgaSA9IDE7
IGkgPCBhcmdjOyArK2kpIHsKKyAgICAgICAgaWYgKCFzdHJpY21wKGFyZ3ZbaV0sICItLXRocmVh
ZGVkIikpIHsKKyAgICAgICAgICAgIHRocmVhZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgdGVzdHMuYXBwZW5kKGFyZ3ZbaV0pOworICAgIH0K
IAogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKICAgICBIUkVTVUxUIGhyID0gQ29DcmVh
dGVJbnN0YW5jZShDTFNJRF9XZWJWaWV3LCAwLCBDTFNDVFhfQUxMLCBJSURfSVdlYlZpZXcsICh2
b2lkKiopJndlYlZpZXcpOwpAQCAtODk2LDE4ICs5MDUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgX0NydE1lbUNoZWNrcG9pbnQoJmVudHJ5VG9NYWluTWVt
Q2hlY2twb2ludCk7CiAjZW5kaWYKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgKytp
KQotICAgICAgICBpZiAoIXN0cmljbXAoYXJndltpXSwgIi0tdGhyZWFkZWQiKSkgewotICAgICAg
ICAgICAgYXJndltpXSA9IGFyZ3ZbYXJnYyAtIDFdOwotICAgICAgICAgICAgYXJnYy0tOwotICAg
ICAgICAgICAgdGhyZWFkZWQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQogICAgIGlmICh0aHJlYWRlZCkKICAgICAgICAgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpOwog
Ci0gICAgaWYgKGFyZ2MgPT0gMiAmJiBzdHJjbXAoYXJndlsxXSwgIi0iKSA9PSAwKSB7CisgICAg
aWYgKHRlc3RzLnNpemUoKSA9PSAxICYmICFzdHJjbXAodGVzdHNbMF0sICItIikpIHsKICAgICAg
ICAgY2hhciBmaWxlbmFtZUJ1ZmZlclsyMDQ4XTsKICAgICAgICAgcHJpbnRTZXBhcmF0b3JzID0g
dHJ1ZTsKICAgICAgICAgd2hpbGUgKGZnZXRzKGZpbGVuYW1lQnVmZmVyLCBzaXplb2YoZmlsZW5h
bWVCdWZmZXIpLCBzdGRpbikpIHsKQEAgLTkyMiw5ICs5MjMsOSBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhciogYXJndltdKQogICAgICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewotICAgICAgICBwcmludFNlcGFyYXRvcnMgPSBhcmdjID4gMjsKLSAgICAg
ICAgZm9yIChpbnQgaSA9IDE7IGkgIT0gYXJnYzsgaSsrKQotICAgICAgICAgICAgcnVuVGVzdChh
cmd2W2ldKTsKKyAgICAgICAgcHJpbnRTZXBhcmF0b3JzID0gdGVzdHMuc2l6ZSgpID4gMTsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAg
IHJ1blRlc3QodGVzdHNbaV0pOwogICAgIH0KIAogICAgIGlmICh0aHJlYWRlZCkK
</data>
<flag name="review"
          id="7528"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17518</attachid>
            <date>2007-11-25 14:26:29 -0800</date>
            <delta_ts>2007-11-25 14:57:38 -0800</delta_ts>
            <desc>[3/5]         Implement pixel dumping in Windows DRT</desc>
            <filename>-Implement-pixel-dumping-in-Windows-DRT.patch</filename>
            <type>text/plain</type>
            <size>25818</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">MTk5Y2VjMTMxYzgyMjE2YjQwNjk4ZDlmOTZhMWExYmQxYjBkZDg1ZgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU2ZTg1N2Iu
LjFhN2JlNmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MiBAQAogMjAwNy0xMS0yNSAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IHBpeGVsIGR1bXBpbmcgaW4g
V2luZG93cyBEUlQKKworICAgICAgICBQYXJ0IG9mIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTMzCisgICAgICAgIDxyZGFyOi8vNTA3MTcwOD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nn
L1BpeGVsRHVtcFN1cHBvcnRDRy5jcHA6IEFkZGVkLgorICAgICAgICAocHJpbnRQTkcpOiBEdW1w
cyBhIENHSW1hZ2VSZWYgYXMgYSBQTkcgdG8gc3Rkb3V0LCBhbG9uZyB3aXRoIGEKKyAgICAgICAg
Q29udGVudC1MZW5ndGggaGVhZGVyLgorICAgICAgICAoZ2V0TUQ1SGFzaFN0cmluZ0ZvckJpdG1h
cCk6CisgICAgICAgIChkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmg6IENvcGll
ZCBmcm9tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3Rl
Ym9hcmQuaC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
OgorICAgICAgICAoZHVtcCk6IERvIGEgcGl4ZWwgZHVtcCBpZiByZXF1ZXN0ZWQuCisgICAgICAg
IChtYWluKTogUGFyc2UgcGl4ZWwgdGVzdCBvcHRpb25zLgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2o6IEFkZGVkIG5ldyBmaWxlcyBhbmQgYWRkZWQK
KyAgICAgICAgdGhlIGNnLyBzdWJkaXJlY3RvcnkgdG8gdGhlIGluY2x1ZGUgcGF0aC4KKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmNwcDogQWRkZWQuIFdpbmRvd3MgTUQ1IGZ1bmN0
aW9ucyBhcmVuJ3QKKyAgICAgICAgYXZhaWxhYmxlIGluIGEgaGVhZGVyIG9yIGltcG9ydCBsaWJy
YXJ5LCBzbyB3ZSBoYXZlIHRvIGdvIHRocm91Z2ggdGhpcworICAgICAgICBMb2FkTGlicmFyeS9H
ZXRQcm9jQWRkcmVzcyBkYW5jZSB0byB1c2UgdGhlbS4KKyAgICAgICAgKGNyeXB0RExMKToKKyAg
ICAgICAgKGluaXQpOgorICAgICAgICAodXBkYXRlKToKKyAgICAgICAgKGZpbmFsKToKKyAgICAg
ICAgKE1ENV9Jbml0KToKKyAgICAgICAgKE1ENV9VcGRhdGUpOgorICAgICAgICAoTUQ1X0ZpbmFs
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTUQ1Lmg6IEFkZGVkLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0Lmg6IEFkZGVkLiBUaGlzIGZpbGUg
c2hvdWxkIGJlCisgICAgICAgIG1vdmVkIHVwIHRvIHRoZSB0b3AgbGV2ZWwgdG8gc2hhcmUgaXQg
d2l0aCBNYWMgZXZlbnR1YWxseS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxE
dW1wU3VwcG9ydFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoZ2V0Qml0bWFwQ29udGV4dEZyb21X
ZWJWaWV3KTogRm9yY2VzIHRoZSBXZWJWaWV3IHRvIHBhaW50IHVzaW5nIGEKKyAgICAgICAgV01f
UFJJTlRDTElFTlQgbWVzc2FnZSwgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbiBhIENHQml0bWFwQ29u
dGV4dC4KKworMjAwNy0xMS0yNSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKICAg
ICAgICAgQ2xlYW4gdXAgV2luZG93cyBEUlQncyBvcHRpb24gcGFyc2luZyBhIGxpdHRsZSBiaXQK
IAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YTY2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCkBAIC0wLDAg
KzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlLCBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgKEMpIDIwMDcgR3JhaGFtIERl
bm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCisgKiAgICAgICAgICAgKEMpIDIwMDcgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgorCisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydENH
LmgiCisjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24uaD4KKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKFdJTikK
KyNpbmNsdWRlICJNRDUuaCIKKyNkZWZpbmUgc25wcmludGYgX3NucHJpbnRmCisjZWxpZiBQTEFU
Rk9STShNQUMpCisjZGVmaW5lIENPTU1PTl9ESUdFU1RfRk9SX09QRU5TU0wKKyNpbmNsdWRlIDxD
b21tb25DcnlwdG8vQ29tbW9uRGlnZXN0Lmg+CisjZW5kaWYKKworc3RhdGljIGNvbnN0IENGU3Ry
aW5nUmVmIGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGljLnBuZyIpOworCitzdGF0aWMgdm9pZCBw
cmludFBORyhDR0ltYWdlUmVmIGltYWdlKQoreworICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRh
UmVmPiBpbWFnZURhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CisgICAg
UmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0KEFkb3B0Q0YsIENHSW1h
Z2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGltYWdlRGF0YS5nZXQoKSwga1VUVHlwZVBORywg
MSwgMCkpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdC5nZXQoKSwg
aW1hZ2UsIDApOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdC5nZXQo
KSk7CisgICAgcHJpbnRmKCJDb250ZW50LWxlbmd0aDogJWx1XG4iLCBDRkRhdGFHZXRMZW5ndGgo
aW1hZ2VEYXRhLmdldCgpKSk7CisgICAgZndyaXRlKENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRh
LmdldCgpKSwgMSwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQoKSksIHN0ZG91dCk7Cit9
CisKK3N0YXRpYyB2b2lkIGdldE1ENUhhc2hTdHJpbmdGb3JCaXRtYXAoQ0dDb250ZXh0UmVmIGJp
dG1hcCwgY2hhciBzdHJpbmdbMzNdKQoreworICAgIE1ENV9DVFggbWQ1Q29udGV4dDsKKyAgICB1
bnNpZ25lZCBjaGFyIGhhc2hbMTZdOworCisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHQml0
bWFwQ29udGV4dEdldEJpdHNQZXJQaXhlbChiaXRtYXApOworICAgIGFzc2VydChiaXRzUGVyUGl4
ZWwgPT0gMzIpOyAvLyBJbWFnZURpZmYgYXNzdW1lcyAzMiBiaXQgUkdCQSwgd2UgbXVzdCBhcyB3
ZWxsLgorICAgIHNpemVfdCBieXRlc1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8gODsKKyAgICBz
aXplX3QgcGl4ZWxzSGlnaCA9IENHQml0bWFwQ29udGV4dEdldEhlaWdodChiaXRtYXApOworICAg
IHNpemVfdCBwaXhlbHNXaWRlID0gQ0dCaXRtYXBDb250ZXh0R2V0V2lkdGgoYml0bWFwKTsKKyAg
ICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0JpdG1hcENvbnRleHRHZXRCeXRlc1BlclJvdyhiaXRt
YXApOworICAgIGFzc2VydChieXRlc1BlclJvdyA+PSAocGl4ZWxzV2lkZSAqIGJ5dGVzUGVyUGl4
ZWwpKTsKKworICAgIE1ENV9Jbml0KCZtZDVDb250ZXh0KTsKKyAgICB1bnNpZ25lZCBjaGFyKiBi
aXRtYXBEYXRhID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KENHQml0bWFwQ29udGV4dEdl
dERhdGEoYml0bWFwKSk7CisgICAgZm9yICh1bnNpZ25lZCByb3cgPSAwOyByb3cgPCBwaXhlbHNI
aWdoOyByb3crKykgeworICAgICAgICBNRDVfVXBkYXRlKCZtZDVDb250ZXh0LCBiaXRtYXBEYXRh
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGl4ZWxzV2lkZSAqIGJ5dGVzUGVyUGl4ZWwpKTsKKyAg
ICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJvdzsKKyAgICB9CisgICAgTUQ1X0ZpbmFsKGhh
c2gsICZtZDVDb250ZXh0KTsKKworICAgIHN0cmluZ1swXSA9ICdcMCc7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAxNjsgaSsrKQorICAgICAgICBzbnByaW50ZihzdHJpbmcsIDMzLCAiJXMlMDJ4
Iiwgc3RyaW5nLCBoYXNoW2ldKTsKK30KKwordm9pZCBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29t
cGFyZVdpdGhFeHBlY3RlZChjb25zdCBjaGFyKiAvKmN1cnJlbnRUZXN0Ki8sIGJvb2wgLypmb3Jj
ZUFsbFRlc3RzVG9EdW1wUGl4ZWxzKi8pCit7CisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Y29udGV4dCA9IGdldEJpdG1hcENvbnRleHRGcm9tV2ViVmlldygpOworCisgICAgLy8gQ29tcHV0
ZSB0aGUgYWN0dWFsIGhhc2ggdG8gY29tcGFyZSB0byB0aGUgZXhwZWN0ZWQgaW1hZ2UncyBoYXNo
LgorICAgIGNoYXIgYWN0dWFsSGFzaFszM107CisgICAgZ2V0TUQ1SGFzaFN0cmluZ0ZvckJpdG1h
cChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsKKyAgICBwcmludGYoIlxuQWN0dWFsSGFzaDog
JXNcbiIsIGFjdHVhbEhhc2gpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb21wYXJlIHRo
ZSBhY3R1YWxIYXNoIHRvIHRoZSBleHBlY3RlZCBoYXNoIGhlcmUgYW5kCisgICAgLy8gb25seSBz
ZXQgZHVtcEltYWdlIHRvIHRydWUgaWYgdGhleSBkb24ndCBtYXRjaCwgYnV0IERSVCBkb2Vzbid0
IGhhdmUKKyAgICAvLyBlbm91Z2ggaW5mb3JtYXRpb24gY3VycmVudGx5IHRvIGZpbmQgdGhlIGV4
cGVjdGVkIGNoZWNrc3VtIGZpbGUuCisgICAgYm9vbCBkdW1wSW1hZ2UgPSB0cnVlOworCisgICAg
aWYgKGR1bXBJbWFnZSkgeworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoQWRv
cHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgICAg
ICBwcmludFBORyhpbWFnZS5nZXQoKSk7CisgICAgfQorCisgICAgcHJpbnRmKCIjRU9GXG4iKTsK
K30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1
cHBvcnRDRy5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9y
dENHLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0M2QxMwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL1BpeGVsRHVtcFN1cHBv
cnRDRy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYs
IDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykg
MjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKKyAqICAgICAgICAg
ICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGl4ZWxEdW1w
U3VwcG9ydENHX2gKKyNkZWZpbmUgUGl4ZWxEdW1wU3VwcG9ydENHX2gKKworI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1
Y3QgQ0dDb250ZXh0KiBDR0NvbnRleHRSZWY7CisKK1JldGFpblB0cjxDR0NvbnRleHRSZWY+IGdl
dEJpdG1hcENvbnRleHRGcm9tV2ViVmlldygpOworCisjZW5kaWYgLy8gUGl4ZWxEdW1wU3VwcG9y
dENHX2gKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwCmluZGV4IDAxNGVjZDQuLjg0ZGM2ZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkVkaXRpbmdEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyRGVsZWdhdGUu
aCIKICNpbmNsdWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBpeGVsRHVt
cFN1cHBvcnQuaCIKICNpbmNsdWRlICJQb2xpY3lEZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlVJRGVs
ZWdhdGUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCkBAIC02OSw2ICs3MCw4IEBAIHN0
YXRpYyBMUENXU1RSIGZvbnRzRW52aXJvbm1lbnRWYXJpYWJsZSA9IEwiV0VCS0lUX1RFU1RGT05U
UyI7CiBjb25zdCBMUENXU1RSIGtEdW1wUmVuZGVyVHJlZUNsYXNzTmFtZSA9IEwiRHVtcFJlbmRl
clRyZWVXaW5kb3ciOwogCiBzdGF0aWMgYm9vbCBkdW1wVHJlZSA9IHRydWU7CitzdGF0aWMgYm9v
bCBkdW1wUGl4ZWxzOworc3RhdGljIGJvb2wgZHVtcEFsbFBpeGVsczsKIHN0YXRpYyBib29sIHBy
aW50U2VwYXJhdG9yczsKIHN0YXRpYyBib29sIGxlYWtDaGVja2luZyA9IGZhbHNlOwogc3RhdGlj
IGJvb2wgdGltZWRPdXQgPSBmYWxzZTsKQEAgLTU2NSw2ICs1NjgsMTQgQEAgdm9pZCBkdW1wKCkK
IAogICAgIGlmIChwcmludFNlcGFyYXRvcnMpCiAgICAgICAgIHB1dHMoIiNFT0YiKTsKKworICAg
IGlmIChkdW1wUGl4ZWxzKSB7CisgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVt
cEFzVGV4dCgpIHx8IGxheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkg
fHwgbGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkKKyAgICAg
ICAgICAgIHByaW50ZigiI0VPRlxuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGR1bXBX
ZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKGN1cnJlbnRUZXN0LCBkdW1wQWxs
UGl4ZWxzKTsKKyAgICB9CisKIGZhaWw6CiAgICAgU3lzRnJlZVN0cmluZyhyZXN1bHRTdHJpbmcp
OwogICAgIC8vIFRoaXMgd2lsbCBleGl0IGZyb20gb3VyIG1lc3NhZ2UgbG9vcApAQCAtODIwLDYg
KzgzMSwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIXN0cmljbXAoYXJndltpXSwgIi0t
ZHVtcC1hbGwtcGl4ZWxzIikpIHsKKyAgICAgICAgICAgIGR1bXBBbGxQaXhlbHMgPSB0cnVlOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXN0cmljbXAo
YXJndltpXSwgIi0tcGl4ZWwtdGVzdHMiKSkgeworICAgICAgICAgICAgZHVtcFBpeGVscyA9IHRy
dWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIHRlc3RzLmFw
cGVuZChhcmd2W2ldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52Y3Byb2ogYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUudmNwcm9qCmluZGV4IDY0NDdiYzQuLmI1ODdhMzcgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS52
Y3Byb2oKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Indp
bmRvd3MtMTI1MSI/Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1
MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0K
LQlWZXJzaW9uPSI4LDAwIg0KKwlWZXJzaW9uPSI4LjAwIg0KIAlOYW1lPSJEdW1wUmVuZGVyVHJl
ZSINCiAJUHJvamVjdEdVSUQ9Ins2NTY3REZENC1ENkRFLTRDRDUtODI1RC0xN0UzNTNEMTYwRTF9
Ig0KIAlSb290TmFtZXNwYWNlPSJEdW1wUmVuZGVyVHJlZSINCkBAIC00MSw3ICs0MSw3IEBACiAJ
CQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlPcHRpbWl6YXRpb249
IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERp
cilcLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdl
YkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXElu
Y2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXElu
Y2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7Ig0KKwkJCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFByb2plY3REaXIpXC4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXGNnJnF1b3Q7
OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVc
V2ViQ29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3Jl
JnF1b3Q7Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0NPTlNPTEU7X1ND
TF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSINCiAJCQkJTWlu
aW1hbFJlYnVpbGQ9InRydWUiDQogCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCkBAIC0xMjMs
NyArMTIzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0RGly
KVwuJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2Vi
Q29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5j
bHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZx
dW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDsiDQorCQkJCUFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcilcLiZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpXC4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cY2cmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUm
cXVvdDsiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNP
TEU7X1NDTF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSINCiAJ
CQkJUnVudGltZUxpYnJhcnk9IjIiDQogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KQEAg
LTIwNSw3ICsyMDUsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CiAJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PSImcXVvdDskKFByb2plY3REaXIpXC4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLiZxdW90
OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91
dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRl
XFdlYkNvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29y
ZSZxdW90OyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9q
ZWN0RGlyKVwuJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxjZyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90
OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFk
ZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQo
V2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OyINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9
IldJTjMyO19ERUJVRztfQ09OU09MRTtfU0NMX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9TRUNV
UkVfTk9fREVQUkVDQVRFIg0KIAkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSINCiAJCQkJQmFzaWNS
dW50aW1lQ2hlY2tzPSIzIg0KQEAgLTM1NCw2ICszNTQsMzAgQEAKIAkJCT4NCiAJCTwvRmlsZT4N
CiAJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuXE1ENS5jcHAiDQorCQkJPg0KKwkJPC9GaWxl
Pg0KKwkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii5cTUQ1LmgiDQorCQkJPg0KKwkJPC9GaWxl
Pg0KKwkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii5cUGl4ZWxEdW1wU3VwcG9ydC5oIg0KKwkJ
CT4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuLlxjZ1xQaXhlbER1
bXBTdXBwb3J0Q0cuY3BwIg0KKwkJCT4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQorCQkJUmVsYXRp
dmVQYXRoPSIuLlxjZ1xQaXhlbER1bXBTdXBwb3J0Q0cuaCINCisJCQk+DQorCQk8L0ZpbGU+DQor
CQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLlxQaXhlbER1bXBTdXBwb3J0V2luLmNwcCINCisJ
CQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KIAkJCVJlbGF0aXZlUGF0aD0iLi5cV29ya1F1ZXVl
LmNwcCINCiAJCQk+DQogCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL01ENS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDRjODQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5jcHAKQEAgLTAs
MCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJNRDUuaCIKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKwor
dHlwZWRlZiB2b2lkIChXSU5BUEkqaW5pdFB0cikoTUQ1X0NUWCopOwordHlwZWRlZiB2b2lkIChX
SU5BUEkqdXBkYXRlUHRyKShNRDVfQ1RYKiwgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKK3R5
cGVkZWYgdm9pZCAoV0lOQVBJKmZpbmFsUHRyKShNRDVfQ1RYKik7CisKK3N0YXRpYyBITU9EVUxF
IGNyeXB0RExMKCkKK3sKKyAgICBzdGF0aWMgSE1PRFVMRSBtb2R1bGUgPSBMb2FkTGlicmFyeVco
TCJDcnlwdGRsbC5kbGwiKTsKKyAgICByZXR1cm4gbW9kdWxlOworfQorCitzdGF0aWMgaW5pdFB0
ciBpbml0KCkKK3sKKyAgICBzdGF0aWMgaW5pdFB0ciBwdHIgPSByZWludGVycHJldF9jYXN0PGlu
aXRQdHI+KEdldFByb2NBZGRyZXNzKGNyeXB0RExMKCksICJNRDVJbml0IikpOworICAgIHJldHVy
biBwdHI7Cit9CisKK3N0YXRpYyB1cGRhdGVQdHIgdXBkYXRlKCkKK3sKKyAgICBzdGF0aWMgdXBk
YXRlUHRyIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dXBkYXRlUHRyPihHZXRQcm9jQWRkcmVzcyhj
cnlwdERMTCgpLCAiTUQ1VXBkYXRlIikpOworICAgIHJldHVybiBwdHI7Cit9CisKK3N0YXRpYyBm
aW5hbFB0ciBmaW5hbCgpCit7CisgICAgc3RhdGljIGZpbmFsUHRyIHB0ciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8ZmluYWxQdHI+KEdldFByb2NBZGRyZXNzKGNyeXB0RExMKCksICJNRDVGaW5hbCIpKTsK
KyAgICByZXR1cm4gcHRyOworfQorCit2b2lkIE1ENV9Jbml0KE1ENV9DVFgqIGNvbnRleHQpCit7
CisgICAgaW5pdCgpKGNvbnRleHQpOworfQorCit2b2lkIE1ENV9VcGRhdGUoTUQ1X0NUWCogY29u
dGV4dCwgdW5zaWduZWQgY2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICB1cGRh
dGUoKShjb250ZXh0LCBpbnB1dCwgbGVuZ3RoKTsKK30KKwordm9pZCBNRDVfRmluYWwodW5zaWdu
ZWQgY2hhciBoYXNoWzE2XSwgTUQ1X0NUWCogY29udGV4dCkKK3sKKyAgICBmaW5hbCgpKGNvbnRl
eHQpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKQorICAgICAgICBoYXNoW2ld
ID0gY29udGV4dC0+ZGlnZXN0W2ldOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL01ENS5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMmJjODAKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmgKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgTUQ1X2gKKyNkZWZpbmUgTUQ1X2gKKwordHlwZWRlZiB1bnNpZ25lZCBs
b25nIFVMT05HOworCitzdHJ1Y3QgTUQ1X0NUWCB7DQorICAgIFVMT05HIGlbMl07DQorICAgIFVM
T05HIGJ1Zls0XTsNCisgICAgdW5zaWduZWQgY2hhciBpbls2NF07DQorICAgIHVuc2lnbmVkIGNo
YXIgZGlnZXN0WzE2XTsNCit9OworCit2b2lkIE1ENV9Jbml0KE1ENV9DVFgqKTsKK3ZvaWQgTUQ1
X1VwZGF0ZShNRDVfQ1RYKiwgdW5zaWduZWQgY2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCk7
Cit2b2lkIE1ENV9GaW5hbCh1bnNpZ25lZCBjaGFyIGhhc2hbMTZdLCBNRDVfQ1RYKik7CisKKyNl
bmRpZiAvLyBNRDVfaApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1BpeGVsRHVtcFN1cHBvcnQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhl
bER1bXBTdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIzYzAw
YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhl
bER1bXBTdXBwb3J0LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGl4ZWxEdW1wU3VwcG9y
dF9oCisjZGVmaW5lIFBpeGVsRHVtcFN1cHBvcnRfaAorCisvLyBGSVhNRTogVGhpcyBmaWxlIHNo
b3VsZCBtb3ZlIG91dCBvZiB0aGUgd2luLyBzdWJkaXJlY3RvcnkuCisKK3ZvaWQgZHVtcFdlYlZp
ZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoY29uc3QgY2hhciogY3VycmVudFRlc3Qs
IGJvb2wgZm9yY2VBbGxUZXN0c1RvRHVtcFBpeGVscyk7CisKKyNlbmRpZiAvLyBQaXhlbER1bXBT
dXBwb3J0X2gKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhl
bER1bXBTdXBwb3J0V2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhl
bER1bXBTdXBwb3J0V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
NmRkODJkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1BpeGVsRHVtcFN1cHBvcnRXaW4uY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiRHVt
cFJlbmRlclRyZWUuaCIKKyNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0Q0cuaCIKKworI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworUmV0YWluUHRyPENHQ29udGV4
dFJlZj4gZ2V0Qml0bWFwQ29udGV4dEZyb21XZWJWaWV3KCkKK3sKKyAgICBSRUNUIGZyYW1lOwor
ICAgIGlmICghR2V0V2luZG93UmVjdCh3ZWJWaWV3V2luZG93LCAmZnJhbWUpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIEJJVE1BUElORk8gYm1wID0gezB9OworICAgIGJtcC5ibWlIZWFkZXIu
YmlTaXplID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOworICAgIGJtcC5ibWlIZWFkZXIuYmlX
aWR0aCA9IGZyYW1lLnJpZ2h0IC0gZnJhbWUubGVmdDsKKyAgICBibXAuYm1pSGVhZGVyLmJpSGVp
Z2h0ID0gLShmcmFtZS5ib3R0b20gLSBmcmFtZS50b3ApOworICAgIGJtcC5ibWlIZWFkZXIuYmlQ
bGFuZXMgPSAxOworICAgIGJtcC5ibWlIZWFkZXIuYmlCaXRDb3VudCA9IDMyOworICAgIGJtcC5i
bWlIZWFkZXIuYmlDb21wcmVzc2lvbiA9IEJJX1JHQjsKKworICAgIC8vIEZJWE1FOiBDdXJyZW50
bHkgd2UgbGVhayB0aGlzIEhCSVRNQVAgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkK
KyAgICAvLyB0byBkZXN0cm95IGl0IHdoZW4gdGhlIENHQml0bWFwQ29udGV4dCBnZXRzIGRlc3Ry
b3llZC4KKyAgICB2b2lkKiBiaXRzID0gMDsKKyAgICBIQklUTUFQIGJpdG1hcCA9IENyZWF0ZURJ
QlNlY3Rpb24oMCwgJmJtcCwgRElCX1JHQl9DT0xPUlMsICZiaXRzLCAwLCAwKTsKKworICAgIEhE
QyBtZW1vcnlEQyA9IENyZWF0ZUNvbXBhdGlibGVEQygwKTsKKyAgICBTZWxlY3RPYmplY3QobWVt
b3J5REMsIGJpdG1hcCk7CisgICAgU2VuZE1lc3NhZ2Uod2ViVmlld1dpbmRvdywgV01fUFJJTlRD
TElFTlQsIHJlaW50ZXJwcmV0X2Nhc3Q8V1BBUkFNPihtZW1vcnlEQyksIFBSRl9DTElFTlQgfCBQ
UkZfQ0hJTERSRU4gfCBQUkZfT1dORUQpOworICAgIERlbGV0ZURDKG1lbW9yeURDKTsKKworICAg
IEJJVE1BUCBpbmZvID0gezB9OworICAgIEdldE9iamVjdChiaXRtYXAsIHNpemVvZihpbmZvKSwg
JmluZm8pOworICAgIEFTU0VSVChpbmZvLmJtQml0c1BpeGVsID09IDMyKTsKKworICAgIFJldGFp
blB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCkpOworICAgIHJldHVybiBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPihBZG9w
dENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5m
by5ibUhlaWdodCwgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKK30K
</data>
<flag name="review"
          id="7529"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17519</attachid>
            <date>2007-11-25 14:26:31 -0800</date>
            <delta_ts>2007-11-25 14:58:21 -0800</delta_ts>
            <desc>[4/5]         Fix image diff link generation on Windows</desc>
            <filename>-Fix-image-diff-link-generation-on-Windows.patch</filename>
            <type>text/plain</type>
            <size>1693</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZmZmMDY2ZWYwMTExZGI1NzEwMjdlZTE0MjA1ODYwNDQ4ZWVlNTkwNwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFhN2JlNmIu
LjY4MWUwYWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNCBAQAogMjAwNy0xMS0yNSAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgRml4IGltYWdlIGRpZmYgbGluayBnZW5lcmF0
aW9uIG9uIFdpbmRvd3MKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBh
bmQgaW5jb3JyZWN0IGNhbGxzCisgICAgICAgIHRvIHRvVVJMLgorCisyMDA3LTExLTI1ICBBZGFt
IFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwogICAgICAgICBJbXBsZW1lbnQgcGl4ZWwgZHVt
cGluZyBpbiBXaW5kb3dzIERSVAogCiAgICAgICAgIFBhcnQgb2YgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMzMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLXdlYmtpdC10ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cwppbmRleCBlYmZiYzc4Li5hZjY1MTA5IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3J1bi13ZWJraXQtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRl
c3RzCkBAIC05MDgsOSArOTA4LDkgQEAgaWYgKCRjb3VudHN7bWlzbWF0Y2h9KSB7CiAgICAgICAg
IHByaW50IEhUTUwgaHRtbEZvckV4cGVjdGVkQW5kQWN0dWFsUmVzdWx0cygkYmFzZSk7CiAgICAg
ICAgIGlmICgkcGl4ZWxUZXN0cykgewogICAgICAgICAgICAgaWYgKCRpbWFnZXNQcmVzZW50eyRi
YXNlfSkgewotICAgICAgICAgICAgICAgIHByaW50IEhUTUwgIjx0ZD48YSBocmVmPVwiIiAuIHRv
VVJMKCIkYmFzZS0kZXhwZWN0ZWRUYWcucG5nIikgLiAiXCI+ZXhwZWN0ZWQgaW1hZ2U8L2E+PC90
ZD5cbiI7Ci0gICAgICAgICAgICAgICAgcHJpbnQgSFRNTCAiPHRkPjxhIGhyZWY9XCIiIC4gdG9V
UkwoIiRiYXNlLSRkaWZmc1RhZy5odG1sIikgLiAiXCI+aW1hZ2UgZGlmZnM8L2E+XG4iOwotICAg
ICAgICAgICAgICAgIHByaW50IEhUTUwgIjxhIGhyZWY9XCIiIC4gdG9VUkwoIiRiYXNlLSRkaWZm
c1RhZy5wbmciKSAuICJcIj4kaW1hZ2VEaWZmZXJlbmNlc3skYmFzZX0lPC9hPjwvdGQ+XG4iOwor
ICAgICAgICAgICAgICAgIHByaW50IEhUTUwgIjx0ZD48YSBocmVmPVwiJGJhc2UtJGV4cGVjdGVk
VGFnLnBuZ1wiPmV4cGVjdGVkIGltYWdlPC9hPjwvdGQ+XG4iOworICAgICAgICAgICAgICAgIHBy
aW50IEhUTUwgIjx0ZD48YSBocmVmPVwiJGJhc2UtJGRpZmZzVGFnLmh0bWxcIj5pbWFnZSBkaWZm
czwvYT5cbiI7CisgICAgICAgICAgICAgICAgcHJpbnQgSFRNTCAiPGEgaHJlZj1cIiRiYXNlLSRk
aWZmc1RhZy5wbmdcIj4kaW1hZ2VEaWZmZXJlbmNlc3skYmFzZX0lPC9hPjwvdGQ+XG4iOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwcmludCBIVE1MICI8dGQ+PC90ZD48
dGQ+PC90ZD5cbiI7CiAgICAgICAgICAgICB9ICAgICAgICAgICAgCg==
</data>
<flag name="review"
          id="7530"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17520</attachid>
            <date>2007-11-25 14:26:33 -0800</date>
            <delta_ts>2007-11-25 15:06:10 -0800</delta_ts>
            <desc>[5/5] Fix Bug 16133: Implement pixel test support on Windows</desc>
            <filename>-Fix-Bug-16133-Implement-pixel-test-support-on-Windows.patch</filename>
            <type>text/plain</type>
            <size>20367</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">Yzk5N2Y0YjU4NGExNWFiMjA2NzlhYjVkZjk2Y2Y1Y2RlYzkwNGI1NQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBiMDkwODgzLi5l
ZmRjMWE4IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDA3LTExLTI1ICBBZGFtIFJvYmVuICA8YXJv
YmVuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSW1hZ2VEaWZmLnZjcHJvaiB0byBXZWJLaXQu
c2xuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXQudmNwcm9qL1dlYktpdC5zbG46CisKIDIwMDctMTEtMTcgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuc2xuIGIvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdC5zbG4KaW5kZXggOTE4ZDZjZC4uZjE5M2U5OSAxMDA2NDQK
LS0tIGEvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5zbG4KKysrIGIvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdC5zbG4KQEAgLTMsMTEgKzMsMTEgQEAgTWljcm9zb2Z0IFZp
c3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOS4wMAogIyBWaXN1YWwg
U3R1ZGlvIDIwMDUNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJD
OTQyfSIpID0gIldlYktpdCIsICJXZWJLaXQudmNwcm9qIiwgInswNjYyQThBOS04MkEzLTQ2Mzgt
OTdEOC1FQzQyNUQ4RDg3Qzl9Ig0KIAlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVz
KSA9IHBvc3RQcm9qZWN0DQotCQl7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0MkYwMjEyMkM1
fSA9IHswMTFEMTBGMS1CNjU2LTRBMUItQTBDMy0zODQyRjAyMTIyQzV9DQotCQl7OTE3NjJCRTIt
ODdFRi00RjVBLUE0ODAtNDhCOTBFQjNGNDA2fSA9IHs5MTc2MkJFMi04N0VGLTRGNUEtQTQ4MC00
OEI5MEVCM0Y0MDZ9DQotCQl7MUMxNjMzN0ItQUNGMy00RDAzLUFBOTAtODUxQzVCNUVBREE2fSA9
IHsxQzE2MzM3Qi1BQ0YzLTREMDMtQUE5MC04NTFDNUI1RUFEQTZ9DQotCQl7Qjg0MzdBNDEtNjdC
Qy00NzY5LTk0NTItNDUyMDM4MjdGODIxfSA9IHtCODQzN0E0MS02N0JDLTQ3NjktOTQ1Mi00NTIw
MzgyN0Y4MjF9DQogCQl7QUE4QTVBODUtNTkyQi00MzU3LUJDNjAtRTBFOTFFMDI2QUY2fSA9IHtB
QThBNUE4NS01OTJCLTQzNTctQkM2MC1FMEU5MUUwMjZBRjZ9DQorCQl7Qjg0MzdBNDEtNjdCQy00
NzY5LTk0NTItNDUyMDM4MjdGODIxfSA9IHtCODQzN0E0MS02N0JDLTQ3NjktOTQ1Mi00NTIwMzgy
N0Y4MjF9DQorCQl7MUMxNjMzN0ItQUNGMy00RDAzLUFBOTAtODUxQzVCNUVBREE2fSA9IHsxQzE2
MzM3Qi1BQ0YzLTREMDMtQUE5MC04NTFDNUI1RUFEQTZ9DQorCQl7OTE3NjJCRTItODdFRi00RjVB
LUE0ODAtNDhCOTBFQjNGNDA2fSA9IHs5MTc2MkJFMi04N0VGLTRGNUEtQTQ4MC00OEI5MEVCM0Y0
MDZ9DQorCQl7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0MkYwMjEyMkM1fSA9IHswMTFEMTBG
MS1CNjU2LTRBMUItQTBDMy0zODQyRjAyMTIyQzV9DQogCUVuZFByb2plY3RTZWN0aW9uDQogRW5k
UHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9
IikgPSAiV2ViS2l0R1VJRCIsICJXZWJLaXRHVUlELnZjcHJvaiIsICJ7Qjg0MzdBNDEtNjdCQy00
NzY5LTk0NTItNDUyMDM4MjdGODIxfSINCkBAIC00Miw4ICs0Miw4IEBAIFByb2plY3QoIns4QkM5
Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiSmF2YVNjcmlwdENvcmUiLCAi
Li5cLi5cLi5cCiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDEx
LTAwQTBDOTFCQzk0Mn0iKSA9ICJ0ZXN0a2pzIiwgIi4uXC4uXC4uXEphdmFTY3JpcHRDb3JlXEph
dmFTY3JpcHRDb3JlLnZjcHJvalx0ZXN0a2pzXHRlc3RranMudmNwcm9qIiwgIntDNTlFNTEyOS1C
NDUzLTQ5QjctQTUyQi0xRTEwNDcxNUY3NkV9Ig0KIAlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVw
ZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0
MkYwMjEyMkM1fSA9IHswMTFEMTBGMS1CNjU2LTRBMUItQTBDMy0zODQyRjAyMTIyQzV9DQogCQl7
QUE4QTVBODUtNTkyQi00MzU3LUJDNjAtRTBFOTFFMDI2QUY2fSA9IHtBQThBNUE4NS01OTJCLTQz
NTctQkM2MC1FMEU5MUUwMjZBRjZ9DQorCQl7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0MkYw
MjEyMkM1fSA9IHswMTFEMTBGMS1CNjU2LTRBMUItQTBDMy0zODQyRjAyMTIyQzV9DQogCUVuZFBy
b2plY3RTZWN0aW9uDQogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAt
OEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiZGZ0YWJsZXMiLCAiLi5cLi5cLi5cSmF2YVNjcmlwdENv
cmVcSmF2YVNjcmlwdENvcmUudmNwcm9qXGRmdGFibGVzXGRmdGFibGVzLnZjcHJvaiIsICJ7QkMy
OTgxQzAtNjdBNS00QTNDLTg3OUItNzg0QkNCREUyNTQxfSINCkBAIC01Miw2ICs1MiwxMyBAQCBQ
cm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIldURiIs
ICIuLlwuLlwuLlxKYXZhU2NyaXB0QwogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04
QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiRmluZFNhZmFyaSIsICIuLlwuLlwuLlxX
ZWJLaXRUb29sc1xGaW5kU2FmYXJpXEZpbmRTYWZhcmkudmNwcm9qIiwgIntEQTMxREE1Mi02Njc1
LTQ4RDQtODlFMC0zMzNBNzE0NDM5N0N9Ig0KIEVuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNF
QjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIkltYWdlRGlmZiIsICIuLlwuLlwu
LlxXZWJLaXRUb29sc1xEdW1wUmVuZGVyVHJlZVx3aW5cSW1hZ2VEaWZmLnZjcHJvaiIsICJ7NTlD
QzA1NDctNzBBQy00OTlDLTlCMTktRUMwMUM2RjYxMTM3fSINCisJUHJvamVjdFNlY3Rpb24oUHJv
amVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJezFDMTYzMzdCLUFDRjMtNEQwMy1B
QTkwLTg1MUM1QjVFQURBNn0gPSB7MUMxNjMzN0ItQUNGMy00RDAzLUFBOTAtODUxQzVCNUVBREE2
fQ0KKwkJe0FBOEE1QTg1LTU5MkItNDM1Ny1CQzYwLUUwRTkxRTAyNkFGNn0gPSB7QUE4QTVBODUt
NTkyQi00MzU3LUJDNjAtRTBFOTFFMDI2QUY2fQ0KKwkJezAxMUQxMEYxLUI2NTYtNEExQi1BMEMz
LTM4NDJGMDIxMjJDNX0gPSB7MDExRDEwRjEtQjY1Ni00QTFCLUEwQzMtMzg0MkYwMjEyMkM1fQ0K
KwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCiBHbG9iYWwNCiAJR2xvYmFsU2VjdGlv
bihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCiAJCURlYnVn
fFdpbjMyID0gRGVidWd8V2luMzINCkBAIC0xMDIsNiArMTA5LDEwIEBAIEdsb2JhbAogCQl7REEz
MURBNTItNjY3NS00OEQ0LTg5RTAtMzMzQTcxNDQzOTdDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0g
RGVidWd8V2luMzINCiAJCXtEQTMxREE1Mi02Njc1LTQ4RDQtODlFMC0zMzNBNzE0NDM5N0N9LlJl
bGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJe0RBMzFEQTUyLTY2NzUt
NDhENC04OUUwLTMzM0E3MTQ0Mzk3Q30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxX
aW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05QjE5LUVDMDFDNkY2MTEzN30uRGVidWd8V2lu
MzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1F
QzAxQzZGNjExMzd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezU5Q0Mw
NTQ3LTcwQUMtNDk5Qy05QjE5LUVDMDFDNkY2MTEzN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcg
PSBSZWxlYXNlfFdpbjMyDQorCQl7NTlDQzA1NDctNzBBQy00OTlDLTlCMTktRUMwMUM2RjYxMTM3
fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCUVuZEdsb2JhbFNlY3Rp
b24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJ
CUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA2ODFlMGFmLi41ZjIxYTIxIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjMgQEAKIDIwMDctMTEtMjUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCisgICAgICAgIFBvcnQgSW1hZ2VEaWZmIHRvIENHIGFuZCBDKysKKworICAgICAgICBG
aW5hbCBwYXJ0IG9mIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTMz
CisgICAgICAgIDxyZGFyOi8vNTA3MTcwOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnNsbjog
QWRkZWQgSW1hZ2VEaWZmLnZjcHJvai4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9JbWFn
ZURpZmYuY3BwOiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAoY3JlYXRlSW1hZ2VG
cm9tU3RkaW4pOgorICAgICAgICAoY29tcGFyZUltYWdlcyk6CisgICAgICAgIChnZXREaWZmZXJl
bmNlQml0bWFwKToKKyAgICAgICAgKGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmLnZjcHJvajogQWRkZWQuCisKKzIwMDct
MTEtMjUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCBpbWFn
ZSBkaWZmIGxpbmsgZ2VuZXJhdGlvbiBvbiBXaW5kb3dzCiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5zbG4gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5zbG4KaW5kZXggZWJhNDlhZi4uOWE5MDg2OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuc2xuCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnNsbgpAQCAtNyw2ICs3LDggQEAgUHJvamVjdCgiezhC
QzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJUZXN0TmV0c2NhcGVQbHVn
aW4iLCAid2luXFQKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThE
MTEtMDBBMEM5MUJDOTQyfSIpID0gIkZpbmRTYWZhcmkiLCAiLi5cRmluZFNhZmFyaVxGaW5kU2Fm
YXJpLnZjcHJvaiIsICJ7REEzMURBNTItNjY3NS00OEQ0LTg5RTAtMzMzQTcxNDQzOTdDfSINCiBF
bmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0
Mn0iKSA9ICJJbWFnZURpZmYiLCAid2luXEltYWdlRGlmZi52Y3Byb2oiLCAiezU5Q0MwNTQ3LTcw
QUMtNDk5Qy05QjE5LUVDMDFDNkY2MTEzN30iDQorRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9i
YWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0K
IAkJRGVidWdfSW50ZXJuYWx8V2luMzIgPSBEZWJ1Z19JbnRlcm5hbHxXaW4zMg0KQEAgLTMyLDYg
KzM0LDEyIEBAIEdsb2JhbAogCQl7REEzMURBNTItNjY3NS00OEQ0LTg5RTAtMzMzQTcxNDQzOTdD
fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtEQTMxREE1Mi02Njc1LTQ4
RDQtODlFMC0zMzNBNzE0NDM5N0N9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxX
aW4zMg0KIAkJe0RBMzFEQTUyLTY2NzUtNDhENC04OUUwLTMzM0E3MTQ0Mzk3Q30uUmVsZWFzZXxX
aW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05QjE5
LUVDMDFDNkY2MTEzN30uRGVidWdfSW50ZXJuYWx8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2lu
MzINCisJCXs1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1FQzAxQzZGNjExMzd9LkRlYnVnX0ludGVy
bmFsfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05
QjE5LUVDMDFDNkY2MTEzN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJ
CXs1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1FQzAxQzZGNjExMzd9LkRlYnVnfFdpbjMyLkJ1aWxk
LjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezU5Q0MwNTQ3LTcwQUMtNDk5Qy05QjE5LUVDMDFDNkY2MTEz
N30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NTlDQzA1NDct
NzBBQy00OTlDLTlCMTktRUMwMUM2RjYxMTM3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxl
YXNlfFdpbjMyDQogCUVuZEdsb2JhbFNlY3Rpb24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblBy
b3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZi5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmYuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZDQ3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmYuY3BwCkBAIC0wLDAgKzEsMjAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSBCZW4gTGEgTW9uaWNhIDxiZW4ubGFtb25pY2FA
Z21haWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNkZWZpbmUgbWluIG1pbgorCisjaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NHQml0bWFwQ29udGV4dC5oPgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0ltYWdl
Lmg+CisjaW5jbHVkZSA8SW1hZ2VJTy9DR0ltYWdlRGVzdGluYXRpb24uaD4KKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUg
PGlvLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworLyogcHJvdG90eXBlcyAq
LworaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSk7CitSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY3JlYXRlSW1hZ2VGcm9tU3RkaW4oaW50IGltYWdlU2l6ZSk7Cit2b2lkIGNvbXBh
cmVJbWFnZXMoQ0dJbWFnZVJlZiBhY3R1YWxCaXRtYXAsIENHSW1hZ2VSZWYgYmFzZWxpbmVJbWFn
ZSwgdW5zaWduZWQgdGhyZXNob2xkKTsKK1JldGFpblB0cjxDR0NvbnRleHRSZWY+IGdldERpZmZl
cmVuY2VCaXRtYXAoQ0dJbWFnZVJlZiBhY3R1YWxCaXRtYXAsIENHSW1hZ2VSZWYgYmFzZWxpbmVJ
bWFnZSk7CitmbG9hdCBjb21wdXRlUGVyY2VudGFnZURpZmZlcmVudChDR0NvbnRleHRSZWYgZGlm
ZkJpdG1hcCwgdW5zaWduZWQgdGhyZXNob2xkKTsKKworc3RhdGljIGNvbnN0IENGU3RyaW5nUmVm
IGtVVFR5cGVQTkcgPSBDRlNUUigicHVibGljLnBuZyIpOworCitpbnQgbWFpbihpbnQgYXJnYywg
Y29uc3QgY2hhciogYXJndltdKQoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBfc2V0bW9kZSgw
LCBfT19CSU5BUlkpOworICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7CisjZW5kaWYKKworICAg
IHVuc2lnbmVkIHRocmVzaG9sZCA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ2M7
ICsraSkgeworICAgICAgICBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXQiKSB8fCAhc3RyY21wKGFy
Z3ZbaV0sICItLXRocmVzaG9sZCIpKSB7CisgICAgICAgICAgICBpZiAoaSA+PSBhcmdjIC0gMSkK
KyAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgdGhyZXNob2xkID0gc3RydG9s
KGFyZ3ZbaSArIDFdLCAwLCAwKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgfQorCisgICAgY2hhciBidWZmZXJbMjA0OF07CisgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGFjdHVhbEltYWdlOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBiYXNlbGluZUltYWdlOworCisgICAgd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZl
ciksIHN0ZGluKSkgeworICAgICAgICAvLyByZW1vdmUgdGhlIENSCisgICAgICAgIGNoYXIqIG5l
d0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoYnVmZmVyLCAnXG4nKTsKKyAgICAgICAgaWYgKG5ld0xp
bmVDaGFyYWN0ZXIpCisgICAgICAgICAgICAqbmV3TGluZUNoYXJhY3RlciA9ICdcMCc7CisKKyAg
ICAgICAgaWYgKCFzdHJuY21wKCJDb250ZW50LWxlbmd0aDogIiwgYnVmZmVyLCAxNikpIHsKKyAg
ICAgICAgICAgIHN0cnRvayhidWZmZXIsICIgIik7CisgICAgICAgICAgICBpbnQgaW1hZ2VTaXpl
ID0gc3RydG9sKHN0cnRvaygwLCAiICIpLCAwLCAxMCk7CisKKyAgICAgICAgICAgIGlmIChpbWFn
ZVNpemUgPiAwICYmICFhY3R1YWxJbWFnZSkKKyAgICAgICAgICAgICAgICBhY3R1YWxJbWFnZSA9
IGNyZWF0ZUltYWdlRnJvbVN0ZGluKGltYWdlU2l6ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChp
bWFnZVNpemUgPiAwICYmICFiYXNlbGluZUltYWdlKQorICAgICAgICAgICAgICAgIGJhc2VsaW5l
SW1hZ2UgPSBjcmVhdGVJbWFnZUZyb21TdGRpbihpbWFnZVNpemUpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGZwdXRzKCJlcnJvciwgaW1hZ2Ugc2l6ZSBtdXN0IGJlIHNwZWNp
ZmllZC5cbiIsIHN0ZG91dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWN0dWFsSW1hZ2Ug
JiYgYmFzZWxpbmVJbWFnZSkgeworICAgICAgICAgICAgY29tcGFyZUltYWdlcyhhY3R1YWxJbWFn
ZS5nZXQoKSwgYmFzZWxpbmVJbWFnZS5nZXQoKSwgdGhyZXNob2xkKTsKKyAgICAgICAgICAgIGFj
dHVhbEltYWdlID0gMDsKKyAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2UgPSAwOworICAgICAgICB9
CisKKyAgICAgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK
K1JldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZyb21TdGRpbihpbnQgYnl0ZXNSZW1h
aW5pbmcpCit7CisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbMjA0OF07CisgICAgUmV0YWluUHRy
PENGTXV0YWJsZURhdGFSZWY+IGRhdGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCBi
eXRlc1JlbWFpbmluZykpOworCisgICAgd2hpbGUgKGJ5dGVzUmVtYWluaW5nID4gMCkgeworICAg
ICAgICBzaXplX3QgYnl0ZXNUb1JlYWQgPSBtaW4oYnl0ZXNSZW1haW5pbmcsIDIwNDgpOworICAg
ICAgICBzaXplX3QgYnl0ZXNSZWFkID0gZnJlYWQoYnVmZmVyLCAxLCBieXRlc1RvUmVhZCwgc3Rk
aW4pOworICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhkYXRhLmdldCgpLCBidWZmZXIsIHN0YXRp
Y19jYXN0PENGSW5kZXg+KGJ5dGVzUmVhZCkpOworICAgICAgICBieXRlc1JlbWFpbmluZyAtPSBz
dGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7CisgICAgfQorICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyKEFkb3B0Q0YsIENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0
aENGRGF0YShkYXRhLmdldCgpKSk7CisgICAgcmV0dXJuIFJldGFpblB0cjxDR0ltYWdlUmVmPihB
ZG9wdENGLCBDR0ltYWdlQ3JlYXRlV2l0aFBOR0RhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0
KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Cit9CisKK3ZvaWQgY29t
cGFyZUltYWdlcyhDR0ltYWdlUmVmIGFjdHVhbEJpdG1hcCwgQ0dJbWFnZVJlZiBiYXNlbGluZUJp
dG1hcCwgdW5zaWduZWQgdGhyZXNob2xkKQoreworICAgIC8vIHByZXBhcmUgdGhlIGRpZmZlcmVu
Y2UgYmxlbmQgdG8gY2hlY2sgZm9yIHBpeGVsIHZhcmlhdGlvbnMKKyAgICBSZXRhaW5QdHI8Q0dD
b250ZXh0UmVmPiBkaWZmQml0bWFwID0gZ2V0RGlmZmVyZW5jZUJpdG1hcChhY3R1YWxCaXRtYXAs
IGJhc2VsaW5lQml0bWFwKTsKKworICAgIGZsb2F0IHBlcmNlbnRhZ2UgPSBjb21wdXRlUGVyY2Vu
dGFnZURpZmZlcmVudChkaWZmQml0bWFwLmdldCgpLCB0aHJlc2hvbGQpOworCisgICAgcGVyY2Vu
dGFnZSA9IChmbG9hdCkoKGludCkocGVyY2VudGFnZSAqIDEwMC4wZikpIC8gMTAwLjBmOyAvLyBy
b3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzCisKKyAgICAvLyBzZW5kIG1lc3NhZ2UgdG8gbGV0IHRo
ZW0ga25vdyBpZiBhbiBpbWFnZSB3YXMgd3JvbmcKKyAgICBpZiAocGVyY2VudGFnZSA+IDAuMGYp
IHsKKyAgICAgICAgLy8gc2luY2UgdGhlIGRpZmYgbWlnaHQgYWN0dWFsbHkgc2hvdyBzb21ldGhp
bmcsIHNlbmQgaXQgdG8gc3Rkb3V0CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFn
ZShBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShkaWZmQml0bWFwLmdldCgpKSk7
CisgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEoQWRvcHRDRiwg
Q0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlRGVz
dGluYXRpb25SZWY+IGltYWdlRGVzdChBZG9wdENGLCBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVX
aXRoRGF0YShpbWFnZURhdGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIDApKTsKKyAgICAgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0LmdldCgpLCBpbWFnZS5nZXQoKSwgMCk7
CisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdC5nZXQoKSk7Cisg
ICAgICAgIHByaW50ZigiQ29udGVudC1sZW5ndGg6ICVsdVxuIiwgQ0ZEYXRhR2V0TGVuZ3RoKGlt
YWdlRGF0YS5nZXQoKSkpOworICAgICAgICBmd3JpdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihpbWFnZURh
dGEuZ2V0KCkpLCAxLCBDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRhLmdldCgpKSwgc3Rkb3V0KTsK
KyAgICAgICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBmYWlsZWRcbiIsIHBlcmNl
bnRhZ2UpOworICAgIH0gZWxzZQorICAgICAgICBmcHJpbnRmKHN0ZG91dCwgImRpZmY6ICUwMS4y
ZiUlIHBhc3NlZFxuIiwgcGVyY2VudGFnZSk7Cit9CisKK1JldGFpblB0cjxDR0NvbnRleHRSZWY+
IGdldERpZmZlcmVuY2VCaXRtYXAoQ0dJbWFnZVJlZiB0ZXN0Qml0bWFwLCBDR0ltYWdlUmVmIHJl
ZmVyZW5jZUJpdG1hcCkKK3sKKyAgICAvLyB3ZSBtdXN0IGhhdmUgYm90aCBpbWFnZXMgdG8gdGFr
ZSBkaWZmCisgICAgaWYgKCF0ZXN0Qml0bWFwIHx8ICFyZWZlcmVuY2VCaXRtYXApCisgICAgICAg
IHJldHVybiAwOworCisgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZShB
ZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7CisgICAgdW5zaWduZWQgY2hh
ciogZGF0YSA9IG5ldyB1bnNpZ25lZCBjaGFyW0NHSW1hZ2VHZXRIZWlnaHQodGVzdEJpdG1hcCkg
KiBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3codGVzdEJpdG1hcCldOworICAgIFJldGFpblB0cjxDR0Nv
bnRleHRSZWY+IGNvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIENH
SW1hZ2VHZXRXaWR0aCh0ZXN0Qml0bWFwKSwgQ0dJbWFnZUdldEhlaWdodCh0ZXN0Qml0bWFwKSwK
KyAgICAgICAgQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQodGVzdEJpdG1hcCksIENHSW1hZ2VH
ZXRCeXRlc1BlclJvdyh0ZXN0Qml0bWFwKSwgY29sb3JTcGFjZS5nZXQoKSwga0NHQml0bWFwQnl0
ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CisKKyAg
ICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlTm9ybWFs
KTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBzdGF0aWNfY2FzdDxDR0Zsb2F0PihDR0ltYWdlR2V0V2lkdGgodGVzdEJpdG1hcCkpLCBzdGF0
aWNfY2FzdDxDR0Zsb2F0PihDR0ltYWdlR2V0SGVpZ2h0KHRlc3RCaXRtYXApKSksIHRlc3RCaXRt
YXApOworICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1v
ZGVEaWZmZXJlbmNlKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dS
ZWN0TWFrZSgwLCAwLCBzdGF0aWNfY2FzdDxDR0Zsb2F0PihDR0ltYWdlR2V0V2lkdGgocmVmZXJl
bmNlQml0bWFwKSksIHN0YXRpY19jYXN0PENHRmxvYXQ+KENHSW1hZ2VHZXRIZWlnaHQocmVmZXJl
bmNlQml0bWFwKSkpLCByZWZlcmVuY2VCaXRtYXApOworCisgICAgcmV0dXJuIGNvbnRleHQ7Cit9
CisKKy8qKgorICogQ291bnRzIHRoZSBudW1iZXIgb2Ygbm9uLWJsYWNrIHBpeGVscywgYW5kIHJl
dHVybnMgdGhlIHBlcmNlbnRhZ2UKKyAqIG9mIG5vbi1ibGFjayBwaXhlbHMgdG8gdG90YWwgcGl4
ZWxzIGluIHRoZSBpbWFnZS4KKyAqLworZmxvYXQgY29tcHV0ZVBlcmNlbnRhZ2VEaWZmZXJlbnQo
Q0dDb250ZXh0UmVmIGRpZmZCaXRtYXAsIHVuc2lnbmVkIHRocmVzaG9sZCkKK3sKKyAgICAvLyBp
ZiBkaWZmQmlhdG1hcCBpcyBuaWwsIHRoZW4gdGhlcmUgd2FzIGFuIGVycm9yLCBhbmQgaXQgZGlk
bid0IG1hdGNoLgorICAgIGlmICghZGlmZkJpdG1hcCkKKyAgICAgICAgcmV0dXJuIDEwMC4wZjsK
KworICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0gQ0dCaXRtYXBDb250ZXh0R2V0Qml0bWFw
SW5mbyhkaWZmQml0bWFwKTsKKyAgICBhc3NlcnQoIShiaXRtYXBJbmZvICYga0NHSW1hZ2VBbHBo
YUZpcnN0KSk7CisgICAgYXNzZXJ0KCEoYml0bWFwSW5mbyAmIGtDR0JpdG1hcEZsb2F0Q29tcG9u
ZW50cykpOworCisgICAgc2l6ZV90IHBpeGVsc0hpZ2ggPSBDR0JpdG1hcENvbnRleHRHZXRIZWln
aHQoZGlmZkJpdG1hcCk7CisgICAgc2l6ZV90IHBpeGVsc1dpZGUgPSBDR0JpdG1hcENvbnRleHRH
ZXRXaWR0aChkaWZmQml0bWFwKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0JpdG1hcENv
bnRleHRHZXRCeXRlc1BlclJvdyhkaWZmQml0bWFwKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhl
bFJvd0RhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oQ0dCaXRtYXBDb250ZXh0R2V0
RGF0YShkaWZmQml0bWFwKSk7CisgICAgdW5zaWduZWQgZGlmZmVyZW5jZXMgPSAwOworCisgICAg
Ly8gTk9URTogVGhpcyBtYXkgbm90IGJlIHNhZmUgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBFTkRJ
QU4gdHlwZXMKKyAgICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hpZ2g7IHJv
dysrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgY29sID0gMDsgY29sIDwgKHBpeGVsc1dpZGUg
KiA0KTsgY29sICs9IDQpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHJlZCA9IHBpeGVs
Um93RGF0YSArIGNvbDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGdyZWVuID0gcmVkICsg
MTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGJsdWUgPSByZWQgKyAyOworICAgICAgICAg
ICAgdW5zaWduZWQgZGlzdGFuY2UgPSAqcmVkICsgKmdyZWVuICsgKmJsdWU7CisgICAgICAgICAg
ICBpZiAoZGlzdGFuY2UgPiB0aHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNl
cysrOworICAgICAgICAgICAgICAgIC8vIHNoaWZ0IHRoZSBwaXhlbHMgdG93YXJkcyB3aGl0ZSB0
byBtYWtlIHRoZW0gbW9yZSB2aXNpYmxlCisgICAgICAgICAgICAgICAgKnJlZCA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KG1pbihVQ0hBUl9NQVgsICpyZWQgKyAxMDApKTsKKyAgICAgICAg
ICAgICAgICAqZ3JlZW4gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtaW4oVUNIQVJfTUFY
LCAqZ3JlZW4gKyAxMDApKTsKKyAgICAgICAgICAgICAgICAqYmx1ZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KG1pbihVQ0hBUl9NQVgsICpibHVlICsgMTAwKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcGl4ZWxSb3dEYXRhICs9IGJ5dGVzUGVyUm93OworICAgIH0K
KworICAgIGZsb2F0IHRvdGFsUGl4ZWxzID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBpeGVsc0hpZ2gg
KiBwaXhlbHNXaWRlKTsKKyAgICByZXR1cm4gKGRpZmZlcmVuY2VzICogMTAwLmYpIC8gdG90YWxQ
aXhlbHM7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vSW1h
Z2VEaWZmLnZjcHJvaiBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9JbWFnZURpZmYu
dmNwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MzgyYTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vSW1hZ2VEaWZmLnZj
cHJvagpAQCAtMCwwICsxLDE4MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2lu
ZG93cy0xMjUyIj8+DQorPFZpc3VhbFN0dWRpb1Byb2plY3QNCisJUHJvamVjdFR5cGU9IlZpc3Vh
bCBDKysiDQorCVZlcnNpb249IjguMDAiDQorCU5hbWU9IkltYWdlRGlmZiINCisJUHJvamVjdEdV
SUQ9Ins1OUNDMDU0Ny03MEFDLTQ5OUMtOUIxOS1FQzAxQzZGNjExMzd9Ig0KKwlSb290TmFtZXNw
YWNlPSJJbWFnZURpZmYiDQorCT4NCisJPFBsYXRmb3Jtcz4NCisJCTxQbGF0Zm9ybQ0KKwkJCU5h
bWU9IldpbjMyIg0KKwkJLz4NCisJPC9QbGF0Zm9ybXM+DQorCTxUb29sRmlsZXM+DQorCTwvVG9v
bEZpbGVzPg0KKwk8Q29uZmlndXJhdGlvbnM+DQorCQk8Q29uZmlndXJhdGlvbg0KKwkJCU5hbWU9
IkRlYnVnfFdpbjMyIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iJChXZWJLaXRPdXRwdXREaXIpXGJp
biINCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSkiDQorCQkJQ29uZmlndXJhdGlvblR5cGU9
IjEiDQorCQkJQ2hhcmFjdGVyU2V0PSIyIg0KKwkJCT4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJW
Q1ByZUJ1aWxkRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNDdXN0
b21CdWlsZFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5l
cmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJv
eHlHZW5lcmF0b3JUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNSURMVG9v
bCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJ
CU9wdGltaXphdGlvbj0iMCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OyINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIg0KKwkJCQlNaW5pbWFsUmVidWlsZD0idHJ1ZSIN
CisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KKwkJCQlSdW50aW1lTGlicmFyeT0iMyINCisJ
CQkJV2FybmluZ0xldmVsPSI0Ig0KKwkJCQlXYXJuQXNFcnJvcj0idHJ1ZSINCisJCQkJRGV0ZWN0
NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9y
bWF0PSI0Ig0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VD
b21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29t
cGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRU
b29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KKwkJCQlM
aW5rTGlicmFyeURlcGVuZGVuY2llcz0iZmFsc2UiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNp
ZXM9IkNvcmVHcmFwaGljcy5saWIgQ29yZUZvdW5kYXRpb24ubGliIg0KKwkJCQlBZGRpdGlvbmFs
TGlicmFyeURpcmVjdG9yaWVzPSIkKFdlYktpdE91dHB1dERpcilcbGliOyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxsaWIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCisJCQkJ
VGFyZ2V0TWFjaGluZT0iMSINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDQUxpbmtU
b29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQorCQkJ
Lz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KKwkJCS8+DQorCQkJPFRv
b2wNCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5h
bWU9IlZDRnhDb3BUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNBcHBWZXJp
ZmllclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRU
b29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wi
DQorCQkJLz4NCisJCTwvQ29uZmlndXJhdGlvbj4NCisJCTxDb25maWd1cmF0aW9uDQorCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiINCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoV2ViS2l0T3V0cHV0RGly
KVxiaW4iDQorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KKwkJCUNvbmZpZ3VyYXRpb25U
eXBlPSIxIg0KKwkJCUNoYXJhY3RlclNldD0iMiINCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRp
b249IjEiDQorCQkJPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wi
DQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkv
Pg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQorCQkJLz4N
CisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQor
CQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01JRExUb29sIg0KKwkJCS8+DQorCQkJPFRv
b2wNCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVE
aXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OyINCisJCQkJUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIg0KKwkJCQlSdW50aW1l
TGlicmFyeT0iMiINCisJCQkJV2FybmluZ0xldmVsPSI0Ig0KKwkJCQlXYXJuQXNFcnJvcj0idHJ1
ZSINCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJ0cnVlIg0KKwkJCQlEZWJ1
Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNN
YW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1l
PSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0i
VkNQcmVMaW5rRXZlbnRUb29sIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJCQkJTmFtZT0iVkNMaW5r
ZXJUb29sIg0KKwkJCQlMaW5rTGlicmFyeURlcGVuZGVuY2llcz0iZmFsc2UiDQorCQkJCUFkZGl0
aW9uYWxEZXBlbmRlbmNpZXM9IkNvcmVHcmFwaGljcy5saWIgQ29yZUZvdW5kYXRpb24ubGliIg0K
KwkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIkKFdlYktpdE91dHB1dERpcilcbGli
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxsaWIiDQorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlv
bj0idHJ1ZSINCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KKwkJCQlFbmFibGVDT01EQVRG
b2xkaW5nPSIyIg0KKwkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KKwkJCS8+DQorCQkJPFRvb2wNCisJ
CQkJTmFtZT0iVkNBTGlua1Rvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ01h
bmlmZXN0VG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wi
DQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KKwkJCS8+DQor
CQkJPFRvb2wNCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJ
CQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCisJCQkvPg0KKwkJCTxUb29sDQorCQkJCU5hbWU9
IlZDV2ViRGVwbG95bWVudFRvb2wiDQorCQkJLz4NCisJCQk8VG9vbA0KKwkJCQlOYW1lPSJWQ1Bv
c3RCdWlsZEV2ZW50VG9vbCINCisJCQkvPg0KKwkJPC9Db25maWd1cmF0aW9uPg0KKwk8L0NvbmZp
Z3VyYXRpb25zPg0KKwk8UmVmZXJlbmNlcz4NCisJPC9SZWZlcmVuY2VzPg0KKwk8RmlsZXM+DQor
CQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cY2dcSW1hZ2VEaWZmLmNwcCINCisJCQk+DQor
CQk8L0ZpbGU+DQorCTwvRmlsZXM+DQorCTxHbG9iYWxzPg0KKwk8L0dsb2JhbHM+DQorPC9WaXN1
YWxTdHVkaW9Qcm9qZWN0Pg0K
</data>
<flag name="review"
          id="7531"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>