<?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>123383</bug_id>
          
          <creation_ts>2013-10-25 22:20:23 -0700</creation_ts>
          <short_desc>REGRESSION: Crashes in -[UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:]</short_desc>
          <delta_ts>2013-11-01 12:17:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943851</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-25 22:20:23 -0700</bug_when>
    <thetext>http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r158075%20(10998)/storage/websql/sql-error-codes-crash-log.txt

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010b18b59a WTFCrash + 42 (Assertions.cpp:342)
1   DumpRenderTree                	0x000000010aa0a142 -[UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:] + 370 (UIDelegate.mm:178)
2   com.apple.WebKit              	0x000000010c312a5d objc_object* wtfObjcMsgSend&lt;objc_object*, WebView*, objc_object*, objc_object*, objc_object*&gt;(objc_object*, objc_selector*, WebView*, objc_object*, objc_object*, objc_object*) + 61 (ObjcRuntimeExtras.h:38)
3   com.apple.WebKit              	0x000000010c30fe18 CallDelegate(WebView*, objc_object*, objc_selector*, objc_object*, objc_object*, objc_object*) + 120 (WebDelegateImplementationCaching.mm:147)
4   com.apple.WebKit              	0x000000010c30fd95 CallUIDelegate(WebView*, objc_selector*, objc_object*, objc_object, objc_object) + 85 (WebDelegateImplementationCaching.mm:421)
5   com.apple.WebKit              	0x000000010c2ff7eb WebChromeClient::exceededDatabaseQuota(WebCore::Frame*, WTF::String const&amp;, WebCore::DatabaseDetails) + 459 (WebChromeClient.mm:646)

Must have regressed in &lt;http://trac.webkit.org/changeset/157874&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943852</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-25 22:20:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/15325861&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943903</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-26 10:56:49 -0700</bug_when>
    <thetext>I&apos;ve never been able to reproduce this assertion failure naturally when running the layout tests.  However, by inspecting the code, I can simulate conditions that can cause the assertion to fail.  Here&apos;s how:

When running the test storage/websql/sql-error-codes.html, we would expect [UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:] to be called twice.  The first time is when the test database is being opened.  The second time is when a SQL transaction statement triggers a quota error. 

The first call gets the DatabaseDetails from the ProposedDatabase mechanism.
The second call gets it from the master Databases.db&apos;s Databases table. 

1. In a debugger, set a breakpoint after the completion of the 1st call and run till it breaks.
2. Delete all the databases from your database directory.
3. Continue the run.

Note: you&apos;ll have to complete the break and deletion of databases very quickly so as to not trigger a timeout of the test.

With that, the second call will fail to get a DatabaseDetails record for the requested database.

As to why we&apos;re sometimes seeing this failure in the layout test runs on the bots, my educated guess is that when running multiple tests in parallel, there&apos;s a chance that 2 or tests are attempting to write to the master Databases.db at the same time, and 1 of them may fail.  If the one that failed is the one that attempted to write the entry for the storage/websql/sql-error-codes.html&apos;s test database (when it was being opened) into Databases.db&apos;s Databases table, then the 2nd call to the UIDelegate will fail because it won&apos;t find an entry in that table, and the ProposedDatabase mechanism isn&apos;t in use then.

I&apos;ll look into a fix that will harden the code against such error conditions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945812</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-31 18:35:58 -0700</bug_when>
    <thetext>After analyzing the code, we determine that it is appropriate to return a DatabaseDetails with a 0 size if the master Databases.db or the requested database does not exists (or has been deleted).  The issue here is really that the assertion I added to DumpRenderTree is inappropriate, and that the test infrastructure for testing quota expansion is too fragile.

The fix: remove the assertion, and enhance DumpRenderTree and WebKitTestRunner to only check for quota expansion when the appropriate for the test.

Patch coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945813</commentid>
    <comment_count>4</comment_count>
      <attachid>215709</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-31 18:47:00 -0700</bug_when>
    <thetext>Created attachment 215709
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945814</commentid>
    <comment_count>5</comment_count>
      <attachid>215709</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-31 18:50:36 -0700</bug_when>
    <thetext>Comment on attachment 215709
the patch.

Attachment 215709 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/19478051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945816</commentid>
    <comment_count>6</comment_count>
      <attachid>215710</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-10-31 18:53:19 -0700</bug_when>
    <thetext>Created attachment 215710
patch 2: fixed efl build breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945957</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-01 11:21:52 -0700</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945977</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-01 12:17:49 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r158447: &lt;http://trac.webkit.org/r158447&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215709</attachid>
            <date>2013-10-31 18:47:00 -0700</date>
            <delta_ts>2013-10-31 18:53:19 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-123383.patch</filename>
            <type>text/plain</type>
            <size>22489</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1ODQxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ5IEBACisyMDEzLTEwLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OOiBDcmFzaGVzIGluIC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmZyYW1l
