<?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>158160</bug_id>
          
          <creation_ts>2016-05-27 12:00:18 -0700</creation_ts>
          <short_desc>Modern IDB: After closing a Netflix video, trying to watch it again fails</short_desc>
          <delta_ts>2016-05-27 16:06:16 -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>WebKit 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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197140</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-27 12:00:18 -0700</bug_when>
    <thetext>Modern IDB: After closing a Netflix video, trying to watch it again fails

1 - Save off the exact URL for a specific Netflix video as a bookmark.
2 - Be watching that video.
3 - Close that Safari window, but do *not* quit Safari. This kills the WebProcess that was playing the video
4 - In a different window, open that bookmark to try to resume watching the video

In normal cases, the IDB client side cleans up all transactions/requests/etc when the window closes or page navigates.
But if the WebProcess is killed, then that client side cleanup doesn&apos;t happen.

Instead, we need to rely on server-side cleanup in response to the connection closing.

And the server doesn&apos;t abort in-progress transactions.

So when you visit a new netflix page, there&apos;s an in-progress transaction, so the new connection&apos;s transaction can never start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197141</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-27 12:00:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/25092473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197142</commentid>
    <comment_count>2</comment_count>
      <attachid>279978</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-27 12:05:10 -0700</bug_when>
    <thetext>Created attachment 279978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197146</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-27 12:07:50 -0700</bug_when>
    <thetext>Attachment 279978 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup.mm:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197176</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-27 12:44:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201461</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197262</commentid>
    <comment_count>5</comment_count>
      <attachid>279978</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-27 16:06:16 -0700</bug_when>
    <thetext>Comment on attachment 279978
Patch

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

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1244
&gt; +    Deque&lt;RefPtr&lt;UniqueIDBDatabaseTransaction&gt;&gt; transactionsToAbort;

I think there is a chance this can use Ref instead of RefPtr.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:3
&gt; +var request = window.indexedDB.deleteDatabase(&quot;WebProcessKillIDBCleanup&quot;);