OmV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFiYXNlOl0uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzODMuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBhbiBp
bmFwcHJvcHJpYXRlIGFzc2VydGlvbiBpbiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5t
bSBhbmQKKyAgICAgICAgYWRkZWQgMiBhdHRyaWJ1dGVzIChkYXRhYmFzZURlZmF1bHRRdW90YSBh
bmQgZGF0YWJhc2VNYXhRdW90YSkgdG8gYWxsb3cKKyAgICAgICAgdGVzdHMgdG8gc2V0IGFwcHJv
cHJpYXRlIHF1b3RhIHNldHRpbmdzIHRvIGV4ZXJjaXNlIHF1b3RhIGV4cGFuc2lvbiB0ZXN0cwor
ICAgICAgICB3aGVuIG5lZWRlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChnZXRE
YXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrKToKKyAgICAgICAgKGdldERhdGFiYXNlTWF4UXVv
dGFDYWxsYmFjayk6CisgICAgICAgIChzZXREYXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrKToK
KyAgICAgICAgKHNldERhdGFiYXNlTWF4UXVvdGFDYWxsYmFjayk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpzdGF0aWNWYWx1ZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OmRhdGFiYXNlRGVmYXVsdFF1b3RhKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldERhdGFiYXNlRGVmYXVsdFF1b3RhKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmRhdGFiYXNlTWF4UXVvdGEpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VN
YXhRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVy
VHJlZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpl
eGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZVZpZXcuY3BwOgorICAgICAgICAob25FeGNlZWRlZERhdGFiYXNlUXVvdGEpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtV
SURlbGVnYXRlIHdlYlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlP
cmlnaW46ZGF0YWJhc2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdh
dGUuY3BwOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRF
eGNlZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGF0YWJhc2VEZWZhdWx0UXVvdGEpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXREYXRhYmFzZURlZmF1bHRRdW90YSk6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OmRhdGFiYXNlTWF4UXVvdGEpOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpzZXREYXRhYmFzZU1heFF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJW
aWV3V2l0aE9wdGlvbnMpOgorCiAyMDEzLTEwLTMxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgV0tSZW1vdGVPYmplY3QgY2xhc3MKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYg
KzExMCw4IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoY29uc3Qgc3RkOjpzdHJpbmcKICAgICAs
IG1fYXJlTGVnYWN5V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzSWdub3JlZChmYWxz
ZSkKICAgICAsIG1fY3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9yKGZhbHNlKSAKICAgICAsIG1faGFz
UGVuZGluZ1dlYk5vdGlmaWNhdGlvbkNsaWNrKGZhbHNlKQorICAgICwgbV9kYXRhYmFzZURlZmF1
bHRRdW90YSgtMSkKKyAgICAsIG1fZGF0YWJhc2VNYXhRdW90YSgtMSkKICAgICAsIG1fdGVzdFBh
dGhPclVSTCh0ZXN0UGF0aE9yVVJMKQogICAgICwgbV9leHBlY3RlZFBpeGVsSGFzaChleHBlY3Rl
ZFBpeGVsSGFzaCkKICAgICAsIG1fdGl0bGVUZXh0RGlyZWN0aW9uKCJsdHIiKQpAQCAtMTgzOSw2
ICsxODQxLDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjaygKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGNvbnRyb2xsZXItPmdsb2JhbEZs
YWcoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldERhdGFiYXNlRGVmYXVsdFF1b3RhQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIFRlc3RS
dW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4
dCwgY29udHJvbGxlci0+ZGF0YWJhc2VEZWZhdWx0UXVvdGEoKSk7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIGdldERhdGFiYXNlTWF4UXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBjb250cm9sbGVyLT5kYXRhYmFzZU1heFF1
b3RhKCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRXZWJIaXN0b3J5SXRlbUNvdW50Q2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIFRlc3RS
dW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTE4NzksNiArMTg5MywyMiBAQCBzdGF0aWMgYm9vbCBz
ZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyBib29sIHNldERhdGFiYXNlRGVmYXVsdFF1b3RhQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIFRlc3RSdW5uZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREYXRhYmFzZURlZmF1bHRRdW90YShK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCgh
KmV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHNldERhdGFi
YXNlTWF4UXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRp
Y19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAg
IGNvbnRyb2xsZXItPnNldERhdGFiYXNlTWF4UXVvdGEoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IHZhbHVlLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworICAgIHJldHVy
biB0cnVlOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBpZ25vcmVMZWdhY3lXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMjA1MCw2ICsyMDgwLDggQEAg
SlNTdGF0aWNWYWx1ZSogVGVzdFJ1bm5lcjo6c3RhdGljVmFsdWVzKAogI2VuZGlmCiAgICAgICAg
IHsgInNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQiLCBnZXRTZWN1cmVFdmVudElucHV0SXNFbmFi
bGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGl0bGVUZXh0RGlyZWN0aW9uIiwg
Z2V0VGl0bGVUZXh0RGlyZWN0aW9uQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiZGF0
YWJhc2VEZWZhdWx0UXVvdGEiLCBnZXREYXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrLCBzZXRE
YXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwK
KyAgICAgICAgeyAiZGF0YWJhc2VNYXhRdW90YSIsIGdldERhdGFiYXNlTWF4UXVvdGFDYWxsYmFj
aywgc2V0RGF0YWJhc2VNYXhRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUg
fSwKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAgICB9OwogICAgIHJldHVybiBzdGF0aWNWYWx1
ZXM7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAxNTgzODcpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Nyw2ICsyNzcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZ2xvYmFsRmxhZygpIGNvbnN0IHsgcmV0
dXJuIG1fZ2xvYmFsRmxhZzsgfQogICAgIHZvaWQgc2V0R2xvYmFsRmxhZyhib29sIGdsb2JhbEZs
YWcpIHsgbV9nbG9iYWxGbGFnID0gZ2xvYmFsRmxhZzsgfQogICAgIAorICAgIGRvdWJsZSBkYXRh
YmFzZURlZmF1bHRRdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEZWZhdWx0UXVvdGE7
IH0KKyAgICB2b2lkIHNldERhdGFiYXNlRGVmYXVsdFF1b3RhKGRvdWJsZSBxdW90YSkgeyBtX2Rh
dGFiYXNlRGVmYXVsdFF1b3RhID0gcXVvdGE7IH0KKworICAgIGRvdWJsZSBkYXRhYmFzZU1heFF1
b3RhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZU1heFF1b3RhOyB9CisgICAgdm9pZCBzZXRE
YXRhYmFzZU1heFF1b3RhKGRvdWJsZSBxdW90YSkgeyBtX2RhdGFiYXNlTWF4UXVvdGEgPSBxdW90
YTsgfQorCiAgICAgYm9vbCBkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkgY29uc3QgeyByZXR1
cm4gbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOyB9CiAgICAgdm9pZCBzZXREZWZlck1haW5S
ZXNvdXJjZURhdGFMb2FkKGJvb2wgZmxhZykgeyBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQg
PSBmbGFnOyB9CiAKQEAgLTQxMSw2ICs0MTcsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jdXN0
b21GdWxsU2NyZWVuQmVoYXZpb3I7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdXZWJOb3RpZmljYXRp
b25DbGljazsKIAorICAgIGRvdWJsZSBtX2RhdGFiYXNlRGVmYXVsdFF1b3RhOworICAgIGRvdWJs
ZSBtX2RhdGFiYXNlTWF4UXVvdGE7CisKICAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9u
VXNlcm5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKICAg
ICBzdGQ6OnN0cmluZyBtX3Rlc3RQYXRoT3JVUkw7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMTU4Mzg3
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4NSwxMiArNzg1LDE5IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6
OmV4Y2VlZGVkRGF0YWJhc2VRdW8KIAogICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlciYgbWFu
YWdlciA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOyAKICAgICBXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUs
IG9yaWdpbik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVv
dGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRl
ZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBkb3VibGUgdGVzdERlZmF1bHRRdW90
YSA9IGdUZXN0UnVubmVyLT5kYXRhYmFzZURlZmF1bHRRdW90YSgpOworICAgIGlmICh0ZXN0RGVm
YXVsdFF1b3RhID49IDApCisgICAgICAgIGRlZmF1bHRRdW90YSA9IHRlc3REZWZhdWx0UXVvdGE7
CisKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBkZWZhdWx0UXVvdGE7Ci0gICAg
aWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVv
dGEpIHsKLSAgICAgICAgbmV3UXVvdGEgPSBleHBlY3RlZFNpemU7Ci0gICAgICAgIHByaW50Zigi
VUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4i
LCBuZXdRdW90YSk7CisKKyAgICBkb3VibGUgbWF4UXVvdGEgPSBnVGVzdFJ1bm5lci0+ZGF0YWJh
c2VNYXhRdW90YSgpOworICAgIGlmIChtYXhRdW90YSA+PSAwKSB7CisgICAgICAgIGlmIChkZWZh
dWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhwZWN0ZWRTaXplIDw9IG1heFF1b3RhKSB7Cisg
ICAgICAgICAgICBuZXdRdW90YSA9IGV4cGVjdGVkU2l6ZTsKKyAgICAgICAgICAgIHByaW50Zigi
VUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4i
LCBuZXdRdW90YSk7CisgICAgICAgIH0KICAgICB9CiAgICAgbWFuYWdlci5zZXRRdW90YShvcmln
aW4sIG5ld1F1b3RhKTsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9E
dW1wUmVuZGVyVHJlZVZpZXcuY3BwCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0
LDEzICsxMzQsMjEgQEAgc3RhdGljIHVpbnQ2NF90IG9uRXhjZWVkZWREYXRhYmFzZVF1b3RhKAog
ICAgICAgICAgICAgZGF0YWJhc2VOYW1lKTsKICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUo
b3JpZ2luKTsKIAotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBkZWZhdWx0UXVvdGEgPSA1ICog
MTAyNCAqIDEwMjQ7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1heFF1b3RhID0gMTAgKiAx
MDI0ICogMTAyNDsKLSAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRTaXplICYmIGV4cGVj
dGVkU2l6ZSA8PSBtYXhRdW90YSkgewotICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFC
QVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gJSIgUFJJdTY0ICJcbiIsIGV4cGVjdGVk
U2l6ZSk7Ci0gICAgICAgIHJldHVybiBleHBlY3RlZFNpemU7CisgICAgdWludDY0X3QgZGVmYXVs
dFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGRvdWJsZSB0ZXN0RGVmYXVsdFF1b3RhID0g
Z1Rlc3RSdW5uZXItPmRhdGFiYXNlRGVmYXVsdFF1b3RhKCk7CisgICAgaWYgKHRlc3REZWZhdWx0
UXVvdGEgPj0gMCkKKyAgICAgICAgZGVmYXVsdFF1b3RhID0gdGVzdERlZmF1bHRRdW90YTsKKwor
ICAgIHVpbnQ2NCBuZXdRdW90YSA9IGRlZmF1bHRRdW90YTsKKworICAgIGRvdWJsZSBtYXhRdW90
YSA9IGdUZXN0UnVubmVyLT5kYXRhYmFzZU1heFF1b3RhKCk7CisgICAgaWYgKG1heFF1b3RhID49
IDApIHsKKyAgICAgICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3Rl
ZFNpemUgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRTaXpl
OworICAgICAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5j
cmVhc2VkIHF1b3RhIHRvICUiIFBSSXU2NCAiXG4iLCBleHBlY3RlZFNpemUpOworICAgICAgICB9
CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0UXVvdGE7CisgICAgcmV0dXJuIG5ld1F1b3RhOwog
fQogCiBzdGF0aWMgaW50NjRfdCBvbkV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZVF1b3RhKEV3a19W
aWV3X1NtYXJ0X0RhdGEqLCBFd2tfU2VjdXJpdHlfT3JpZ2luICpvcmlnaW4sIGludDY0X3QgZGVm
YXVsdE9yaWdpblF1b3RhLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMTU4Mzg3KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NSwx
NCArMTc1LDIwIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBmcmFtZToKICAg
ICB9CiAKICAgICBOU0RpY3Rpb25hcnkgKmRhdGFiYXNlRGV0YWlscyA9IFtbV2ViRGF0YWJhc2VN
YW5hZ2VyIHNoYXJlZFdlYkRhdGFiYXNlTWFuYWdlcl0gZGV0YWlsc0ZvckRhdGFiYXNlOmRhdGFi
YXNlSWRlbnRpZmllciB3aXRoT3JpZ2luOm9yaWdpbl07Ci0gICAgQVNTRVJUKGRhdGFiYXNlRGV0
YWlscyk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkU2l6ZSA9IFtbZGF0YWJhc2VE
ZXRhaWxzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZUV4cGVjdGVkU2l6ZUtleV0gdW5zaWduZWRM
b25nTG9uZ1ZhbHVlXTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1
bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9u
ZyBsb25nIG1heFF1b3RhID0gMTAgKiAxMDI0ICogMTAyNDsKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGRvdWJsZSB0ZXN0RGVmYXVs
dFF1b3RhID0gZ1Rlc3RSdW5uZXItPmRhdGFiYXNlRGVmYXVsdFF1b3RhKCk7CisgICAgaWYgKHRl
c3REZWZhdWx0UXVvdGEgPj0gMCkKKyAgICAgICAgZGVmYXVsdFF1b3RhID0gdGVzdERlZmF1bHRR
dW90YTsKKwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IGRlZmF1bHRRdW90YTsK
LSAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRTaXplICYmIGV4cGVjdGVkU2l6ZSA8PSBt
YXhRdW90YSkgewotICAgICAgICBuZXdRdW90YSA9IGV4cGVjdGVkU2l6ZTsKLSAgICAgICAgcHJp
bnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICVs
bHVcbiIsIG5ld1F1b3RhKTsKKworICAgIGRvdWJsZSBtYXhRdW90YSA9IGdUZXN0UnVubmVyLT5k
YXRhYmFzZU1heFF1b3RhKCk7CisgICAgaWYgKG1heFF1b3RhID49IDApIHsKKyAgICAgICAgaWYg
KGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVvdGEp
IHsKKyAgICAgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRTaXplOworICAgICAgICAgICAgcHJp
bnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICVs
bHVcbiIsIG5ld1F1b3RhKTsKKyAgICAgICAgfQogICAgIH0KICAgICBbW29yaWdpbiBkYXRhYmFz
ZVF1b3RhTWFuYWdlcl0gc2V0UXVvdGE6bmV3UXVvdGFdOwogfQpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAkocmV2aXNpb24gMTU4Mzg3KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTUsOCAr
NTk1LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgVUlEZWxlZ2F0ZTo6ZXgKICAgICBT
eXNGcmVlU3RyaW5nKHByb3RvY29sKTsKICAgICBTeXNGcmVlU3RyaW5nKGhvc3QpOwogCi0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAq
IDEwMjQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhRdW90YSA9IDEw
ICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUg
KiAxMDI0ICogMTAyNDsKKyAgICBkb3VibGUgdGVzdERlZmF1bHRRdW90YSA9IGdUZXN0UnVubmVy
LT5kYXRhYmFzZURlZmF1bHRRdW90YSgpOworICAgIGlmICh0ZXN0RGVmYXVsdFF1b3RhID49IDAp
CisgICAgICAgIGRlZmF1bHRRdW90YSA9IHRlc3REZWZhdWx0UXVvdGE7CiAKICAgICBDT01QdHI8
SVdlYkRhdGFiYXNlTWFuYWdlcj4gZGF0YWJhc2VNYW5hZ2VyOwogICAgIENPTVB0cjxJV2ViRGF0
YWJhc2VNYW5hZ2VyPiB0bXBEYXRhYmFzZU1hbmFnZXI7CkBAIC02MTgsOSArNjIwLDEzIEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgVUlEZWxlZ2F0ZTo6ZXgKICAgICBkZXRhaWxzQmFnLT5S
ZWFkKFdlYkRhdGFiYXNlVXNhZ2VLZXksICZ2YXIsIDApOwogICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBleHBlY3RlZFNpemUgPSBWX1VJOCgmdmFyKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3
UXVvdGEgPSBkZWZhdWx0UXVvdGE7Ci0gICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkU2l6
ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVvdGEpIHsKLSAgICAgICAgbmV3UXVvdGEgPSBleHBl
Y3RlZFNpemU7Ci0gICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6
IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4iLCBuZXdRdW90YSk7CisKKyAgICBkb3VibGUgbWF4
UXVvdGEgPSBnVGVzdFJ1bm5lci0+ZGF0YWJhc2VNYXhRdW90YSgpOworICAgIGlmIChtYXhRdW90
YSA+PSAwKSB7CisgICAgICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhw
ZWN0ZWRTaXplIDw9IG1heFF1b3RhKSB7CisgICAgICAgICAgICBuZXdRdW90YSA9IGV4cGVjdGVk
U2l6ZTsKKyAgICAgICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6
IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4iLCBuZXdRdW90YSk7CisgICAgICAgIH0KICAgICB9
CiAgICAgb3JpZ2luLT5zZXRRdW90YShuZXdRdW90YSk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQz
LDE5ICsxNDMsNiBAQCBzdGF0aWMgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoCiAg
ICAgcmV0dXJuIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5iZWZvcmVVbmxvYWRSZXR1cm5WYWx1
ZSgpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90
YShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLU3RyaW5nUmVm
LCBXS1N0cmluZ1JlZiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVu
c2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UsIGNvbnN0
IHZvaWQqKQotewotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFF1
b3RhID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxv
bmcgbWF4UXVvdGEgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdRdW90YSA9IGRlZmF1bHRRdW90YTsKLSAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRV
c2FnZSAmJiBleHBlY3RlZFVzYWdlIDw9IG1heFF1b3RhKSB7Ci0gICAgICAgIG5ld1F1b3RhID0g
ZXhwZWN0ZWRVc2FnZTsKLSAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxM
QkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICVsbHVcbiIsIG5ld1F1b3RhKTsKLSAgICB9Ci0gICAg
cmV0dXJuIG5ld1F1b3RhOwotfQotCi0KIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJ1bk1vZGFsKFdL
UGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIFBsYXRmb3JtV2Vi
VmlldyogdmlldyA9IHN0YXRpY19jYXN0PFBsYXRmb3JtV2ViVmlldyo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKTsKQEAgLTIzMyw3ICsyMjAsNyBAQCBXS1BhZ2VSZWYgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZU90aGVyUGFnCiAgICAgICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCwKICAgICAgICAgMCwgLy8gZGlkRHJhdwogICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCi0g
ICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSwKKyAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRh
YmFzZVF1b3RhCiAgICAgICAgIDAsIC8vIHJ1bk9wZW5QYW5lbAogICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LAogICAgICAgICAwLCAvLyBoZWFkZXJI
ZWlnaHQKQEAgLTQzNCw3ICs0MjEsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJW
aWV3V2l0aE9wCiAgICAgICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCwKICAgICAgICAg
MCwgLy8gZGlkRHJhdwogICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCi0gICAgICAgIGV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YSwKKyAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhLAog
ICAgICAgICAwLCAvLyBydW5PcGVuUGFuZWwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKICAgICAgICAgMCwgLy8gaGVhZGVySGVpZ2h0CkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NDgsMTcgKzE0NDgsMjQgQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjpkaWRFeGNlZWREYQogICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0cHV0
VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25z
dCB1aW50NjRfdCBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgc3RhdGljIGNv
bnN0IHVpbnQ2NF90IG1heFF1b3RhID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICB1aW50NjRfdCBu
ZXdRdW90YSA9IGRlZmF1bHRRdW90YTsKLSAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRV
c2FnZUJ5dGVzICYmIGV4cGVjdGVkVXNhZ2VCeXRlcyA8PSBtYXhRdW90YSkgewotICAgICAgICBu
ZXdRdW90YSA9IGV4cGVjdGVkVXNhZ2VCeXRlczsKLQotICAgICAgICBTdHJpbmdCdWlsZGVyIHN0
cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkgREVM
RUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAiKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobmV3UXVvdGEpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKLSAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm91dHB1
dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICB1aW50NjRfdCBkZWZhdWx0UXVv
dGEgPSA1ICogMTAyNCAqIDEwMjQ7CisgICAgZG91YmxlIHRlc3REZWZhdWx0UXVvdGEgPSBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkudGVzdFJ1bm5lcigpLT5kYXRhYmFzZURlZmF1bHRRdW90YSgp
OworICAgIGlmICh0ZXN0RGVmYXVsdFF1b3RhID49IDApCisgICAgICAgIGRlZmF1bHRRdW90YSA9
IHRlc3REZWZhdWx0UXVvdGE7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBk
ZWZhdWx0UXVvdGE7CisKKyAgICBkb3VibGUgbWF4UXVvdGEgPSBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkudGVzdFJ1bm5lcigpLT5kYXRhYmFzZU1heFF1b3RhKCk7CisgICAgaWYgKG1heFF1b3Rh
ID49IDApIHsKKyAgICAgICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkVXNhZ2VCeXRlcyAm
JiBleHBlY3RlZFVzYWdlQnl0ZXMgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgICAgIG5ld1F1b3Rh
ID0gZXhwZWN0ZWRVc2FnZUJ5dGVzOworCisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlVJIERF
TEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gIik7CisgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihuZXdRdW90YSk7CisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgICAgIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIH0K
ICAgICB9CiAgICAgcmV0dXJuIG5ld1F1b3RhOwogfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAx
NTgzODcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIFRlc3RSdW5uZXI6OlRlc3RS
dW5uZXIoKQogICAgICwgbV9wb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUoZmFsc2UpCiAgICAgLCBt
X2dsb2JhbEZsYWcoZmFsc2UpCiAgICAgLCBtX2N1c3RvbUZ1bGxTY3JlZW5CZWhhdmlvcihmYWxz
ZSkKKyAgICAsIG1fZGF0YWJhc2VEZWZhdWx0UXVvdGEoLTEpCisgICAgLCBtX2RhdGFiYXNlTWF4
UXVvdGEoLTEpCiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0RW5hYmxlZChmYWxzZSkKICAgICAsIG1f
dXNlclN0eWxlU2hlZXRMb2NhdGlvbihhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCIiKSkpCiB7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMTU4Mzg3KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyMCw2ICsyMjAsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZ2xvYmFsRmxhZygpIGNvbnN0IHsg
cmV0dXJuIG1fZ2xvYmFsRmxhZzsgfQogICAgIHZvaWQgc2V0R2xvYmFsRmxhZyhib29sIHZhbHVl
KSB7IG1fZ2xvYmFsRmxhZyA9IHZhbHVlOyB9CiAKKyAgICBkb3VibGUgZGF0YWJhc2VEZWZhdWx0
UXVvdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGVmYXVsdFF1b3RhOyB9CisgICAgdm9p
ZCBzZXREYXRhYmFzZURlZmF1bHRRdW90YShkb3VibGUgcXVvdGEpIHsgbV9kYXRhYmFzZURlZmF1
bHRRdW90YSA9IHF1b3RhOyB9CisKKyAgICBkb3VibGUgZGF0YWJhc2VNYXhRdW90YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YWJhc2VNYXhRdW90YTsgfQorICAgIHZvaWQgc2V0RGF0YWJhc2VNYXhR
dW90YShkb3VibGUgcXVvdGEpIHsgbV9kYXRhYmFzZU1heFF1b3RhID0gcXVvdGE7IH0KKwogICAg
IHZvaWQgYWRkQ2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmKTsKICAgICB2b2lkIHJlbW92ZUNo
cm9tZUlucHV0RmllbGQoSlNWYWx1ZVJlZik7CiAgICAgdm9pZCBmb2N1c1dlYlZpZXcoSlNWYWx1
ZVJlZik7CkBAIC0zMjEsNiArMzI3LDkgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX3RpbWVvdXQ7
CiAKKyAgICBkb3VibGUgbV9kYXRhYmFzZURlZmF1bHRRdW90YTsKKyAgICBkb3VibGUgbV9kYXRh
YmFzZU1heFF1b3RhOworCiAgICAgYm9vbCBtX3VzZXJTdHlsZVNoZWV0RW5hYmxlZDsKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJldmlzaW9uIDE1ODM4NykKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAg
ICAgdm9pZCBzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAg
RE9NU3RyaW5nIHBhdGhUb0xvY2FsUmVzb3VyY2UoRE9NU3RyaW5nIHVybCk7CiAKKyAgICBhdHRy
aWJ1dGUgZG91YmxlIGRhdGFiYXNlRGVmYXVsdFF1b3RhOworICAgIGF0dHJpYnV0ZSBkb3VibGUg
ZGF0YWJhc2VNYXhRdW90YTsKKwogICAgIC8vIEFwcGxpY2F0aW9uIENhY2hlIEFQSQogICAgIHZv
aWQgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOwogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhp
bXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTg0
MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxMy0xMC0zMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUkVHUkVTU0lPTjogQ3Jhc2hlcyBpbiAtW1VJRGVsZWdhdGUgd2ViVmlldzpmcmFtZTpleGNl
ZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpkYXRhYmFzZTpdLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzgzLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgYW4gaW5hcHBy
b3ByaWF0ZSBhc3NlcnRpb24gaW4gRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYW5k
CisgICAgICAgIGFkZGVkIDIgYXR0cmlidXRlcyAoZGF0YWJhc2VEZWZhdWx0UXVvdGEgYW5kIGRh
dGFiYXNlTWF4UXVvdGEpIHRvIGFsbG93CisgICAgICAgIHRlc3RzIHRvIHNldCBhcHByb3ByaWF0
ZSBxdW90YSBzZXR0aW5ncyB0byBleGVyY2lzZSBxdW90YSBleHBhbnNpb24gdGVzdHMKKyAgICAg
ICAgd2hlbiBuZWVkZWQuCisgICAgICAgIAorICAgICAgICAqIHN0b3JhZ2Uvd2Vic3FsL29wZW4t
ZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWw6CisgICAgICAgIC0gU2V0IGRhdGFiYXNlRGVmYXVs
dFF1b3RhIGFuZCBkYXRhYmFzZU1heFF1b3RhIGFzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0LgorICAg
ICAgICAqIHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLmh0
bWw6CisgICAgICAgIC0gUmV2ZXJ0IHRoZSBjaGFuZ2UgZnJvbSByMTU3ODc0IHdoaWNoIGlzIG5v
IGxvbmdlciBuZWVkZWQgZm9yIHRoaXMgdGVzdC4KKwogMjAxMy0xMC0zMSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubmZAZ21haWwuY29tPgogCiAgICAgICAgIENvcnJlY3QgdGhlIGVsYXBzZWRUaW1l
IGNhbGN1bGF0aW9uIGluIFNWRyBhbmltYXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdl
L3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwJ
KHJldmlzaW9uIDE1ODM4NykKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0
YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw4IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICB0ZXN0UnVubmVyLmNsZWFyQWxsRGF0
YWJhc2VzKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZGF0YWJhc2VEZWZhdWx0UXVvdGEgPSA1ICog
MTAyNCAqIDEwMjQ7CisgICAgICAgIHRlc3RSdW5uZXIuZGF0YWJhc2VNYXhRdW90YSA9IDEwICog
MTAyNCAqIDEwMjQ7CiAgICAgfQogCiAgICAgdHJ5IHsKSW5kZXg6IExheW91dFRlc3RzL3N0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3Rh
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU4Mzg3KQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS93
ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwyICsxLDIgQEAKLVRoaXMgdGVzdHMgdGhhdCBjYWxsaW5nIG9wZW5EYXRhYmFzZSB3
aXRoIGEgc2l6ZSBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB0ZXN0IG1heCBxdW90YSBsaW1pdCBv
ZiAxME1CIGRvZXNuJ3QgYXNzZXJ0IG9uIGRlYnVnIGJ1aWxkcy4KK1RoaXMgdGVzdHMgdGhhdCBj
YWxsaW5nIG9wZW5EYXRhYmFzZSB3aXRoIGEgc2l6ZSBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB0
ZXN0IG1heCBxdW90YSBsaW1pdCBvZiA1TUIgZG9lc24ndCBhc3NlcnQgb24gZGVidWcgYnVpbGRz
LgogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1v
dmVyLXF1b3RhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwv
b3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLmh0bWwJKHJldmlzaW9uIDE1ODM4NykKKysrIExheW91
dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIH0KIAog
ICAgIHRyeSB7Ci0gICAgICAgIHZhciBkYiA9IG9wZW5EYXRhYmFzZSgnT3ZlclF1b3RhT3Blbics
ICcnLCAnVGVzdCBmb3IgYnVnIDM2NDczOiBtaXNzaW5nIGxvY2sgaW4gY2FsbCB0byBkb25lQ3Jl
YXRpbmdEYXRhYmFzZScsIDIwMDAwMDAwKTsKKyAgICAgICAgdmFyIGRiID0gb3BlbkRhdGFiYXNl
KCdPdmVyUXVvdGFPcGVuJywgJycsICdUZXN0IGZvciBidWcgMzY0NzM6IG1pc3NpbmcgbG9jayBp
biBjYWxsIHRvIGRvbmVDcmVhdGluZ0RhdGFiYXNlJywgMTAwMDAwMDApOwogICAgIH0gY2F0Y2gg
KGVycikgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJI
VE1MID0gJ1BBU1MnCiAgICAgfQpAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkg
ewogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08ZGl2PlRo
aXMgdGVzdHMgdGhhdCBjYWxsaW5nIG9wZW5EYXRhYmFzZSB3aXRoIGEgc2l6ZSBncmVhdGVyIG9y
IGVxdWFsIHRvIHRoZSB0ZXN0IG1heCBxdW90YSBsaW1pdCBvZiAxME1CCis8ZGl2PlRoaXMgdGVz
dHMgdGhhdCBjYWxsaW5nIG9wZW5EYXRhYmFzZSB3aXRoIGEgc2l6ZSBncmVhdGVyIG9yIGVxdWFs
IHRvIHRoZSB0ZXN0IG1heCBxdW90YSBsaW1pdCBvZiA1TUIKIGRvZXNuJ3QgYXNzZXJ0IG9uIGRl
YnVnIGJ1aWxkcy4KIDxkaXYgaWQ9InJlc3VsdCI+CiBGQUlMOiBXZSBzaG91bGRuJ3QgaGF2ZSBi
ZWVuIGFibGUgdG8gb3BlbiB0aGUgZGF0YWJhc2UuCg==
</data>
<flag name="commit-queue"
          id="238508"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215710</attachid>
            <date>2013-10-31 18:53:19 -0700</date>
            <delta_ts>2013-11-01 11:21:42 -0700</delta_ts>
            <desc>patch 2: fixed efl build breakage.</desc>
            <filename>bug-123383.patch</filename>
            <type>text/plain</type>
            <size>22491</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1ODQxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ5IEBACisyMDEzLTEwLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OOiBDcmFzaGVzIGluIC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmZyYW1l
OmV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFiYXNlOl0uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzODMuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBhbiBp
bmFwcHJvcHJpYXRlIGFzc2VydGlvbiBpbiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5t
bSBhbmQKKyAgICAgICAgYWRkZWQgMiBhdHRyaWJ1dGVzIChkYXRhYmFzZURlZmF1bHRRdW90YSBh
bmQgZGF0YWJhc2VNYXhRdW90YSkgdG8gYWxsb3cKKyAgICAgICAgdGVzdHMgdG8gc2V0IGFwcHJv
cHJpYXRlIHF1b3RhIHNldHRpbmdzIHRvIGV4ZXJjaXNlIHF1b3RhIGV4cGFuc2lvbiB0ZXN0cwor
ICAgICAgICB3aGVuIG5lZWRlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6CisgICAgICAgIChnZXRE
YXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrKToKKyAgICAgICAgKGdldERhdGFiYXNlTWF4UXVv
dGFDYWxsYmFjayk6CisgICAgICAgIChzZXREYXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrKToK
KyAgICAgICAgKHNldERhdGFiYXNlTWF4UXVvdGFDYWxsYmFjayk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpzdGF0aWNWYWx1ZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OmRhdGFiYXNlRGVmYXVsdFF1b3RhKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldERhdGFiYXNlRGVmYXVsdFF1b3RhKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmRhdGFiYXNlTWF4UXVvdGEpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VN
YXhRdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVy
VHJlZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpl
eGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZVZpZXcuY3BwOgorICAgICAgICAob25FeGNlZWRlZERhdGFiYXNlUXVvdGEpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtV
SURlbGVnYXRlIHdlYlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlP
cmlnaW46ZGF0YWJhc2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdh
dGUuY3BwOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRF
eGNlZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGF0YWJhc2VEZWZhdWx0UXVvdGEpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXREYXRhYmFzZURlZmF1bHRRdW90YSk6CisgICAg
ICAgIChXVFI6OlRlc3RSdW5uZXI6OmRhdGFiYXNlTWF4UXVvdGEpOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpzZXREYXRhYmFzZU1heFF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJW
aWV3V2l0aE9wdGlvbnMpOgorCiAyMDEzLTEwLTMxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgV0tSZW1vdGVPYmplY3QgY2xhc3MKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYg
KzExMCw4IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoY29uc3Qgc3RkOjpzdHJpbmcKICAgICAs
IG1fYXJlTGVnYWN5V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzSWdub3JlZChmYWxz
ZSkKICAgICAsIG1fY3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9yKGZhbHNlKSAKICAgICAsIG1faGFz
UGVuZGluZ1dlYk5vdGlmaWNhdGlvbkNsaWNrKGZhbHNlKQorICAgICwgbV9kYXRhYmFzZURlZmF1
bHRRdW90YSgtMSkKKyAgICAsIG1fZGF0YWJhc2VNYXhRdW90YSgtMSkKICAgICAsIG1fdGVzdFBh
dGhPclVSTCh0ZXN0UGF0aE9yVVJMKQogICAgICwgbV9leHBlY3RlZFBpeGVsSGFzaChleHBlY3Rl
ZFBpeGVsSGFzaCkKICAgICAsIG1fdGl0bGVUZXh0RGlyZWN0aW9uKCJsdHIiKQpAQCAtMTgzOSw2
ICsxODQxLDE4IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjaygKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGNvbnRyb2xsZXItPmdsb2JhbEZs
YWcoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldERhdGFiYXNlRGVmYXVsdFF1b3RhQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIFRlc3RS
dW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4
dCwgY29udHJvbGxlci0+ZGF0YWJhc2VEZWZhdWx0UXVvdGEoKSk7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlUmVmIGdldERhdGFiYXNlTWF4UXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBjb250cm9sbGVyLT5kYXRhYmFzZU1heFF1
b3RhKCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRXZWJIaXN0b3J5SXRlbUNvdW50Q2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIFRlc3RS
dW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTE4NzksNiArMTg5MywyMiBAQCBzdGF0aWMgYm9vbCBz
ZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyBib29sIHNldERhdGFiYXNlRGVmYXVsdFF1b3RhQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIFRlc3RSdW5uZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREYXRhYmFzZURlZmF1bHRRdW90YShK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCgh
KmV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHNldERhdGFi
YXNlTWF4UXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRp
Y19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAg
IGNvbnRyb2xsZXItPnNldERhdGFiYXNlTWF4UXVvdGEoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IHZhbHVlLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworICAgIHJldHVy
biB0cnVlOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBpZ25vcmVMZWdhY3lXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMjA1MCw2ICsyMDgwLDggQEAg
SlNTdGF0aWNWYWx1ZSogVGVzdFJ1bm5lcjo6c3RhdGljVmFsdWVzKAogI2VuZGlmCiAgICAgICAg
IHsgInNlY3VyZUV2ZW50SW5wdXRJc0VuYWJsZWQiLCBnZXRTZWN1cmVFdmVudElucHV0SXNFbmFi
bGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidGl0bGVUZXh0RGlyZWN0aW9uIiwg
Z2V0VGl0bGVUZXh0RGlyZWN0aW9uQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiZGF0
YWJhc2VEZWZhdWx0UXVvdGEiLCBnZXREYXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrLCBzZXRE
YXRhYmFzZURlZmF1bHRRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwK
KyAgICAgICAgeyAiZGF0YWJhc2VNYXhRdW90YSIsIGdldERhdGFiYXNlTWF4UXVvdGFDYWxsYmFj
aywgc2V0RGF0YWJhc2VNYXhRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUg
fSwKICAgICAgICAgeyAwLCAwLCAwLCAwIH0KICAgICB9OwogICAgIHJldHVybiBzdGF0aWNWYWx1
ZXM7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAxNTgzODcpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Nyw2ICsyNzcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZ2xvYmFsRmxhZygpIGNvbnN0IHsgcmV0
dXJuIG1fZ2xvYmFsRmxhZzsgfQogICAgIHZvaWQgc2V0R2xvYmFsRmxhZyhib29sIGdsb2JhbEZs
YWcpIHsgbV9nbG9iYWxGbGFnID0gZ2xvYmFsRmxhZzsgfQogICAgIAorICAgIGRvdWJsZSBkYXRh
YmFzZURlZmF1bHRRdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEZWZhdWx0UXVvdGE7
IH0KKyAgICB2b2lkIHNldERhdGFiYXNlRGVmYXVsdFF1b3RhKGRvdWJsZSBxdW90YSkgeyBtX2Rh
dGFiYXNlRGVmYXVsdFF1b3RhID0gcXVvdGE7IH0KKworICAgIGRvdWJsZSBkYXRhYmFzZU1heFF1
b3RhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZU1heFF1b3RhOyB9CisgICAgdm9pZCBzZXRE
YXRhYmFzZU1heFF1b3RhKGRvdWJsZSBxdW90YSkgeyBtX2RhdGFiYXNlTWF4UXVvdGEgPSBxdW90
YTsgfQorCiAgICAgYm9vbCBkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkgY29uc3QgeyByZXR1
cm4gbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOyB9CiAgICAgdm9pZCBzZXREZWZlck1haW5S
ZXNvdXJjZURhdGFMb2FkKGJvb2wgZmxhZykgeyBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQg
PSBmbGFnOyB9CiAKQEAgLTQxMSw2ICs0MTcsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jdXN0
b21GdWxsU2NyZWVuQmVoYXZpb3I7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdXZWJOb3RpZmljYXRp
b25DbGljazsKIAorICAgIGRvdWJsZSBtX2RhdGFiYXNlRGVmYXVsdFF1b3RhOworICAgIGRvdWJs
ZSBtX2RhdGFiYXNlTWF4UXVvdGE7CisKICAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9u
VXNlcm5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKICAg
ICBzdGQ6OnN0cmluZyBtX3Rlc3RQYXRoT3JVUkw7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9ibGFja2JlcnJ5L0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMTU4Mzg3
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9EdW1wUmVuZGVyVHJlZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4NSwxMiArNzg1LDE5IEBAIHZvaWQgRHVtcFJlbmRlclRyZWU6
OmV4Y2VlZGVkRGF0YWJhc2VRdW8KIAogICAgIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlciYgbWFu
YWdlciA9IFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpOyAKICAgICBXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IGRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKG5hbWUs
IG9yaWdpbik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVv
dGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRl
ZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBkb3VibGUgdGVzdERlZmF1bHRRdW90
YSA9IGdUZXN0UnVubmVyLT5kYXRhYmFzZURlZmF1bHRRdW90YSgpOworICAgIGlmICh0ZXN0RGVm
YXVsdFF1b3RhID49IDApCisgICAgICAgIGRlZmF1bHRRdW90YSA9IHRlc3REZWZhdWx0UXVvdGE7
CisKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBkZWZhdWx0UXVvdGE7Ci0gICAg
aWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkU2l6ZSAmJiBleHBlY3RlZFNpemUgPD0gbWF4UXVv
dGEpIHsKLSAgICAgICAgbmV3UXVvdGEgPSBleHBlY3RlZFNpemU7Ci0gICAgICAgIHByaW50Zigi
VUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4i
LCBuZXdRdW90YSk7CisKKyAgICBkb3VibGUgbWF4UXVvdGEgPSBnVGVzdFJ1bm5lci0+ZGF0YWJh
c2VNYXhRdW90YSgpOworICAgIGlmIChtYXhRdW90YSA+PSAwKSB7CisgICAgICAgIGlmIChkZWZh
dWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhwZWN0ZWRTaXplIDw9IG1heFF1b3RhKSB7Cisg
ICAgICAgICAgICBuZXdRdW90YSA9IGV4cGVjdGVkU2l6ZTsKKyAgICAgICAgICAgIHByaW50Zigi
VUkgREVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAlbGx1XG4i
LCBuZXdRdW90YSk7CisgICAgICAgIH0KICAgICB9CiAgICAgbWFuYWdlci5zZXRRdW90YShvcmln
aW4sIG5ld1F1b3RhKTsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9E
dW1wUmVuZGVyVHJlZVZpZXcuY3BwCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0
LDEzICsxMzQsMjEgQEAgc3RhdGljIHVpbnQ2NF90IG9uRXhjZWVkZWREYXRhYmFzZVF1b3RhKAog
ICAgICAgICAgICAgZGF0YWJhc2VOYW1lKTsKICAgICBld2tfc2VjdXJpdHlfb3JpZ2luX2ZyZWUo
b3JpZ2luKTsKIAotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBkZWZhdWx0UXVvdGEgPSA1ICog
MTAyNCAqIDEwMjQ7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1heFF1b3RhID0gMTAgKiAx
MDI0ICogMTAyNDsKLSAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRTaXplICYmIGV4cGVj
dGVkU2l6ZSA8PSBtYXhRdW90YSkgewotICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFC
QVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gJSIgUFJJdTY0ICJcbiIsIGV4cGVjdGVk
U2l6ZSk7Ci0gICAgICAgIHJldHVybiBleHBlY3RlZFNpemU7CisgICAgdWludDY0X3QgZGVmYXVs
dFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGRvdWJsZSB0ZXN0RGVmYXVsdFF1b3RhID0g
Z1Rlc3RSdW5uZXItPmRhdGFiYXNlRGVmYXVsdFF1b3RhKCk7CisgICAgaWYgKHRlc3REZWZhdWx0
UXVvdGEgPj0gMCkKKyAgICAgICAgZGVmYXVsdFF1b3RhID0gdGVzdERlZmF1bHRRdW90YTsKKwor
ICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gZGVmYXVsdFF1b3RhOworCisgICAgZG91YmxlIG1heFF1
b3RhID0gZ1Rlc3RSdW5uZXItPmRhdGFiYXNlTWF4UXVvdGEoKTsKKyAgICBpZiAobWF4UXVvdGEg
Pj0gMCkgeworICAgICAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRTaXplICYmIGV4cGVj
dGVkU2l6ZSA8PSBtYXhRdW90YSkgeworICAgICAgICAgICAgbmV3UXVvdGEgPSBleHBlY3RlZFNp
emU7CisgICAgICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBp
bmNyZWFzZWQgcXVvdGEgdG8gJSIgUFJJdTY0ICJcbiIsIGV4cGVjdGVkU2l6ZSk7CisgICAgICAg
IH0KICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRRdW90YTsKKyAgICByZXR1cm4gbmV3UXVvdGE7
CiB9CiAKIHN0YXRpYyBpbnQ2NF90IG9uRXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlUXVvdGEoRXdr
X1ZpZXdfU21hcnRfRGF0YSosIEV3a19TZWN1cml0eV9PcmlnaW4gKm9yaWdpbiwgaW50NjRfdCBk
ZWZhdWx0T3JpZ2luUXVvdGEsIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCkKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc1
LDE0ICsxNzUsMjAgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGZyYW1lOgog
ICAgIH0KIAogICAgIE5TRGljdGlvbmFyeSAqZGF0YWJhc2VEZXRhaWxzID0gW1tXZWJEYXRhYmFz
ZU1hbmFnZXIgc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyXSBkZXRhaWxzRm9yRGF0YWJhc2U6ZGF0
YWJhc2VJZGVudGlmaWVyIHdpdGhPcmlnaW46b3JpZ2luXTsKLSAgICBBU1NFUlQoZGF0YWJhc2VE
ZXRhaWxzKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRTaXplID0gW1tkYXRhYmFz
ZURldGFpbHMgb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRXhwZWN0ZWRTaXplS2V5XSB1bnNpZ25l
ZExvbmdMb25nVmFsdWVdOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVm
YXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
b25nIGxvbmcgbWF4UXVvdGEgPSAxMCAqIDEwMjQgKiAxMDI0OworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CisgICAgZG91YmxlIHRlc3REZWZh
dWx0UXVvdGEgPSBnVGVzdFJ1bm5lci0+ZGF0YWJhc2VEZWZhdWx0UXVvdGEoKTsKKyAgICBpZiAo
dGVzdERlZmF1bHRRdW90YSA+PSAwKQorICAgICAgICBkZWZhdWx0UXVvdGEgPSB0ZXN0RGVmYXVs
dFF1b3RhOworCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gZGVmYXVsdFF1b3Rh
OwotICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3RlZFNpemUgJiYgZXhwZWN0ZWRTaXplIDw9
IG1heFF1b3RhKSB7Ci0gICAgICAgIG5ld1F1b3RhID0gZXhwZWN0ZWRTaXplOwotICAgICAgICBw
cmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8g
JWxsdVxuIiwgbmV3UXVvdGEpOworCisgICAgZG91YmxlIG1heFF1b3RhID0gZ1Rlc3RSdW5uZXIt
PmRhdGFiYXNlTWF4UXVvdGEoKTsKKyAgICBpZiAobWF4UXVvdGEgPj0gMCkgeworICAgICAgICBp
ZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRTaXplICYmIGV4cGVjdGVkU2l6ZSA8PSBtYXhRdW90
YSkgeworICAgICAgICAgICAgbmV3UXVvdGEgPSBleHBlY3RlZFNpemU7CisgICAgICAgICAgICBw
cmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8g
JWxsdVxuIiwgbmV3UXVvdGEpOworICAgICAgICB9CiAgICAgfQogICAgIFtbb3JpZ2luIGRhdGFi
YXNlUXVvdGFNYW5hZ2VyXSBzZXRRdW90YTpuZXdRdW90YV07CiB9CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw4
ICs1OTUsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBVSURlbGVnYXRlOjpleAogICAg
IFN5c0ZyZWVTdHJpbmcocHJvdG9jb2wpOwogICAgIFN5c0ZyZWVTdHJpbmcoaG9zdCk7CiAKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0
ICogMTAyNDsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIG1heFF1b3RhID0g
MTAgKiAxMDI0ICogMTAyNDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFF1b3RhID0g
NSAqIDEwMjQgKiAxMDI0OworICAgIGRvdWJsZSB0ZXN0RGVmYXVsdFF1b3RhID0gZ1Rlc3RSdW5u
ZXItPmRhdGFiYXNlRGVmYXVsdFF1b3RhKCk7CisgICAgaWYgKHRlc3REZWZhdWx0UXVvdGEgPj0g
MCkKKyAgICAgICAgZGVmYXVsdFF1b3RhID0gdGVzdERlZmF1bHRRdW90YTsKIAogICAgIENPTVB0
cjxJV2ViRGF0YWJhc2VNYW5hZ2VyPiBkYXRhYmFzZU1hbmFnZXI7CiAgICAgQ09NUHRyPElXZWJE
YXRhYmFzZU1hbmFnZXI+IHRtcERhdGFiYXNlTWFuYWdlcjsKQEAgLTYxOCw5ICs2MjAsMTMgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBVSURlbGVnYXRlOjpleAogICAgIGRldGFpbHNCYWct
PlJlYWQoV2ViRGF0YWJhc2VVc2FnZUtleSwgJnZhciwgMCk7CiAgICAgdW5zaWduZWQgbG9uZyBs
b25nIGV4cGVjdGVkU2l6ZSA9IFZfVUk4KCZ2YXIpOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdRdW90YSA9IGRlZmF1bHRRdW90YTsKLSAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRT
aXplICYmIGV4cGVjdGVkU2l6ZSA8PSBtYXhRdW90YSkgewotICAgICAgICBuZXdRdW90YSA9IGV4
cGVjdGVkU2l6ZTsKLSAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFD
SzogaW5jcmVhc2VkIHF1b3RhIHRvICVsbHVcbiIsIG5ld1F1b3RhKTsKKworICAgIGRvdWJsZSBt
YXhRdW90YSA9IGdUZXN0UnVubmVyLT5kYXRhYmFzZU1heFF1b3RhKCk7CisgICAgaWYgKG1heFF1
b3RhID49IDApIHsKKyAgICAgICAgaWYgKGRlZmF1bHRRdW90YSA8IGV4cGVjdGVkU2l6ZSAmJiBl
eHBlY3RlZFNpemUgPD0gbWF4UXVvdGEpIHsKKyAgICAgICAgICAgIG5ld1F1b3RhID0gZXhwZWN0
ZWRTaXplOworICAgICAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBEQVRBQkFTRSBDQUxMQkFD
SzogaW5jcmVhc2VkIHF1b3RhIHRvICVsbHVcbiIsIG5ld1F1b3RhKTsKKyAgICAgICAgfQogICAg
IH0KICAgICBvcmlnaW4tPnNldFF1b3RhKG5ld1F1b3RhKTsKIApJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE1ODM4NykKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDMsMTkgKzE0Myw2IEBAIHN0YXRpYyBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgK
ICAgICByZXR1cm4gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLmJlZm9yZVVubG9hZFJldHVyblZh
bHVlKCk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZXhjZWVkZWREYXRhYmFzZVF1
b3RhKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tTdHJpbmdS
ZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgY29u
c3Qgdm9pZCopCi17Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0
UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcg
bG9uZyBtYXhRdW90YSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25n
IG5ld1F1b3RhID0gZGVmYXVsdFF1b3RhOwotICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3Rl
ZFVzYWdlICYmIGV4cGVjdGVkVXNhZ2UgPD0gbWF4UXVvdGEpIHsKLSAgICAgICAgbmV3UXVvdGEg
PSBleHBlY3RlZFVzYWdlOwotICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENB
TExCQUNLOiBpbmNyZWFzZWQgcXVvdGEgdG8gJWxsdVxuIiwgbmV3UXVvdGEpOwotICAgIH0KLSAg
ICByZXR1cm4gbmV3UXVvdGE7Ci19Ci0KLQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwo
V0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgUGxhdGZvcm1X
ZWJWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XZWJWaWV3Kj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwpAQCAtMjMzLDcgKzIyMCw3IEBAIFdLUGFnZVJlZiBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWcKICAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsLAogICAgICAgICAwLCAvLyBkaWREcmF3CiAgICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwK
LSAgICAgICAgZXhjZWVkZWREYXRhYmFzZVF1b3RhLAorICAgICAgICAwLCAvLyBleGNlZWRlZERh
dGFiYXNlUXVvdGEKICAgICAgICAgMCwgLy8gcnVuT3BlblBhbmVsCiAgICAgICAgIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIDAsIC8vIGhlYWRl
ckhlaWdodApAQCAtNDM0LDcgKzQyMSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdl
YlZpZXdXaXRoT3AKICAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLAogICAgICAg
ICAwLCAvLyBkaWREcmF3CiAgICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwKLSAgICAgICAgZXhj
ZWVkZWREYXRhYmFzZVF1b3RhLAorICAgICAgICAwLCAvLyBleGNlZWRlZERhdGFiYXNlUXVvdGEs
CiAgICAgICAgIDAsIC8vIHJ1bk9wZW5QYW5lbAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LAogICAgICAgICAwLCAvLyBoZWFkZXJIZWlnaHQKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDE1ODM4NykKKysrIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ0OCwxNyArMTQ0OCwyNCBAQCB1aW50NjRfdCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmRpZEV4Y2VlZERhCiAgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vdXRw
dXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNv
bnN0IHVpbnQ2NF90IGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKLSAgICBzdGF0aWMg
Y29uc3QgdWludDY0X3QgbWF4UXVvdGEgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgIHVpbnQ2NF90
IG5ld1F1b3RhID0gZGVmYXVsdFF1b3RhOwotICAgIGlmIChkZWZhdWx0UXVvdGEgPCBleHBlY3Rl
ZFVzYWdlQnl0ZXMgJiYgZXhwZWN0ZWRVc2FnZUJ5dGVzIDw9IG1heFF1b3RhKSB7Ci0gICAgICAg
IG5ld1F1b3RhID0gZXhwZWN0ZWRVc2FnZUJ5dGVzOwotCi0gICAgICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJVSSBE
RUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogaW5jcmVhc2VkIHF1b3RhIHRvICIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihuZXdRdW90YSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCdcbicpOwotICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0
cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHVpbnQ2NF90IGRlZmF1bHRR
dW90YSA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBkb3VibGUgdGVzdERlZmF1bHRRdW90YSA9IElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS50ZXN0UnVubmVyKCktPmRhdGFiYXNlRGVmYXVsdFF1b3Rh
KCk7CisgICAgaWYgKHRlc3REZWZhdWx0UXVvdGEgPj0gMCkKKyAgICAgICAgZGVmYXVsdFF1b3Rh
ID0gdGVzdERlZmF1bHRRdW90YTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9
IGRlZmF1bHRRdW90YTsKKworICAgIGRvdWJsZSBtYXhRdW90YSA9IEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS50ZXN0UnVubmVyKCktPmRhdGFiYXNlTWF4UXVvdGEoKTsKKyAgICBpZiAobWF4UXVv
dGEgPj0gMCkgeworICAgICAgICBpZiAoZGVmYXVsdFF1b3RhIDwgZXhwZWN0ZWRVc2FnZUJ5dGVz
ICYmIGV4cGVjdGVkVXNhZ2VCeXRlcyA8PSBtYXhRdW90YSkgeworICAgICAgICAgICAgbmV3UXVv
dGEgPSBleHBlY3RlZFVzYWdlQnl0ZXM7CisKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVUkg
REVMRUdBVEUgREFUQUJBU0UgQ0FMTEJBQ0s6IGluY3JlYXNlZCBxdW90YSB0byAiKTsKKyAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKG5ld1F1b3RhKTsKKyAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gbmV3UXVvdGE7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9u
IDE1ODM4NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgVGVzdFJ1bm5lcjo6VGVz
dFJ1bm5lcigpCiAgICAgLCBtX3BvbGljeURlbGVnYXRlUGVybWlzc2l2ZShmYWxzZSkKICAgICAs
IG1fZ2xvYmFsRmxhZyhmYWxzZSkKICAgICAsIG1fY3VzdG9tRnVsbFNjcmVlbkJlaGF2aW9yKGZh
bHNlKQorICAgICwgbV9kYXRhYmFzZURlZmF1bHRRdW90YSgtMSkKKyAgICAsIG1fZGF0YWJhc2VN
YXhRdW90YSgtMSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRFbmFibGVkKGZhbHNlKQogICAgICwg
bV91c2VyU3R5bGVTaGVldExvY2F0aW9uKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIiIpKSkKIHsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAxNTgzODcpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjIwLDYgKzIyMCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBnbG9iYWxGbGFnKCkgY29uc3Qg
eyByZXR1cm4gbV9nbG9iYWxGbGFnOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxGbGFnKGJvb2wgdmFs
dWUpIHsgbV9nbG9iYWxGbGFnID0gdmFsdWU7IH0KIAorICAgIGRvdWJsZSBkYXRhYmFzZURlZmF1
bHRRdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEZWZhdWx0UXVvdGE7IH0KKyAgICB2
b2lkIHNldERhdGFiYXNlRGVmYXVsdFF1b3RhKGRvdWJsZSBxdW90YSkgeyBtX2RhdGFiYXNlRGVm
YXVsdFF1b3RhID0gcXVvdGE7IH0KKworICAgIGRvdWJsZSBkYXRhYmFzZU1heFF1b3RhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhYmFzZU1heFF1b3RhOyB9CisgICAgdm9pZCBzZXREYXRhYmFzZU1h
eFF1b3RhKGRvdWJsZSBxdW90YSkgeyBtX2RhdGFiYXNlTWF4UXVvdGEgPSBxdW90YTsgfQorCiAg
ICAgdm9pZCBhZGRDaHJvbWVJbnB1dEZpZWxkKEpTVmFsdWVSZWYpOwogICAgIHZvaWQgcmVtb3Zl
Q2hyb21lSW5wdXRGaWVsZChKU1ZhbHVlUmVmKTsKICAgICB2b2lkIGZvY3VzV2ViVmlldyhKU1Zh
bHVlUmVmKTsKQEAgLTMyMSw2ICszMjcsOSBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fdGltZW91
dDsKIAorICAgIGRvdWJsZSBtX2RhdGFiYXNlRGVmYXVsdFF1b3RhOworICAgIGRvdWJsZSBtX2Rh
dGFiYXNlTWF4UXVvdGE7CisKICAgICBib29sIG1fdXNlclN0eWxlU2hlZXRFbmFibGVkOwogICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247CiAKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAkocmV2aXNpb24gMTU4Mzg3KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw5IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICB2b2lkIHNldERhdGFiYXNlUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAg
ICBET01TdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShET01TdHJpbmcgdXJsKTsKIAorICAgIGF0
dHJpYnV0ZSBkb3VibGUgZGF0YWJhc2VEZWZhdWx0UXVvdGE7CisgICAgYXR0cmlidXRlIGRvdWJs
ZSBkYXRhYmFzZU1heFF1b3RhOworCiAgICAgLy8gQXBwbGljYXRpb24gQ2FjaGUgQVBJCiAgICAg
dm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1h
eGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1
ODQxOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIxIEBACisyMDEzLTEwLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OOiBDcmFzaGVzIGluIC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmZyYW1lOmV4
Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFiYXNlOl0uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMzODMuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBhbiBpbmFw
cHJvcHJpYXRlIGFzc2VydGlvbiBpbiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBh
bmQKKyAgICAgICAgYWRkZWQgMiBhdHRyaWJ1dGVzIChkYXRhYmFzZURlZmF1bHRRdW90YSBhbmQg
ZGF0YWJhc2VNYXhRdW90YSkgdG8gYWxsb3cKKyAgICAgICAgdGVzdHMgdG8gc2V0IGFwcHJvcHJp
YXRlIHF1b3RhIHNldHRpbmdzIHRvIGV4ZXJjaXNlIHF1b3RhIGV4cGFuc2lvbiB0ZXN0cworICAg
ICAgICB3aGVuIG5lZWRlZC4KKyAgICAgICAgCisgICAgICAgICogc3RvcmFnZS93ZWJzcWwvb3Bl
bi1kYXRhYmFzZS1leHBhbmQtcXVvdGEuaHRtbDoKKyAgICAgICAgLSBTZXQgZGF0YWJhc2VEZWZh
dWx0UXVvdGEgYW5kIGRhdGFiYXNlTWF4UXVvdGEgYXMgbmVlZGVkIGZvciB0aGlzIHRlc3QuCisg
ICAgICAgICogc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEu
aHRtbDoKKyAgICAgICAgLSBSZXZlcnQgdGhlIGNoYW5nZSBmcm9tIHIxNTc4NzQgd2hpY2ggaXMg
bm8gbG9uZ2VyIG5lZWRlZCBmb3IgdGhpcyB0ZXN0LgorCiAyMDEzLTEwLTMxICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CiAKICAgICAgICAgQ29ycmVjdCB0aGUgZWxhcHNlZFRp
bWUgY2FsY3VsYXRpb24gaW4gU1ZHIGFuaW1hdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL3N0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtZXhwYW5kLXF1b3RhLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEuaHRt
bAkocmV2aXNpb24gMTU4Mzg3KQorKysgTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1k
YXRhYmFzZS1leHBhbmQtcXVvdGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDggQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIHRlc3RSdW5uZXIuY2xlYXJBbGxE
YXRhYmFzZXMoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kYXRhYmFzZURlZmF1bHRRdW90YSA9IDUg
KiAxMDI0ICogMTAyNDsKKyAgICAgICAgdGVzdFJ1bm5lci5kYXRhYmFzZU1heFF1b3RhID0gMTAg
KiAxMDI0ICogMTAyNDsKICAgICB9CiAKICAgICB0cnkgewpJbmRleDogTGF5b3V0VGVzdHMvc3Rv
cmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92ZXItcXVv
dGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTgzODcpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdl
L3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDIgKzEsMiBAQAotVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNl
IHdpdGggYSBzaXplIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIHRlc3QgbWF4IHF1b3RhIGxpbWl0
IG9mIDEwTUIgZG9lc24ndCBhc3NlcnQgb24gZGVidWcgYnVpbGRzLgorVGhpcyB0ZXN0cyB0aGF0
IGNhbGxpbmcgb3BlbkRhdGFiYXNlIHdpdGggYSBzaXplIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhl
IHRlc3QgbWF4IHF1b3RhIGxpbWl0IG9mIDVNQiBkb2Vzbid0IGFzc2VydCBvbiBkZWJ1ZyBidWls
ZHMuCiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNl
LW92ZXItcXVvdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL3dlYnNx
bC9vcGVuLWRhdGFiYXNlLW92ZXItcXVvdGEuaHRtbAkocmV2aXNpb24gMTU4Mzg3KQorKysgTGF5
b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1vdmVyLXF1b3RhLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgfQog
CiAgICAgdHJ5IHsKLSAgICAgICAgdmFyIGRiID0gb3BlbkRhdGFiYXNlKCdPdmVyUXVvdGFPcGVu
JywgJycsICdUZXN0IGZvciBidWcgMzY0NzM6IG1pc3NpbmcgbG9jayBpbiBjYWxsIHRvIGRvbmVD
cmVhdGluZ0RhdGFiYXNlJywgMjAwMDAwMDApOworICAgICAgICB2YXIgZGIgPSBvcGVuRGF0YWJh
c2UoJ092ZXJRdW90YU9wZW4nLCAnJywgJ1Rlc3QgZm9yIGJ1ZyAzNjQ3MzogbWlzc2luZyBsb2Nr
IGluIGNhbGwgdG8gZG9uZUNyZWF0aW5nRGF0YWJhc2UnLCAxMDAwMDAwMCk7CiAgICAgfSBjYXRj
aCAoZXJyKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSAnUEFTUycKICAgICB9CkBAIC0xNiw3ICsxNiw3IEBAIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxkaXY+
VGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNlIHdpdGggYSBzaXplIGdyZWF0ZXIg
b3IgZXF1YWwgdG8gdGhlIHRlc3QgbWF4IHF1b3RhIGxpbWl0IG9mIDEwTUIKKzxkaXY+VGhpcyB0
ZXN0cyB0aGF0IGNhbGxpbmcgb3BlbkRhdGFiYXNlIHdpdGggYSBzaXplIGdyZWF0ZXIgb3IgZXF1
YWwgdG8gdGhlIHRlc3QgbWF4IHF1b3RhIGxpbWl0IG9mIDVNQgogZG9lc24ndCBhc3NlcnQgb24g
ZGVidWcgYnVpbGRzLgogPGRpdiBpZD0icmVzdWx0Ij4KIEZBSUw6IFdlIHNob3VsZG4ndCBoYXZl
IGJlZW4gYWJsZSB0byBvcGVuIHRoZSBkYXRhYmFzZS4K
</data>
<flag name="review"
          id="238509"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>