No need for &quot;window.&quot; here.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:18
&gt; +    var request = window.indexedDB.open(&quot;WebProcessKillIDBCleanup&quot;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:22
&gt; +        window.webkit.messageHandlers.testHandler.postMessage(&apos;Open success&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:29
&gt; +        window.webkit.messageHandlers.testHandler.postMessage(&apos;Unexpected error opening database&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:34
&gt; +        window.webkit.messageHandlers.testHandler.postMessage(&apos;UpgradeNeeded&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:40
&gt; +            window.webkit.messageHandlers.testHandler.postMessage(&apos;Transaction complete&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:44
&gt; +            window.webkit.messageHandlers.testHandler.postMessage(&apos;Transaction errored!&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-1.html:60
&gt; +            window.webkit.messageHandlers.testHandler.postMessage(&apos;Infinite Transaction Started&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-2.html:7
&gt; +    window.webkit.messageHandlers.testHandler.postMessage(&apos;Second open success&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-2.html:17
&gt; +    window.webkit.messageHandlers.testHandler.postMessage(&apos;Unexpected error opening database&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup-2.html:23
&gt; +    window.webkit.messageHandlers.testHandler.postMessage(&apos;Unexpected UpgradeNeeded opening database&apos;);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup.mm:60
&gt; +    RetainPtr&lt;IndexedDBWebProcessKillMessageHandler&gt; handler = adoptNS([[IndexedDBWebProcessKillMessageHandler alloc] init]);
&gt; +    RetainPtr&lt;WKWebViewConfiguration&gt; configuration = adoptNS([[WKWebViewConfiguration alloc] init]);

Better to use auto.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebProcessKillIDBCleanup.mm:93
&gt; +    RetainPtr&lt;WKWebView&gt; webView2 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);

auto</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279978</attachid>
            <date>2016-05-27 12:05:10 -0700</date>
            <delta_ts>2016-05-27 12:10:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158160-20160527120621.patch</filename>
            <type>text/plain</type>
            <size>20994</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI4MTFmMWRjMDU4MjZk
ZTFjNzNmMDE3OGI1NDRlMzZiM2Y3MzA2Mi4uNjc1Yjg0MzQ3YjgwMGUzYmI2MjZmMDRlMzcwZjgz
ZDE5NzIxNDlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTA1LTI3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBBZnRl
ciBjbG9zaW5nIGEgTmV0ZmxpeCB2aWRlbywgdHJ5aW5nIHRvIHdhdGNoIGl0IGFnYWluIGZhaWxz
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjUwOTI0NzM+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSVRlc3Q6IEluZGV4ZWREQi5XZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpzdG9wKToKKyAgICAg
ICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNv
bm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KTogQWxsIGFjdGl2ZSB0cmFuc2FjdGlvbnMgbmVlZCB0
byBiZSBhYm9ydGVkCisgICAgICAgICAgKHdpdGhvdXQgY2FsbGJhY2ssIHNpbmNlIHRoZXJlJ3Mg
bm8gY29ubmVjdGlvbiB0byBjYWxsYmFjayB0bykuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5hYmxlVHJhbnNhY3Rpb24pOgorCiAy
MDE2LTA1LTI2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CiAK
ICAgICAgICAgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpIGNsZWFudXAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApp
bmRleCBkOGM1ZDM1OGU2OWFlZjQ3MGIyMDk5MmJkN2VmNTc2Yjc5NjBmYTRlLi40ODUyN2I5Yjhl
NTc3NmU3MTdlYzQ4YzEyY2U1OGMxM2ZhM2I4NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zMjgsNyArMzI4LDcg
QEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6c3RvcCgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpzdG9wIik7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpzdG9w
IC0gJXMiLCBtX2luZm8ubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKICAg
ICAvLyBJREJEYXRhYmFzZTo6c3RvcCgpIGNhbGxzIElEQlRyYW5zYWN0aW9uOjpzdG9wKCkgZm9y
IGVhY2ggb2YgaXRzIGFjdGl2ZSB0cmFuc2FjdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cAppbmRleCBiZGMzZTIyM2ZlZDFiODFmYTQ1ZjU4ZTYwN2RiMzZjNzc5MGExYjExLi5mMGQ0NzI3
Nzg0NjRhZDkzM2U4ZTZlMTFhMzdjZDNiOTFkNzE1MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKQEAgLTEyNDEsNiArMTI0MSwxNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb25u
ZWN0aW9uQ2xvc2VkRnJvbUNsaWVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mCiAgICAg
aWYgKCFwZW5kaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgbV9wZW5kaW5nVHJh
bnNhY3Rpb25zLnN3YXAocGVuZGluZ1RyYW5zYWN0aW9ucyk7CiAKKyAgICBEZXF1ZTxSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4+IHRyYW5zYWN0aW9uc1RvQWJvcnQ7CisgICAg
Zm9yIChhdXRvJiB0cmFuc2FjdGlvbiA6IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy52YWx1ZXMo
KSkgeworICAgICAgICBpZiAoJnRyYW5zYWN0aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSA9PSAm
Y29ubmVjdGlvbikKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uc1RvQWJvcnQuYXBwZW5kKHRyYW5z
YWN0aW9uKTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHRyYW5zYWN0aW9uIDogdHJhbnNhY3Rp
b25zVG9BYm9ydCkKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0V2l0aG91dENhbGxiYWNrKCk7
CisKICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdCkKICAgICAgICAgbm90aWZ5Q3VycmVu
dFJlcXVlc3RDb25uZWN0aW9uQ2xvc2VkT3JGaXJlZFZlcnNpb25DaGFuZ2VFdmVudChjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSk7CiAKQEAgLTE0MDQsNiArMTQxMywxMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBib29sIHNjb3Blc092ZXJsYXAoY29uc3QgVCYgYVNjb3BlcywgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PgogUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IFVuaXF1ZUlE
QkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5hYmxlVHJhbnNhY3Rpb24oYm9vbCYgaGFkRGVmZXJyZWRU
cmFuc2FjdGlvbnMpCiB7CiAgICAgaGFkRGVmZXJyZWRUcmFuc2FjdGlvbnMgPSBmYWxzZTsKKwor
ICAgIGlmIChtX3BlbmRpbmdUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIGlmICghbV9iYWNraW5nU3RvcmVTdXBwb3J0c1NpbXVsdGFuZW91c1Ry
YW5zYWN0aW9ucyAmJiBoYXNVbmZpbmlzaGVkVHJhbnNhY3Rpb25zKCkpIHsKICAgICAgICAgTE9H
KEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjp0YWtlTmV4dFJ1bm5hYmxlVHJhbnNhY3Rp
b24gLSBCYWNraW5nIHN0b3JlIG9ubHkgc3VwcG9ydHMgMSB0cmFuc2FjdGlvbiwgYW5kIHdlIGFs
cmVhZHkgaGF2ZSAxIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGViNWYzMGEzZjM1ZmI5NWI0MTgz
NDJiMDdkMDYwNjc0YWI4NTFiNjMuLjYxM2Q2ODZjYzE4NDYwYWFiMmUzZDgxNmUwNzM1ZGI3ZGJh
NDdkYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNS0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogQWZ0ZXIgY2xvc2luZyBhIE5ldGZsaXggdmlk
ZW8sIHRyeWluZyB0byB3YXRjaCBpdCBhZ2FpbiBmYWlscy4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI1MDkyNDczPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2ViUHJvY2Vzc0tp
bGxJREJDbGVhbnVwLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2ViUHJvY2Vzc0tpbGxJ
REJDbGVhbnVwLm1tOiBBZGRlZC4KKwogMjAxNi0wNS0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2YgV1RGL0Z1bmN0aW9uYWwuaApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MjExYzAzNjMwYzdkOGEwYWJkYzE3ODk0NDhjMjhi
ZTJhYzI1ZDc5Li4wMmI1MjMzYWEyOWNkMWU0OGY5MWQ4NTBhNmI5N2I1MzYzMmY1ZjdkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjgsNiArNjgsOSBAQAogCQk0QkZERkZBNzEzMTQ3NzZD
MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE2MTMxNDc3NkMwMDYx
RjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovOyB9OwogCQk1MTM5
M0UyMjE1MjM5NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzkzRTFE
MTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwICov
OyB9OwogCQk1MTQyQjI3MzE1MTdDOEM4MDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJM
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0MkIyNzIxNTE3Qzg5MTAwQzMyQjE5IC8qIENvbnRleHRNZW51Q2FuQ29weVVSTC5odG1s
ICovOyB9OworCQk1MTcxNEVCNDFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJD
bGVhbnVwLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJD
bGVhbnVwLTEuaHRtbCAqLzsgfTsKKwkJNTE3MTRFQjUxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlBy
b2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlBy
b2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi87IH07CisJCTUxNzE0RUI4MUNGOENBMTcwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2Vi
UHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tICovOyB9OwogCQk1MTdFN0UwNDE1MTExOUMxMDBEMEIw
MDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RTdF
MDMxNTExMTg3NTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5odG1sICovOyB9OwogCQk1MUIxRUU4RTFDODBGNTg4MDA2NEZCOTggLyogSW5kZXhl
ZERCUGVyc2lzdGVuY2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2Uu
bW0gKi87IH07CiAJCTUxQjFFRTk2MUM4MEZBRUYwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0
ZW5jZS0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCMUVFOTQxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNl
LTEuaHRtbCAqLzsgfTsKQEAgLTQyMyw2ICs0MjYsOCBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgK
KwkJCQk1MTcxNEVCNDFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVw
LTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIz
QzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk5M0NGQTg2NzFDRUI5RTM4MDAwNTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4dC1pbnB1
dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTkzNjI1RDI3MUNEOTc0MUMwMDZEQzFG
MSAvKiBsYXJnZS12aWRlby13aXRob3V0LWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJOTM2RjcyODAxQ0Q3RDlFQzAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdpdGgtYXVkaW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTY0MCw2ICs2NDUsOSBAQAogCQk1MTM5M0Ux
RTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQyQjI3MDE1MTdDODhCMDBDMzJCMTkg
LyogQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQ29udGV4dE1lbnVDYW5Db3B5VVJMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTQyQjI3MjE1MTdDODkxMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5
VVJMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb250ZXh0TWVudUNhbkNvcHlV
UkwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3MTRFQjIxQ0Y4Qzc2MTAw
NDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIldl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVw
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0tp
bGxJREJDbGVhbnVwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFN0RGQjE1
MTEwRUE2MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2Fj
aGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMUVFOEQxQzgwRjU4ODAwNjRGQjk4IC8qIEluZGV4
ZWREQlBlcnNpc3RlbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSW5kZXhlZERCUGVyc2lzdGVuY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMDQxLDkgKzEwNDksMTIgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUExNkY2NkI4MUM0MEU5
RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJN0NFRkE5NjQxQUMwQjlFMjAwQjkxMEZE
IC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8sCisJCQkJQTFERjc0MzAxQzQx
QjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLywKIAkJCQky
REQzNTUzNTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovLAog
CQkJCUExM0VCQkFDMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQYXJhbWV0ZXJzLm1tICovLAog
CQkJCUExM0VCQkFFMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQYXJhbWV0ZXJzUGx1Z0luLm1t
ICovLAorCQkJCTFDMkI4MTdFMUM4OTFFNDIwMEE1NTI5RiAvKiBDYW5jZWxGb250U3VicmVzb3Vy
Y2UubW0gKi8sCisJCQkJMUMyQjgxODExQzg5MUVGQTAwQTU1MjlGIC8qIENhbmNlbEZvbnRTdWJy
ZXNvdXJjZVBsdWdJbi5tbSAqLywKIAkJCQlBMThBQThDQzFDM0ZBMjE4MDA5QjJCOTcgLyogQ29u
dGVudEZpbHRlcmluZy5oICovLAogCQkJCUExNEZDNTg2MUI4OTkxQjYwMEQxMDdFQiAvKiBDb250
ZW50RmlsdGVyaW5nLm1tICovLAogCQkJCUExNEZDNTg5MUI4OTkyNzEwMEQxMDdFQiAvKiBDb250
ZW50RmlsdGVyaW5nUGx1Z0luLm1tICovLApAQCAtMTA1Nyw3ICsxMDY4LDYgQEAKIAkJCQk1Nzkw
MUZBQzFDQUYxMkMyMDBFRDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tICovLAogCQkJ
CTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLywKIAkJCQkxQUJD
M0RFRDE4OTlCRTZEMDA0RjA2MjYgLyogTmF2aWdhdGlvbi5tbSAqLywKLQkJCQlBMURGNzQzMDFD
NDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovLAogCQkJ
CUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gKi8sCiAJ
CQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8qIFByZWZlcmVuY2VzLm1tICovLAogCQkJCTU3
OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLywK
QEAgLTEwNjgsMTUgKzEwNzgsMTQgQEAKIAkJCQlDRDlFMjkyQjFDOTBBNzFGMDAwQkI4MDAgLyog
UmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0gKi8sCiAJCQkJMzdCQ0E2MUIxQjU5NkJB
OTAwMjAxMkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0g
Ki8sCiAJCQkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1tICovLAot
CQkJCTkzRTk0M0YxMUNEM0U4N0UwMEFDMDhDMiAvKiBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSAq
LywKIAkJCQk3Q0MzRTFGQTE5N0UyMzQxMDBCRTYyNTIgLyogVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tICovLAogCQkJCTdDODgyRTAzMUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxk
Lm1tICovLAogCQkJCTdDODgyRTA0MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxk
UGx1Z0luLm1tICovLAogCQkJCTdDODgyRTA1MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVu
dFdvcmxkUHJvdG9jb2wuaCAqLywKKwkJCQk5M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlk
ZW9Db250cm9sc01hbmFnZXIubW0gKi8sCiAJCQkJMkQwMDA2NUQxQzFGNTg5NDAwODhFNkE3IC8q
IFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tICovLAogCQkJCTBGM0I5NEE1MUE3NzI2NkMwMERFMzI3
MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gKi8sCi0JCQkJMUMyQjgxN0UxQzg5
MUU0MjAwQTU1MjlGIC8qIENhbmNlbEZvbnRTdWJyZXNvdXJjZS5tbSAqLywKLQkJCQkxQzJCODE4
MTFDODkxRUZBMDBBNTUyOUYgLyogQ2FuY2VsRm9udFN1YnJlc291cmNlUGx1Z0luLm1tICovLAor
CQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAu
bW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJXZWJLaXQyIENvY29hIjsKIAkJCXBhdGggPSBXZWJL
aXQyQ29jb2E7CkBAIC0xMTU5LDYgKzExNjgsOCBAQAogCQkJCTUxQkNFRTREMUM4NEY1MkMwMDQy
QzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MtMi5odG1sICovLAogCQkJCTUxQjFFRTk0MUM4
MEZBREQwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS0xLmh0bWwgKi8sCiAJCQkJNTFC
MUVFOTUxQzgwRkFERDAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLTIuaHRtbCAqLywK
KwkJCQk1MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVw
LTEuaHRtbCAqLywKKwkJCQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tp
bGxJREJDbGVhbnVwLTIuaHRtbCAqLywKIAkJCQk5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyog
YXV0b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1sICovLAogCQkJCTkzNkY3MjdFMUNEN0Q5RDAwMDY4
QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8sCiAJCQkJOTM2RjcyN0YxQ0Q3
RDlEMDAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0ICovLApAQCAtMTg0Myw2
ICsxODU0LDcgQEAKIAkJCQk1MzY3NzAzNDFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFMjFBNDExQTlBMDA0
NDdDNEMgLyogR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YzNTFBNDExQjhFMDA0NDdDNEMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1MTcxNEVCODFDRjhDQTE3MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJD
bGVhbnVwLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMzYxQTQxMUI4RTAwNDQ3QzRDIC8q
IEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRkExQTQxMUFFNjAwNDQ3QzRD
IC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUMxMUE0MTFBN0UwMDQ0N0M0QyAvKiBIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbS5tbSBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTlhMTIxZTQ5MjkyYzJjNWIwYjZhZjZhZDliODE4MDk4OThjYTY4ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC0xLmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPHNjcmlwdD4KKwordmFy
IHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCJXZWJQcm9jZXNzS2ls
bElEQkNsZWFudXAiKTsKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkKK3sKKyAgICBj
b250aW51ZVRlc3QoKTsKK30KK3JlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpCit7CisgICAg
Ly8gVW5leHBlY3RlZCBlcnJvcgorICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRl
c3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdFcnJvciBkZWxldGluZyBkYXRhYmFzZScpOworfQorCit2
YXIgZGF0YWJhc2U7CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCit7CisgICAgdmFyIHJlcXVl
c3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cCIpOwor
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnT3BlbiBz
dWNjZXNzJyk7CisgICAgICAgIHNldFRpbWVvdXQoY29udGludWVUZXN0MiwgMCk7CisgICAgfQor
CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gVW5l
eHBlY3RlZCBlcnJvcgorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0
SGFuZGxlci5wb3N0TWVzc2FnZSgnVW5leHBlY3RlZCBlcnJvciBvcGVuaW5nIGRhdGFiYXNlJyk7
CisgICAgfQorCisgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCdVcGdyYWRlTmVlZGVkJyk7CisKKyAgICAgICAgZGF0YWJhc2UgPSBldmVu
dC50YXJnZXQucmVzdWx0OworICAgICAgICB2YXIgc3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICAgICAgZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdUcmFuc2FjdGlvbiBj
b21wbGV0ZScpOworICAgICAgICB9CisKKyAgICAgICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdUcmFuc2FjdGlvbiBlcnJvcmVkIScp
OworICAgICAgICB9CisKKyAgICAgICAgc3RvcmUucHV0KCJiYXIiLCAiZm9vIik7CisgICAgfQor
fQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QyKCkKK3sKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSBk
YXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iikub2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgLy8gU3RhcnQgYSBnZXQtbG9vcCB0byBr
ZWVwIHRoaXMgdHJhbnNhY3Rpb24gYWN0aXZlLgorICAgIHZhciBzaG91bGRNZXNzYWdlQ2xvc2Ug
PSB0cnVlOworICAgIGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7CisgICAgICAgIG9iamVjdFN0b3JlLmdl
dCgiZm9vIikub25zdWNjZXNzID0gc3VjY2VzczsKKyAgICAgICAgaWYgKHNob3VsZE1lc3NhZ2VD
bG9zZSkgeworICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoJ0luZmluaXRlIFRyYW5zYWN0aW9uIFN0YXJ0ZWQnKTsKKyAgICAg
ICAgICAgIHNob3VsZE1lc3NhZ2VDbG9zZSA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5vbnN1Y2Nlc3MgPSBzdWNjZXNzOworfQorPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9X
ZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYjMwNDdhY2FmYjc2ODJkNmE2NTkzMjQ1OGY0Nzk2MDYwZGI1MzcxCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2ViUHJvY2Vzc0tp
bGxJREJDbGVhbnVwLTIuaHRtbApAQCAtMCwwICsxLDI1IEBACis8c2NyaXB0PgorCit2YXIgcmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwIik7
CisKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1NlY29uZCBvcGVu
IHN1Y2Nlc3MnKTsKKworICAgIGV2ZW50LnRhcmdldC5yZXN1bHQudHJhbnNhY3Rpb24oIlRlc3RP
YmplY3RTdG9yZSIsICJyZWFkb25seSIpLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKS5n
ZXQoImZvbyIpLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB3aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnU2Vjb25kIFdlYlZpZXcg
VHJhbnNhY3Rpb24gU3RhcnRlZCcpOworICAgIH0KK30KKworcmVxdWVzdC5vbmVycm9yID0gZnVu
Y3Rpb24oKQoreworICAgIC8vIFVuZXhwZWN0ZWQgZXJyb3IKKyAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnVW5leHBlY3RlZCBlcnJvciBv
cGVuaW5nIGRhdGFiYXNlJyk7Cit9CisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZXZlbnQpCit7CisgICAgLy8gVW5leHBlY3RlZCBlcnJvcgorICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdVbmV4cGVjdGVkIFVwZ3Jh
ZGVOZWVkZWQgb3BlbmluZyBkYXRhYmFzZScpOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFjZTgxM2FjNGY4YzI4YTlhNGY1NjNi
YzAyNmJmNTlmYmU1Y2QzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1dlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbQpAQCAtMCwwICsx
LDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktp
dC5oPgorCisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNo
ZWV0Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAor
CitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CitzdGF0aWMgUmV0YWluUHRyPFdL
U2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CisKK0BpbnRlcmZhY2UgSW5kZXhlZERC
V2ViUHJvY2Vzc0tpbGxNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gSW5kZXhlZERCV2ViUHJvY2Vzc0tpbGxN
ZXNzYWdlSGFuZGxlcgorCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1l
c3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSB0cnVlOworICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKK30KKworQGVu
ZAorCitURVNUKEluZGV4ZWREQiwgV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwKQoreworICAgIFJl
dGFpblB0cjxJbmRleGVkREJXZWJQcm9jZXNzS2lsbE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0g
YWRvcHROUyhbW0luZGV4ZWREQldlYlByb2Nlc3NLaWxsTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIC8vIEFsbG93
IGZpbGUgVVJMcyB0byBsb2FkIG5vbi1maWxlIHJlc291cmNlcworICAgIFtjb25maWd1cmF0aW9u
IF9zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczpZRVNdOworCisgICAgW2NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Rlcm1pbmF0ZURhdGFiYXNlUHJvY2Vzc107CisK
KyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
ZmFsc2U7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcxID0gKE5TU3RyaW5nICopW2xh
c3RTY3JpcHRNZXNzYWdlIGJvZHldOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
OworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0cmluZyAqKVtsYXN0U2Ny
aXB0TWVzc2FnZSBib2R5XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZzMgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1l
c3NhZ2UgYm9keV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBzdHJpbmc0ID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdl
IGJvZHldOworCisgICAgLy8gS2lsbCB0aGF0IHdlYiBwcm9jZXNzCisgICAgd2ViVmlldyA9IG5p
bDsKKworICAgIC8vIE1ha2UgYSBuZXcgd2ViIHZpZXcgd2l0aCBhIG5ldyB3ZWIgcHJvY2VzcyB0
byBmaW5pc2ggdGhlIHRlc3QKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3MiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICByZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAg
ICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNz
YWdlID0gZmFsc2U7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmc1ID0gKE5TU3RyaW5n
ICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nNiA9IChOU1N0cmluZyAqKVts
YXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKKworICAgIEVYUEVDVF9XS19TVFJFUShAIlVwZ3JhZGVO
ZWVkZWQiLCBzdHJpbmcxLmdldCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJUcmFuc2FjdGlv
biBjb21wbGV0ZSIsIHN0cmluZzIuZ2V0KCkpOworICAgIEVYUEVDVF9XS19TVFJFUShAIk9wZW4g
c3VjY2VzcyIsIHN0cmluZzMuZ2V0KCkpOworICAgIEVYUEVDVF9XS19TVFJFUShAIkluZmluaXRl
IFRyYW5zYWN0aW9uIFN0YXJ0ZWQiLCBzdHJpbmc0LmdldCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoQCJTZWNvbmQgb3BlbiBzdWNjZXNzIiwgc3RyaW5nNS5nZXQoKSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKEAiU2Vjb25kIFdlYlZpZXcgVHJhbnNhY3Rpb24gU3RhcnRlZCIsIHN0cmluZzYuZ2V0
KCkpOworfQorCisjZW5kaWYK
</data>
<flag name="review"
          id="303981"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>