<?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>102984</bug_id>
          
          <creation_ts>2012-11-21 15:18:33 -0800</creation_ts>
          <short_desc>IndexedDB: Simplify transaction timers and event tracking</short_desc>
          <delta_ts>2012-11-30 14:29:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>773342</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-21 15:18:33 -0800</bug_when>
    <thetext>IndexedDB: Simplify transaction timers and event tracking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773347</commentid>
    <comment_count>1</comment_count>
      <attachid>175536</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-21 15:28:38 -0800</bug_when>
    <thetext>Created attachment 175536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773349</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-21 15:30:11 -0800</bug_when>
    <thetext>NOTE: http://crrev.com/11280128 needs to land first.

(There some Chromium public WebKit API cleanup that can be done after this lands, as well as some cleanup inside Chromium itself.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773350</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-21 15:30:54 -0800</bug_when>
    <thetext>dgrogan@, alecflett@ - please take a look once Tryptophan levels have diminished to a reasonable level?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773374</commentid>
    <comment_count>4</comment_count>
      <attachid>175541</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-21 16:00:40 -0800</bug_when>
    <thetext>Created attachment 175541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773376</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-21 16:01:33 -0800</bug_when>
    <thetext>Updated patch - removed the Chromium public WebKit API impls. Just leaves an ASSERT_NOT_REACHED() impl in WebIDBTransaction.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776877</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-27 09:41:51 -0800</bug_when>
    <thetext>Now that turkey day has passed - alecflett@, dgrogan@ - please take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776944</commentid>
    <comment_count>7</comment_count>
      <attachid>175541</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-27 10:33:19 -0800</bug_when>
    <thetext>Comment on attachment 175541
Patch

Other than a comment request, this looks great. LGTM

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

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:504
&gt;      if (m_transaction) {

Now I&apos;m wondering when we do and don&apos;t have an m_transaction - do you know? If so, add a comment..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776947</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-27 10:36:34 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 175541 [details])
&gt; Other than a comment request, this looks great. LGTM
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175541&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:504
&gt; &gt;      if (m_transaction) {
&gt; 
&gt; Now I&apos;m wondering when we do and don&apos;t have an m_transaction - do you know? If so, add a comment..

The IDBFactory methods (open/deleteDatabase/getDatabaseNames) are the only cases.

I&apos;ll add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776958</commentid>
    <comment_count>9</comment_count>
      <attachid>176298</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-27 10:42:04 -0800</bug_when>
    <thetext>Created attachment 176298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776966</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-27 10:44:55 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777242</commentid>
    <comment_count>11</comment_count>
      <attachid>176343</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-27 14:47:54 -0800</bug_when>
    <thetext>Created attachment 176343
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777259</commentid>
    <comment_count>12</comment_count>
      <attachid>176343</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 15:09:06 -0800</bug_when>
    <thetext>Comment on attachment 176343
Patch for landing

Clearing flags on attachment: 176343

Committed r135927: &lt;http://trac.webkit.org/changeset/135927&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777260</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 15:09:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780431</commentid>
    <comment_count>14</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-30 14:29:59 -0800</bug_when>
    <thetext>26% improvement: http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/indexeddb/report.html?rev=170079&amp;graph=basic_insert&amp;trace=t&amp;history=150</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175536</attachid>
            <date>2012-11-21 15:28:38 -0800</date>
            <delta_ts>2012-11-21 16:00:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102984-20121121152624.patch</filename>
            <type>text/plain</type>
            <size>16783</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Mzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVkYmNlYzg2YTRhODFl
YTE4MTg0M2U0YzA1NjI5YTVlODhjNTZmZi4uNGUwMDcwZmRlNTkwMjI2NDYzODA5MWU3YzNmMTQ3
ZmRmMGY3ZGIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTExLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTaW1w
bGlmeSB0cmFuc2FjdGlvbiB0aW1lcnMgYW5kIGV2ZW50IHRyYWNraW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB0aGUgdHJhbnNhY3Rp
b24gImNvbW1pdCIgZGVjaXNpb24gaXMgbWFkZSBvbiB0aGUgZnJvbnQtZW5kLCB0aGUgYmFjayBl
bmQgbm8tbG9uZ2VyCisgICAgICAgIG5lZWRzIHRvIGJlIGF3YXJlIG9mIHdoZW4gaW5kaXZpZHVh
bCBJREJSZXF1ZXN0cyBoYXZlIGRpc3BhdGNoZWQgdG8gc2NyaXB0IG9yIHRyYWNrIHBlbmRpbmcK
KyAgICAgICAgZXZlbnRzIChleGNlcHQgZm9yIHByZWVtcHRpdmUgb25lcyBsaWtlIGNyZWF0ZUlu
ZGV4KS4gVGhpcyBhbHNvIGxldHMgdHdvIHRpbWVycyBiZSBjb2xsYXBzZWQKKyAgICAgICAgaW50
byBvbmUgd2hpY2ggc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIHRoZSBjb2RlIGZsb3cgaW4gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IHNp
bXBsaWZpY2F0aW9uLiBFeGVyY2lzZWQgYnkgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
Ki5odG1sIGV0Yy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlSW50ZXJuYWwpOiBObyBtb3JlIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoUmVzZXQpOiBObyBtb3JlIHRyYWNraW5n
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmVJbnRlcm5hbCk6IE5vIG1vcmUgdHJhY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKTogTm8gbW9yZSB0
cmFja2luZy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnNldEluZGV4ZXNSZWFkeUludGVybmFsKTogTm8gbW9yZSB0cmFja2luZy4KKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwpOiBO
byBtb3JlIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbCk6IE5vIG1vcmUgdHJhY2tpbmcuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KTogT3JkZXIgbXVzdCBiZToKKyAgICAgICAgMS4gcmVxdWVz
dCBpcyB1bnJlZ2lzdGVyZWQgZnJvbSB0cmFuc2FjdGlvbiAoc28gcmVxdWVzdCBsaXN0IG1heSBi
ZSBlbXB0eSkKKyAgICAgICAgMi4gYWJvcnQgdHJhbnNhY3Rpb24gaWYgZXZlbnQgYmVpbmcgZGlz
cGF0Y2hlZCB3YXMgYW4gZXJyb3IKKyAgICAgICAgMy4gZGVhY3RpdmF0ZSB0cmFuc2FjdGlvbiAo
d2hpY2ggbWF5IGNvbW1pdCBpZiAjMSBsZWZ0IGl0IGVtcHR5IGFuZCAjMiBkaWRuJ3QgYWJvcnQp
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKTogTmVlZCB0byB0cmFjayBpZiBjb21taXQKKyAgICAgICAgd2Fz
IHJlcXVlc3RlZDsgcHJldmlvdXNseSB0aGUgZnJvbnQgZW5kIHdvdWxkIGhhdmUgdHJpZ2dlcmVk
IGFuIGV2ZW50IHRpbWVyIHdoaWNoLCBvbgorICAgICAgICBjb21wbGV0aW9uLCB3b3VsZCBiZSB0
aGUgc2lnbmFsIHRoYXQgdGhlIGZyb250IGVuZCB3YXMgZmluaXNoZWQuCisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2spOiBTY2hlZHVsZSBh
IHRpbWVyIHRvIHNlcnZpY2UgdGhlIG5ldworICAgICAgICB0YXNrLCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphYm9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpoYXNQZW5kaW5nVGFza3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZp
cmVkKTogUGlja3MgdXAgImNvbW1pdCIgcmVzcG9uc2liaWxpdGllcworICAgICAgICBmcm9tIHRo
ZSBub3cgZGVsZXRlZCB0YXNrRXZlbnRUaW1lckZpcmVkLCBpZiBldmVyeXRoaW5nIGlzIHRydWx5
IGNvbXBsZXRlIGRvbmUuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OmRp
ZENvbXBsZXRlVGFza0V2ZW50cyk6CisKIDIwMTItMTEtMjEgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMzUzODMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggYjQ5NDRjYTg5NWM4ZDAyZDAxNTRlMDVk
NjE1MzY3MzFjMDVhM2NjNy4uMjIzNTdmOGQ0YTg4MjY5MDUyNDdmNmNiOGUwNzJmN2IyMjU3YmQ4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtMTczLDE0ICsxNzMsMTIgQEAgdm9pZCBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGN1cnNvci0+bV90cmFu
c2FjdGlvbi0+YWRkUGVuZGluZ0V2ZW50cyhmb3VuZEtleXMuc2l6ZSgpIC0gMSk7CiAgICAgY2Fs
bGJhY2tzLT5vblN1Y2Nlc3NXaXRoUHJlZmV0Y2goZm91bmRLZXlzLCBmb3VuZFByaW1hcnlLZXlz
LCBmb3VuZFZhbHVlcyk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNo
UmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcykKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0Iik7Ci0gICAgbV90
cmFuc2FjdGlvbi0+YWRkUGVuZGluZ0V2ZW50cygtdW51c2VkUHJlZmV0Y2hlcyk7CiAgICAgbV9j
dXJzb3IgPSBtX3NhdmVkQ3Vyc29yOwogICAgIG1fc2F2ZWRDdXJzb3IgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuY3BwCmluZGV4IDBkYzgwMjEwOThmZWEzOGQ1MWQ4YjliOWE3NDY1NWY2NTZkZmU2
YTYuLmFjZTE3MGU2YTA2MzVlZjA0ZjQzMzUzZTExYzEzODkyMzcyNjViYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuY3BwCkBAIC0yMDIsOCArMjAyLDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpjcmVhdGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLAog
ICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQot
ICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvYmpl
Y3RTdG9yZShpbnQ2NF90IGlkKQpAQCAtMjMyLDcgKzIzMCw2IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbD4gZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
b2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24pCiB7CiAgICAgZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9y
ZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2UtPmlkKCks
IG9iamVjdFN0b3JlLT5pZCgpKTsKLSAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZl
bnRzKCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggNzQ3MWNh
YzQ3ZTdiNTRmYjQ3OWQ4YzUxOTY4MWY3MWJlNjYzMzIyOS4uNmExNGFkNzkyMGE2ZmQ2NWU5MzZl
MTE5OWQ1NDk0NTQzZDI0MmIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTI2
OCw3ICsyNjgsNiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4ZXNS
ZWFkeUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLAogICAgIE93blB0cjxWZWN0b3I8
aW50NjRfdD4gPiBpbmRleElkcyA9IHBvcEluZGV4SWRzOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5kZXhJZHMtPnNpemUoKTsgKytpKQogICAgICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29t
cGxldGVQcmVlbXB0aXZlRXZlbnQoKTsKLSAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNr
RXZlbnRzKCk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBw
cnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+IHBycFRyYW5zYWN0aW9uLCBQYXNzT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+
IHBvcEluZGV4SWRzLCBQYXNzT3duUHRyPFZlY3RvcjxJbmRleEtleXM+ID4gcG9wSW5kZXhLZXlz
KQpAQCAtNDA3LDggKzQwNiw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3Jl
YXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAgICAgICAgIHRy
YW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgdHJhbnNh
Y3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCiBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXgoaW50NjRf
dCBpbmRleElkKQpAQCAtNDM5LDcgKzQzNiw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6ZGVsZXRlSW5kZXgoaW50NjRfdCBpbmRleElkLCBJREJUcmFuc2FjdGlvbkJhY2tlCiB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
b2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5kZWxldGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3Rv
cmUtPmlkKCksIGluZGV4LT5pZCgpKTsKLSAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNr
RXZlbnRzKCk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
cihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBSYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggZTRk
MTY3ZmZhZDBhM2IyMTUyMGE4MTA1NDQ2OGU0OTJiZDk1ZDI3Mi4uZGFmZDM0ODQzNmJhNDliMGVj
MWQxZGVlOWI0YmE4MWU4YjFlMWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTUwMSwzMCArNTAxLDI3IEBAIGJvb2wgSURCUmVx
dWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogICAgIGJvb2wg
ZG9udFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5n
ZXQoKSwgdGFyZ2V0cyk7CiAKLSAgICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX3JlYWR5U3RhdGUg
PT0gRE9ORSkKLSAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7
Ci0KLSAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCByZXF1ZXN0IGluIHRoZSB0cmFuc2FjdGlv
bidzIGxpc3QsIGl0IG1heSBjb21taXQgaGVyZS4KLSAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3Rp
dmUpCi0gICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7Ci0KLSAgICBpZiAo
Y3Vyc29yVG9Ob3RpZnkpCi0gICAgICAgIGN1cnNvclRvTm90aWZ5LT5wb3N0U3VjY2Vzc0hhbmRs
ZXJDYWxsYmFjaygpOwotCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FICYmICghY3Vyc29y
VG9Ob3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkgJiYgZXZlbnQtPnR5cGUoKSAhPSBldmVudE5h
bWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KQotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9
IGZhbHNlOwotCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fcmVhZHlT
dGF0ZSA9PSBET05FKQorICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVl
c3QodGhpcyk7CisKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQgJiYgZG9udFByZXZlbnREZWZhdWx0ICYmICFtX3JlcXVlc3RBYm9ydGVkKSB7CiAg
ICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRFcnJvcihtX2Vycm9yKTsKICAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgdW51c2VkOwogICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQo
dW51c2VkKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50
TmFtZXMoKS5ibG9ja2VkRXZlbnQpCi0gICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5iYWNrZW5k
KCktPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOworICAgICAgICAvLyBJZiB0aGlzIHdhcyB0aGUg
bGFzdCByZXF1ZXN0IGluIHRoZSB0cmFuc2FjdGlvbidzIGxpc3QsIGl0IG1heSBjb21taXQgaGVy
ZS4KKyAgICAgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZlKQorICAgICAgICAgICAgbV90cmFu
c2FjdGlvbi0+c2V0QWN0aXZlKGZhbHNlKTsKICAgICB9CiAKKyAgICBpZiAoY3Vyc29yVG9Ob3Rp
ZnkpCisgICAgICAgIGN1cnNvclRvTm90aWZ5LT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygp
OworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FICYmICghY3Vyc29yVG9Ob3RpZnkgfHwg
bV9jdXJzb3JGaW5pc2hlZCkgJiYgZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkudXBncmFk
ZW5lZWRlZEV2ZW50KQorICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGZhbHNlOworCiAg
ICAgcmV0dXJuIGRvbnRQcmV2ZW50RGVmYXVsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmNwcAppbmRleCA1MDU0M2Q1ZTgxOTllZjA2MTVmNmE4ZGZlYzU5Yjc4YjcxNDRiZmJlLi44MGNj
MGU0OWJkYmNhYTgyMjU1ODI2ZGQ5MjdkMGUxNTQyZmJlMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcApAQCAtNDgsMTIgKzQ4LDExIEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplCiAg
ICAgOiBtX29iamVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRzKQogICAgICwgbV9tb2RlKG1vZGUp
CiAgICAgLCBtX3N0YXRlKFVudXNlZCkKKyAgICAsIG1fY29tbWl0UGVuZGluZyhmYWxzZSkKICAg
ICAsIG1fZGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uKGRhdGFiYXNlLT5i
YWNraW5nU3RvcmUoKS5nZXQoKSkKICAgICAsIG1fdGFza1RpbWVyKHRoaXMsICZJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZCkKLSAgICAsIG1fdGFza0V2ZW50VGltZXIo
dGhpcywgJklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQpCiAg
ICAgLCBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzKDApCi0gICAgLCBtX3BlbmRpbmdFdmVudHMo
MCkKIHsKICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCktPmRpZENyZWF0
ZVRyYW5zYWN0aW9uKHRoaXMpOwogfQpAQCAtOTEsNiArOTAsOCBAQCBib29sIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPFNj
cmlwdEV4ZQogCiAgICAgaWYgKG1fc3RhdGUgPT0gVW51c2VkKQogICAgICAgICBzdGFydCgpOwor
ICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gUnVubmluZyAmJiAhbV90YXNrVGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KDApOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0xMTUsNyArMTE2LDYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
OjphYm9ydChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yKQogCiAgICAgbV9zdGF0
ZSA9IEZpbmlzaGVkOwogICAgIG1fdGFza1RpbWVyLnN0b3AoKTsKLSAgICBtX3Rhc2tFdmVudFRp
bWVyLnN0b3AoKTsKIAogICAgIGlmICh3YXNSdW5uaW5nKQogICAgICAgICBtX3RyYW5zYWN0aW9u
LnJvbGxiYWNrKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjppc1Rhc2tRdWV1ZUVtcHR5KCkgY29uc3QKIAogYm9vbCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpoYXNQZW5kaW5nVGFza3MoKSBjb25zdAogewotICAgIHJldHVybiBtX3BlbmRp
bmdFdmVudHMgfHwgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyB8fCAhaXNUYXNrUXVldWVFbXB0
eSgpOworICAgIHJldHVybiBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzIHx8ICFpc1Rhc2tRdWV1
ZUVtcHR5KCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6cmVnaXN0ZXJP
cGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKiBjdXJzb3IpCkBAIC0xNjYsMjcgKzE2Niw2
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dW5yZWdpc3Rlck9wZW5DdXJzb3Io
SURCQ3Vyc29yQmFja2VuZEltcGwqIGN1cnNvCiAgICAgbV9vcGVuQ3Vyc29ycy5yZW1vdmUoY3Vy
c29yKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphZGRQZW5kaW5nRXZl
bnRzKGludCBuKQotewotICAgIG1fcGVuZGluZ0V2ZW50cyArPSBuOwotICAgIEFTU0VSVChtX3Bl
bmRpbmdFdmVudHMgPj0gMCk7Ci19Ci0KLXZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkKLXsKLSAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7Ci0gICAg
QVNTRVJUKG1fcGVuZGluZ0V2ZW50cyk7Ci0gICAgbV9wZW5kaW5nRXZlbnRzLS07Ci0KLSAgICAv
LyBBIHNpbmdsZSB0YXNrIGhhcyBjb21wbGV0ZWQgYW5kIGVycm9yL3N1Y2Nlc3MgZXZlbnRzIGZp
cmVkLiBTY2hlZHVsZQotICAgIC8vIHRpbWVyIHRvIHByb2Nlc3MgYW5vdGhlci4KLSAgICBpZiAo
IW1fdGFza0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90YXNrRXZlbnRUaW1lci5z
dGFydE9uZVNob3QoMCk7Ci19Ci0KIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6cnVu
KCkKIHsKICAgICAvLyBUcmFuc2FjdGlvbkNvb3JkaW5hdG9yIGhhcyBzdGFydGVkIHRoaXMgdHJh
bnNhY3Rpb24uIFNjaGVkdWxlIGEgdGltZXIKQEAgLTIxMSw2ICsxOTAsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCgpCiAgICAgSURCX1RSQUNFKCJJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpjb21taXQiKTsKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFVudXNl
ZCB8fCBtX3N0YXRlID09IFJ1bm5pbmcpOworICAgIG1fY29tbWl0UGVuZGluZyA9IHRydWU7CiAK
ICAgICAvLyBGcm9udC1lbmQgaGFzIHJlcXVlc3RlZCBhIGNvbW1pdCwgYnV0IHRoZXJlIG1heSBi
ZSB0YXNrcyBsaWtlIGNyZWF0ZUluZGV4IHdoaWNoCiAgICAgLy8gYXJlIGNvbnNpZGVyZWQgc3lu
Y2hyb25vdXMgYnkgdGhlIGZyb250LWVuZCBidXQgYXJlIHByb2Nlc3NlZCBhc3luY2hyb25vdXNs
eS4KQEAgLTI2OSwzMSArMjQ5LDE2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
dGFza1RpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qCiAgICAgd2hp
bGUgKCF0YXNrUXVldWUtPmlzRW1wdHkoKSAmJiBtX3N0YXRlICE9IEZpbmlzaGVkKSB7CiAgICAg
ICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOwogICAgICAgICBPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzayh0YXNrUXVldWUtPnRha2VGaXJzdCgpKTsKLSAgICAg
ICAgbV9wZW5kaW5nRXZlbnRzKys7CiAgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKDApOwogCiAg
ICAgICAgIC8vIEV2ZW50IGl0c2VsZiBtYXkgY2hhbmdlIHdoaWNoIHF1ZXVlIHNob3VsZCBiZSBw
cm9jZXNzZWQgbmV4dC4KICAgICAgICAgdGFza1F1ZXVlID0gbV9wZW5kaW5nUHJlZW1wdGl2ZUV2
ZW50cyA/ICZtX3ByZWVtcHRpdmVUYXNrUXVldWUgOiAmbV90YXNrUXVldWU7CiAgICAgfQotfQot
Ci12b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQoVGlt
ZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qKQotewotICAgIElEQl9UUkFDRSgiSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZCIpOwotICAgIEFTU0VSVCht
X3N0YXRlID09IFJ1bm5pbmcpOwogCi0gICAgaWYgKCFoYXNQZW5kaW5nVGFza3MoKSkgewotICAg
ICAgICAvLyBUaGUgbGFzdCB0YXNrIGV2ZW50IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0YXNrCi0g
ICAgICAgIC8vIHF1ZXVlIGlzIGVtcHR5LiBDb21taXQgdGhlIHRyYW5zYWN0aW9uLgorICAgIC8v
IElmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHRhc2tzLCB3ZSBoYXZlbid0IGFscmVhZHkgY29tbWl0
dGVkL2Fib3J0ZWQsCisgICAgLy8gYW5kIHRoZSBmcm9udC1lbmQgcmVxdWVzdGVkIGEgY29tbWl0
LCBpdCBpcyBub3cgc2FmZSB0byBkbyBzby4KKyAgICBpZiAoIWhhc1BlbmRpbmdUYXNrcygpICYm
IG1fc3RhdGUgIT0gRmluaXNoZWQgJiYgbV9jb21taXRQZW5kaW5nKQogICAgICAgICBjb21taXQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlIGFyZSBzdGlsbCB3YWl0aW5n
IGZvciBvdGhlciBldmVudHMgdG8gY29tcGxldGUuIEhvd2V2ZXIsCi0gICAgLy8gdGhlIHRhc2sg
cXVldWUgaXMgbm9uLWVtcHR5IGFuZCB0aGUgdGltZXIgaXMgaW5hY3RpdmUuCi0gICAgLy8gV2Ug
Y2FuIHRoZXJmb3JlIHNjaGVkdWxlIHRoZSB0aW1lciBhZ2Fpbi4KLSAgICBpZiAoIWlzVGFza1F1
ZXVlRW1wdHkoKSAmJiAhbV90YXNrVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90YXNrVGlt
ZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmNsb3NlT3BlbkN1cnNvcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDgwM2VkMDc0
YWJiYTkyY2IwNzY1MDViYjBkYzc4ZjI5OGY5ZDE5Y2EuLjMxOWE5YzEyZjM3YmFhZDRmNmRjNmUx
ZTk4YWFkOTcxMzI1Y2MwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTUzLDcgKzUz
LDYgQEAgcHVibGljOgogCiAgICAgLy8gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2Jq
ZWN0U3RvcmUoaW50NjRfdCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVRhc2tFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKiBjYWxsYmFja3Mp
IHsgbV9jYWxsYmFja3MgPSBjYWxsYmFja3M7IH0KIApAQCAtNjQsNyArNjMsNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzY2hlZHVsZVRhc2soVGFza1R5cGUsIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4sIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gYWJvcnRUYXNrID0gbnVsbHB0cik7CiAgICAgdm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoSURC
Q3Vyc29yQmFja2VuZEltcGwqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1
cnNvckJhY2tlbmRJbXBsKik7Ci0gICAgdm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCk7CiAgICAg
dm9pZCBhZGRQcmVlbXB0aXZlRXZlbnQoKSB7IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMrKzsg
fQogICAgIHZvaWQgZGlkQ29tcGxldGVQcmVlbXB0aXZlRXZlbnQoKSB7IG1fcGVuZGluZ1ByZWVt
cHRpdmVFdmVudHMtLTsgQVNTRVJUKG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMgPj0gMCk7IH0K
ICAgICBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiBiYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpIHsgcmV0dXJuICZtX3RyYW5zYWN0aW9uOyB9CkBAIC04NiwxMyArODQsMTMgQEAgcHJpdmF0
ZToKICAgICBib29sIGhhc1BlbmRpbmdUYXNrcygpIGNvbnN0OwogCiAgICAgdm9pZCB0YXNrVGlt
ZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopOwotICAgIHZvaWQgdGFz
a0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiopOwogICAg
IHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwogCiAgICAgY29uc3QgVmVjdG9yPGludDY0X3Q+IG1f
b2JqZWN0U3RvcmVJZHM7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgbV9tb2RlOwogCiAgICAg
U3RhdGUgbV9zdGF0ZTsKKyAgICBib29sIG1fY29tbWl0UGVuZGluZzsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25DYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiBtX2RhdGFiYXNlOwogCkBAIC0xMDUsOSArMTAzLDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIEZJWE1FOiBkZWxldGUgdGhlIHRpbWVyIG9uY2Ugd2UgaGF2ZSB0aHJlYWRzIGlu
c3RlYWQuCiAgICAgVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gbV90YXNrVGltZXI7
Ci0gICAgVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gbV90YXNrRXZlbnRUaW1lcjsK
ICAgICBpbnQgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50czsKLSAgICBpbnQgbV9wZW5kaW5nRXZl
bnRzOwogCiAgICAgSGFzaFNldDxJREJDdXJzb3JCYWNrZW5kSW1wbCo+IG1fb3BlbkN1cnNvcnM7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCAyZjRjZjMyN2EwYjgx
NjlmYWE1MzdmNGY1ZTM1ZDU5M2I1MTFiY2E5Li5hNmZhYTYzZGVmYzZmNWMzNzA1MDU2NmE1NGRh
N2UxNjk3N2U5YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGludDY0X3QsIEV4Y2VwdGlv
bkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVGFza0V2ZW50cygpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJh
bnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175541</attachid>
            <date>2012-11-21 16:00:40 -0800</date>
            <delta_ts>2012-11-27 10:42:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102984-20121121155827.patch</filename>
            <type>text/plain</type>
            <size>20564</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Mzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVkYmNlYzg2YTRhODFl
YTE4MTg0M2U0YzA1NjI5YTVlODhjNTZmZi4uZDU3MWNmYzIxNTUyMzU5NmE5M2NmNGI4OWMxODIz
ZjQyNTE0NjExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTExLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTaW1w
bGlmeSB0cmFuc2FjdGlvbiB0aW1lcnMgYW5kIGV2ZW50IHRyYWNraW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB0aGUgdHJhbnNhY3Rp
b24gImNvbW1pdCIgZGVjaXNpb24gaXMgbWFkZSBvbiB0aGUgZnJvbnQtZW5kLCB0aGUgYmFjayBl
bmQgbm8tbG9uZ2VyCisgICAgICAgIG5lZWRzIHRvIGJlIGF3YXJlIG9mIHdoZW4gaW5kaXZpZHVh
bCBJREJSZXF1ZXN0cyBoYXZlIGRpc3BhdGNoZWQgdG8gc2NyaXB0IG9yIHRyYWNrIHBlbmRpbmcK
KyAgICAgICAgZXZlbnRzIChleGNlcHQgZm9yIHByZWVtcHRpdmUgb25lcyBsaWtlIGNyZWF0ZUlu
ZGV4KS4gVGhpcyBhbHNvIGxldHMgdHdvIHRpbWVycyBiZSBjb2xsYXBzZWQKKyAgICAgICAgaW50
byBvbmUgd2hpY2ggc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIHRoZSBjb2RlIGZsb3cgaW4gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IHNp
bXBsaWZpY2F0aW9uLiBFeGVyY2lzZWQgYnkgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
Ki5odG1sIGV0Yy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlSW50ZXJuYWwpOiBObyBtb3JlIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoUmVzZXQpOiBObyBtb3JlIHRyYWNraW5n
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmVJbnRlcm5hbCk6IE5vIG1vcmUgdHJhY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKTogTm8gbW9yZSB0
cmFja2luZy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnNldEluZGV4ZXNSZWFkeUludGVybmFsKTogTm8gbW9yZSB0cmFja2luZy4KKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwpOiBO
byBtb3JlIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbCk6IE5vIG1vcmUgdHJhY2tpbmcuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KTogT3JkZXIgbXVzdCBiZToKKyAgICAgICAgMS4gcmVxdWVz
dCBpcyB1bnJlZ2lzdGVyZWQgZnJvbSB0cmFuc2FjdGlvbiAoc28gcmVxdWVzdCBsaXN0IG1heSBi
ZSBlbXB0eSkKKyAgICAgICAgMi4gYWJvcnQgdHJhbnNhY3Rpb24gaWYgZXZlbnQgYmVpbmcgZGlz
cGF0Y2hlZCB3YXMgYW4gZXJyb3IKKyAgICAgICAgMy4gZGVhY3RpdmF0ZSB0cmFuc2FjdGlvbiAo
d2hpY2ggbWF5IGNvbW1pdCBpZiAjMSBsZWZ0IGl0IGVtcHR5IGFuZCAjMiBkaWRuJ3QgYWJvcnQp
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKTogTmVlZCB0byB0cmFjayBpZiBjb21taXQKKyAgICAgICAgd2Fz
IHJlcXVlc3RlZDsgcHJldmlvdXNseSB0aGUgZnJvbnQgZW5kIHdvdWxkIGhhdmUgdHJpZ2dlcmVk
IGFuIGV2ZW50IHRpbWVyIHdoaWNoLCBvbgorICAgICAgICBjb21wbGV0aW9uLCB3b3VsZCBiZSB0
aGUgc2lnbmFsIHRoYXQgdGhlIGZyb250IGVuZCB3YXMgZmluaXNoZWQuCisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2spOiBTY2hlZHVsZSBh
IHRpbWVyIHRvIHNlcnZpY2UgdGhlIG5ldworICAgICAgICB0YXNrLCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphYm9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpoYXNQZW5kaW5nVGFza3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZp
cmVkKTogUGlja3MgdXAgImNvbW1pdCIgcmVzcG9uc2liaWxpdGllcworICAgICAgICBmcm9tIHRo
ZSBub3cgZGVsZXRlZCB0YXNrRXZlbnRUaW1lckZpcmVkLCBpZiBldmVyeXRoaW5nIGlzIHRydWx5
IGNvbXBsZXRlIGRvbmUuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OmRp
ZENvbXBsZXRlVGFza0V2ZW50cyk6IFJlbW92ZWQgZnJvbSBpbnRlcmZhY2UuCisKIDIwMTItMTEt
MjEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzUzODMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDIyOGI4M2Y2MzQyYmNkZTg1OTJhNTNkY2RhMzNmMTdmMGEwMWNiNmEuLjQ4ZWQ5ZWFi
YTcxYWUzNjI5Zjc1MjU4ZWVhMjljNmZiNGQzMjhlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMjEgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNpbXBsaWZ5IHRyYW5zYWN0aW9uIHRp
bWVycyBhbmQgZXZlbnQgdHJhY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBub3ctdW51c2VkIGRpZENvbXBsZXRlVGFza0V2ZW50cygp
IG1ldGhvZC4KKworICAgICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHA6
CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJ
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0
aW9uSW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oOgorCiAy
MDEyLTExLTIxICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIE5vdyB0aGF0IG9mZmVuZGluZyBwYXRjaCBoYXMgYmVlbiByb2xsZWQg
b3V0IHJlZW5hYmxlIElEQlJlcXVlc3RUZXN0LkV2ZW50c0FmdGVyU3RvcHBpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcAppbmRleCBiNDk0NGNhODk1YzhkMDJkMDE1NGUwNWQ2MTUzNjczMWMwNWEzY2M3Li4y
MjM1N2Y4ZDRhODgyNjkwNTI0N2Y2Y2I4ZTA3MmY3YjIyNTdiZDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwu
Y3BwCkBAIC0xNzMsMTQgKzE3MywxMiBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5n
RXZlbnRzKGZvdW5kS2V5cy5zaXplKCkgLSAxKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dp
dGhQcmVmZXRjaChmb3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKIH0K
IAogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZl
dGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29y
QmFja2VuZEltcGw6OnByZWZldGNoUmVzZXQiKTsKLSAgICBtX3RyYW5zYWN0aW9uLT5hZGRQZW5k
aW5nRXZlbnRzKC11bnVzZWRQcmVmZXRjaGVzKTsKICAgICBtX2N1cnNvciA9IG1fc2F2ZWRDdXJz
b3I7CiAgICAgbV9zYXZlZEN1cnNvciA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
MGRjODAyMTA5OGZlYTM4ZDUxZDhiOWI5YTc0NjU1ZjY1NmRmZTZhNi4uYWNlMTcwZTZhMDYzNWVm
MDRmNDMzNTNlMTFjMTM4OTIzNzI2NWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTIw
Miw4ICsyMDIsNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0
b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCiAgICAgICAgIHRyYW5zYWN0aW9u
LT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgdHJhbnNhY3Rpb24tPmRp
ZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlKGludDY0X3QgaWQp
CkBAIC0yMzIsNyArMjMwLDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVP
YmplY3RTdG9yZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQKIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBkYXRh
YmFzZS0+bV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwgb2JqZWN0U3RvcmUtPmlkKCkp
OwotICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA3NDcxY2FjNDdlN2I1NGZiNDc5ZDhjNTE5
NjgxZjcxYmU2NjMzMjI5Li42YTE0YWQ3OTIwYTZmZDY1ZTkzNmUxMTk5ZDU0OTQ1NDNkMjQyYjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtMjY4LDcgKzI2OCw2IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosCiAgICAgT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IGluZGV4SWRz
ID0gcG9wSW5kZXhJZHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleElkcy0+c2l6
ZSgpOyArK2kpCiAgICAgICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVByZWVtcHRpdmVFdmVu
dCgpOwotICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9y
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRy
PElEQktleT4gcHJwS2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJh
bnNhY3Rpb24sIFBhc3NPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4gcG9wSW5kZXhJZHMsIFBhc3NP
d25QdHI8VmVjdG9yPEluZGV4S2V5cz4gPiBwb3BJbmRleEtleXMpCkBAIC00MDcsOCArNDA2LDYg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVU
YXNrRXZlbnRzKCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjppbmRleChpbnQ2NF90IGluZGV4SWQpCkBAIC00Mzks
NyArNDM2LDYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChp
bnQ2NF90IGluZGV4SWQsIElEQlRyYW5zYWN0aW9uQmFja2UKIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBvYmplY3RTdG9yZS0+YmFja2luZ1N0
b3JlKCktPmRlbGV0ZUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigp
LCBvYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlk
KCkpOwotICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IHBycFJhbmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCBlNGQxNjdmZmFkMGEzYjIxNTIwYTgx
MDU0NDY4ZTQ5MmJkOTVkMjcyLi5kYWZkMzQ4NDM2YmE0OWIwZWMxZDFkZWU5YjRiYTgxZThiMWUx
YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcApAQCAtNTAxLDMwICs1MDEsMjcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQg
PSBJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKIAot
ICAgIGlmIChtX3RyYW5zYWN0aW9uICYmIG1fcmVhZHlTdGF0ZSA9PSBET05FKQotICAgICAgICBt
X3RyYW5zYWN0aW9uLT51bnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKLQotICAgIC8vIElmIHRoaXMg
d2FzIHRoZSBsYXN0IHJlcXVlc3QgaW4gdGhlIHRyYW5zYWN0aW9uJ3MgbGlzdCwgaXQgbWF5IGNv
bW1pdCBoZXJlLgotICAgIGlmIChzZXRUcmFuc2FjdGlvbkFjdGl2ZSkKLSAgICAgICAgbV90cmFu
c2FjdGlvbi0+c2V0QWN0aXZlKGZhbHNlKTsKLQotICAgIGlmIChjdXJzb3JUb05vdGlmeSkKLSAg
ICAgICAgY3Vyc29yVG9Ob3RpZnktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7Ci0KLSAg
ICBpZiAobV9yZWFkeVN0YXRlID09IERPTkUgJiYgKCFjdXJzb3JUb05vdGlmeSB8fCBtX2N1cnNv
ckZpbmlzaGVkKSAmJiBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVk
RXZlbnQpCi0gICAgICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gZmFsc2U7Ci0KICAgICBpZiAo
bV90cmFuc2FjdGlvbikgeworICAgICAgICBpZiAobV9yZWFkeVN0YXRlID09IERPTkUpCisgICAg
ICAgICAgICBtX3RyYW5zYWN0aW9uLT51bnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKKwogICAgICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCAmJiBkb250UHJl
dmVudERlZmF1bHQgJiYgIW1fcmVxdWVzdEFib3J0ZWQpIHsKICAgICAgICAgICAgIG1fdHJhbnNh
Y3Rpb24tPnNldEVycm9yKG1fZXJyb3IpOwogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVz
ZWQ7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydCh1bnVzZWQpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVu
dCkKLSAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS0+ZGlkQ29tcGxldGVUYXNr
RXZlbnRzKCk7CisgICAgICAgIC8vIElmIHRoaXMgd2FzIHRoZSBsYXN0IHJlcXVlc3QgaW4gdGhl
IHRyYW5zYWN0aW9uJ3MgbGlzdCwgaXQgbWF5IGNvbW1pdCBoZXJlLgorICAgICAgICBpZiAoc2V0
VHJhbnNhY3Rpb25BY3RpdmUpCisgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRBY3RpdmUo
ZmFsc2UpOwogICAgIH0KIAorICAgIGlmIChjdXJzb3JUb05vdGlmeSkKKyAgICAgICAgY3Vyc29y
VG9Ob3RpZnktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CisKKyAgICBpZiAobV9yZWFk
eVN0YXRlID09IERPTkUgJiYgKCFjdXJzb3JUb05vdGlmeSB8fCBtX2N1cnNvckZpbmlzaGVkKSAm
JiBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpCisgICAg
ICAgIG1faGFzUGVuZGluZ0FjdGl2aXR5ID0gZmFsc2U7CisKICAgICByZXR1cm4gZG9udFByZXZl
bnREZWZhdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IDUwNTQzZDVl
ODE5OWVmMDYxNWY2YThkZmVjNTliNzhiNzE0NGJmYmUuLjgwY2MwZTQ5YmRiY2FhODIyNTU4MjZk
ZDkyN2QwZTE1NDJmYmUyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC00OCwx
MiArNDgsMTEgQEAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbChjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamUKICAgICA6IG1fb2JqZWN0U3RvcmVJ
ZHMob2JqZWN0U3RvcmVJZHMpCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fc3RhdGUoVW51
c2VkKQorICAgICwgbV9jb21taXRQZW5kaW5nKGZhbHNlKQogICAgICwgbV9kYXRhYmFzZShkYXRh
YmFzZSkKICAgICAsIG1fdHJhbnNhY3Rpb24oZGF0YWJhc2UtPmJhY2tpbmdTdG9yZSgpLmdldCgp
KQogICAgICwgbV90YXNrVGltZXIodGhpcywgJklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRh
c2tUaW1lckZpcmVkKQotICAgICwgbV90YXNrRXZlbnRUaW1lcih0aGlzLCAmSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ1ByZWVt
cHRpdmVFdmVudHMoMCkKLSAgICAsIG1fcGVuZGluZ0V2ZW50cygwKQogewogICAgIG1fZGF0YWJh
c2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+ZGlkQ3JlYXRlVHJhbnNhY3Rpb24odGhpcyk7
CiB9CkBAIC05MSw2ICs5MCw4IEBAIGJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2No
ZWR1bGVUYXNrKFRhc2tUeXBlIHR5cGUsIFBhc3NPd25QdHI8U2NyaXB0RXhlCiAKICAgICBpZiAo
bV9zdGF0ZSA9PSBVbnVzZWQpCiAgICAgICAgIHN0YXJ0KCk7CisgICAgZWxzZSBpZiAobV9zdGF0
ZSA9PSBSdW5uaW5nICYmICFtX3Rhc2tUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3Rhc2tU
aW1lci5zdGFydE9uZVNob3QoMCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTExNSw3ICsx
MTYsNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCiAKICAgICBtX3N0YXRlID0gRmluaXNoZWQ7CiAgICAg
bV90YXNrVGltZXIuc3RvcCgpOwotICAgIG1fdGFza0V2ZW50VGltZXIuc3RvcCgpOwogCiAgICAg
aWYgKHdhc1J1bm5pbmcpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKQEAgLTE1
Myw3ICsxNTMsNyBAQCBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmlzVGFza1F1ZXVl
RW1wdHkoKSBjb25zdAogCiBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Omhhc1BlbmRp
bmdUYXNrcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGVuZGluZ0V2ZW50cyB8fCBtX3BlbmRp
bmdQcmVlbXB0aXZlRXZlbnRzIHx8ICFpc1Rhc2tRdWV1ZUVtcHR5KCk7CisgICAgcmV0dXJuIG1f
cGVuZGluZ1ByZWVtcHRpdmVFdmVudHMgfHwgIWlzVGFza1F1ZXVlRW1wdHkoKTsKIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpyZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29y
QmFja2VuZEltcGwqIGN1cnNvcikKQEAgLTE2NiwyNyArMTY2LDYgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjp1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1w
bCogY3Vyc28KICAgICBtX29wZW5DdXJzb3JzLnJlbW92ZShjdXJzb3IpOwogfQogCi12b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFkZFBlbmRpbmdFdmVudHMoaW50IG4pCi17Ci0gICAg
bV9wZW5kaW5nRXZlbnRzICs9IG47Ci0gICAgQVNTRVJUKG1fcGVuZGluZ0V2ZW50cyA+PSAwKTsK
LX0KLQotdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkaWRDb21wbGV0ZVRhc2tFdmVu
dHMoKQotewotICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICBBU1NFUlQobV9wZW5kaW5nRXZl
bnRzKTsKLSAgICBtX3BlbmRpbmdFdmVudHMtLTsKLQotICAgIC8vIEEgc2luZ2xlIHRhc2sgaGFz
IGNvbXBsZXRlZCBhbmQgZXJyb3Ivc3VjY2VzcyBldmVudHMgZmlyZWQuIFNjaGVkdWxlCi0gICAg
Ly8gdGltZXIgdG8gcHJvY2VzcyBhbm90aGVyLgotICAgIGlmICghbV90YXNrRXZlbnRUaW1lci5p
c0FjdGl2ZSgpKQotICAgICAgICBtX3Rhc2tFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0K
LQogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpydW4oKQogewogICAgIC8vIFRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IgaGFzIHN0YXJ0ZWQgdGhpcyB0cmFuc2FjdGlvbi4gU2NoZWR1bGUg
YSB0aW1lcgpAQCAtMjExLDYgKzE5MCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bDo6Y29tbWl0KCkKICAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNv
bW1pdCIpOwogCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gUnVu
bmluZyk7CisgICAgbV9jb21taXRQZW5kaW5nID0gdHJ1ZTsKIAogICAgIC8vIEZyb250LWVuZCBo
YXMgcmVxdWVzdGVkIGEgY29tbWl0LCBidXQgdGhlcmUgbWF5IGJlIHRhc2tzIGxpa2UgY3JlYXRl
SW5kZXggd2hpY2gKICAgICAvLyBhcmUgY29uc2lkZXJlZCBzeW5jaHJvbm91cyBieSB0aGUgZnJv
bnQtZW5kIGJ1dCBhcmUgcHJvY2Vzc2VkIGFzeW5jaHJvbm91c2x5LgpAQCAtMjY5LDMxICsyNDks
MTYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZChUaW1l
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPioKICAgICB3aGlsZSAoIXRhc2tRdWV1ZS0+aXNF
bXB0eSgpICYmIG1fc3RhdGUgIT0gRmluaXNoZWQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gUnVubmluZyk7CiAgICAgICAgIE93blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PiB0YXNrKHRhc2tRdWV1ZS0+dGFrZUZpcnN0KCkpOwotICAgICAgICBtX3BlbmRpbmdFdmVudHMr
KzsKICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soMCk7CiAKICAgICAgICAgLy8gRXZlbnQgaXRz
ZWxmIG1heSBjaGFuZ2Ugd2hpY2ggcXVldWUgc2hvdWxkIGJlIHByb2Nlc3NlZCBuZXh0LgogICAg
ICAgICB0YXNrUXVldWUgPSBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzID8gJm1fcHJlZW1wdGl2
ZVRhc2tRdWV1ZSA6ICZtX3Rhc2tRdWV1ZTsKICAgICB9Ci19Ci0KLXZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsPiopCi17Ci0gICAgSURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Ojp0YXNrRXZlbnRUaW1lckZpcmVkIik7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gUnVubmluZyk7
CiAKLSAgICBpZiAoIWhhc1BlbmRpbmdUYXNrcygpKSB7Ci0gICAgICAgIC8vIFRoZSBsYXN0IHRh
c2sgZXZlbnQgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRhc2sKLSAgICAgICAgLy8gcXVldWUgaXMg
ZW1wdHkuIENvbW1pdCB0aGUgdHJhbnNhY3Rpb24uCisgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHBl
bmRpbmcgdGFza3MsIHdlIGhhdmVuJ3QgYWxyZWFkeSBjb21taXR0ZWQvYWJvcnRlZCwKKyAgICAv
LyBhbmQgdGhlIGZyb250LWVuZCByZXF1ZXN0ZWQgYSBjb21taXQsIGl0IGlzIG5vdyBzYWZlIHRv
IGRvIHNvLgorICAgIGlmICghaGFzUGVuZGluZ1Rhc2tzKCkgJiYgbV9zdGF0ZSAhPSBGaW5pc2hl
ZCAmJiBtX2NvbW1pdFBlbmRpbmcpCiAgICAgICAgIGNvbW1pdCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gV2UgYXJlIHN0aWxsIHdhaXRpbmcgZm9yIG90aGVyIGV2ZW50cyB0
byBjb21wbGV0ZS4gSG93ZXZlciwKLSAgICAvLyB0aGUgdGFzayBxdWV1ZSBpcyBub24tZW1wdHkg
YW5kIHRoZSB0aW1lciBpcyBpbmFjdGl2ZS4KLSAgICAvLyBXZSBjYW4gdGhlcmZvcmUgc2NoZWR1
bGUgdGhlIHRpbWVyIGFnYWluLgotICAgIGlmICghaXNUYXNrUXVldWVFbXB0eSgpICYmICFtX3Rh
c2tUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3Rhc2tUaW1lci5zdGFydE9uZVNob3QoMCk7
CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y2xvc2VPcGVuQ3Vyc29ycygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggODAzZWQwNzRhYmJhOTJjYjA3NjUwNWJiMGRj
NzhmMjk4ZjlkMTljYS4uMzE5YTljMTJmMzdiYWFkNGY2ZGM2ZTFlOThhYWQ5NzEzMjVjYzAyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNTMsNyArNTMsNiBAQCBwdWJsaWM6CiAKICAg
ICAvLyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShpbnQ2NF90LCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVGFza0V2ZW50cygp
OwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFj
a3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBtX2NhbGxiYWNrcyA9IGNh
bGxiYWNrczsgfQogCkBAIC02NCw3ICs2Myw2IEBAIHB1YmxpYzoKICAgICBib29sIHNjaGVkdWxl
VGFzayhUYXNrVHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwg
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBhYm9ydFRhc2sgPSBudWxs
cHRyKTsKICAgICB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCop
OwogICAgIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKTsK
LSAgICB2b2lkIGFkZFBlbmRpbmdFdmVudHMoaW50KTsKICAgICB2b2lkIGFkZFByZWVtcHRpdmVF
dmVudCgpIHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cysrOyB9CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVByZWVtcHRpdmVFdmVudCgpIHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cy0tOyBBU1NF
UlQobV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyA+PSAwKTsgfQogICAgIElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qIGJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkgeyByZXR1cm4gJm1fdHJh
bnNhY3Rpb247IH0KQEAgLTg2LDEzICs4NCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzUGVu
ZGluZ1Rhc2tzKCkgY29uc3Q7CiAKICAgICB2b2lkIHRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+Kik7Ci0gICAgdm9pZCB0YXNrRXZlbnRUaW1lckZpcmVkKFRp
bWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+Kik7CiAgICAgdm9pZCBjbG9zZU9wZW5DdXJz
b3JzKCk7CiAKICAgICBjb25zdCBWZWN0b3I8aW50NjRfdD4gbV9vYmplY3RTdG9yZUlkczsKICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOworICAg
IGJvb2wgbV9jb21taXRQZW5kaW5nOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNr
cz4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0
YWJhc2U7CiAKQEAgLTEwNSw5ICsxMDMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gRklYTUU6IGRl
bGV0ZSB0aGUgdGltZXIgb25jZSB3ZSBoYXZlIHRocmVhZHMgaW5zdGVhZC4KICAgICBUaW1lcjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBtX3Rhc2tUaW1lcjsKLSAgICBUaW1lcjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsPiBtX3Rhc2tFdmVudFRpbWVyOwogICAgIGludCBtX3BlbmRpbmdQ
cmVlbXB0aXZlRXZlbnRzOwotICAgIGludCBtX3BlbmRpbmdFdmVudHM7CiAKICAgICBIYXNoU2V0
PElEQkN1cnNvckJhY2tlbmRJbXBsKj4gbV9vcGVuQ3Vyc29yczsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDJmNGNmMzI3YTBiODE2OWZhYTUzN2Y0ZjVlMzVkNTkz
YjUxMWJjYTkuLmNjNzRkMTE1NjgxN2JhMzI4YTFjMWQ3OTZjNjEyYmIxZDUyYWI4ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gb2JqZWN0U3RvcmUoaW50NjRfdCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eS5jcHAKaW5kZXggNTcyOTYzYzEzNDkzNmQ2ODg2NWMyNmU5ZTlhMzMyNGVjODZmNDJh
Zi4uNmUwMTM0YzJhOWZhZDI2ODMwNjU5YThkYjQwOTczNmNhMDAxMTVmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5LmNwcApAQCAtNzIsMTEgKzcyLDYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eTo6YWJvcnQoKQogICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPmFib3J0KCk7CiB9CiAKLXZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmRpZENvbXBsZXRlVGFza0V2ZW50cygpCi17Ci0g
ICAgbV93ZWJJREJUcmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7Ci19Ci0KIHZv
aWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OnNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPnNldENh
bGxiYWNrcyhuZXcgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZFByb3h5LmgKaW5kZXggMGE2YTUzYjg0OWEwN2QyMWZlZTgzYmQ1ZGIzYmEyZTZkMTFmZjky
OS4uOGVhZDMxNjRjMmNjZDgwN2YwMWE1YjhhOGVkNjJmOWEyZWI2YjIxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eS5oCkBAIC00NCw3ICs0NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShpbnQ2NF90
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRh
c2tFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzKik7CiAKICAgICBXZWJJREJUcmFuc2FjdGlvbiogZ2V0V2ViSURC
VHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dlYklEQlRyYW5zYWN0aW9uLmdldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlv
bkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25J
bXBsLmNwcAppbmRleCA0MGQ3ZDc1NjMxNmMzYzMxZWE4YWJjNTQ0MDA5YTAwNjYyNjljMjQ1Li40
MWY0YzlkMjAzOWZhNDE0NzdlMTdlM2U3ZWFkODk0OTRjZTFhYTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTY1
LDExICs2NSw2IEBAIHZvaWQgV2ViSURCVHJhbnNhY3Rpb25JbXBsOjphYm9ydCgpCiAgICAgbV9i
YWNrZW5kLT5hYm9ydCgpOwogfQogCi12b2lkIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6ZGlkQ29t
cGxldGVUYXNrRXZlbnRzKCkKLXsKLSAgICBtX2JhY2tlbmQtPmRpZENvbXBsZXRlVGFza0V2ZW50
cygpOwotfQotCiB2b2lkIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6c2V0Q2FsbGJhY2tzKFdlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzPiBpZGJDYWxsYmFja3MgPSBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1By
b3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4IDBmYjY1Mzc2NzYzMTZj
ZTcwMGNmYmFjOGRlODk5M2NlYzY0NjZhNzcuLjQyNzJjYmUxMGIyNzEwMTFiMDc5MGZkODkwNjE2
ZmU0MzdhYTk4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QlRyYW5zYWN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QlRyYW5zYWN0aW9uSW1wbC5oCkBAIC00NCw3ICs0NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFdlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZShsb25nIGxvbmcgaW5kZXhJZCwgV2ViRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyop
OwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IGdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176298</attachid>
            <date>2012-11-27 10:42:04 -0800</date>
            <delta_ts>2012-11-27 14:47:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102984-20121127103940.patch</filename>
            <type>text/plain</type>
            <size>21175</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM5MmVmNDJkYTJhNDA2
ZDg3MmE5YTBjMzdiYjgxYWVlNDNmOWQ1NS4uMzdhODVlZTYxNDdmNjE2NDc0NDdlY2YzZGU4MTk1
NThkZGE5YzZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTExLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTaW1w
bGlmeSB0cmFuc2FjdGlvbiB0aW1lcnMgYW5kIGV2ZW50IHRyYWNraW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB0aGUgdHJhbnNhY3Rp
b24gImNvbW1pdCIgZGVjaXNpb24gaXMgbWFkZSBvbiB0aGUgZnJvbnQtZW5kLCB0aGUgYmFjayBl
bmQgbm8tbG9uZ2VyCisgICAgICAgIG5lZWRzIHRvIGJlIGF3YXJlIG9mIHdoZW4gaW5kaXZpZHVh
bCBJREJSZXF1ZXN0cyBoYXZlIGRpc3BhdGNoZWQgdG8gc2NyaXB0IG9yIHRyYWNrIHBlbmRpbmcK
KyAgICAgICAgZXZlbnRzIChleGNlcHQgZm9yIHByZWVtcHRpdmUgb25lcyBsaWtlIGNyZWF0ZUlu
ZGV4KS4gVGhpcyBhbHNvIGxldHMgdHdvIHRpbWVycyBiZSBjb2xsYXBzZWQKKyAgICAgICAgaW50
byBvbmUgd2hpY2ggc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIHRoZSBjb2RlIGZsb3cgaW4gSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC4KKworICAgICAgICBObyBuZXcgdGVzdHMgLSBqdXN0IHNp
bXBsaWZpY2F0aW9uLiBFeGVyY2lzZWQgYnkgc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
Ki5odG1sIGV0Yy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlSW50ZXJuYWwpOiBObyBtb3JlIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoUmVzZXQpOiBObyBtb3JlIHRyYWNraW5n
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0
U3RvcmVJbnRlcm5hbCk6IE5vIG1vcmUgdHJhY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsKTogTm8gbW9yZSB0
cmFja2luZy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnNldEluZGV4ZXNSZWFkeUludGVybmFsKTogTm8gbW9yZSB0cmFja2luZy4KKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwpOiBO
byBtb3JlIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6ZGVsZXRlSW5kZXhJbnRlcm5hbCk6IE5vIG1vcmUgdHJhY2tpbmcuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KTogT3JkZXIgbXVzdCBiZToKKyAgICAgICAgMS4gcmVxdWVz
dCBpcyB1bnJlZ2lzdGVyZWQgZnJvbSB0cmFuc2FjdGlvbiAoc28gcmVxdWVzdCBsaXN0IG1heSBi
ZSBlbXB0eSkKKyAgICAgICAgMi4gYWJvcnQgdHJhbnNhY3Rpb24gaWYgZXZlbnQgYmVpbmcgZGlz
cGF0Y2hlZCB3YXMgYW4gZXJyb3IKKyAgICAgICAgMy4gZGVhY3RpdmF0ZSB0cmFuc2FjdGlvbiAo
d2hpY2ggbWF5IGNvbW1pdCBpZiAjMSBsZWZ0IGl0IGVtcHR5IGFuZCAjMiBkaWRuJ3QgYWJvcnQp
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsKTogTmVlZCB0byB0cmFjayBpZiBjb21taXQKKyAgICAgICAgd2Fz
IHJlcXVlc3RlZDsgcHJldmlvdXNseSB0aGUgZnJvbnQgZW5kIHdvdWxkIGhhdmUgdHJpZ2dlcmVk
IGFuIGV2ZW50IHRpbWVyIHdoaWNoLCBvbgorICAgICAgICBjb21wbGV0aW9uLCB3b3VsZCBiZSB0
aGUgc2lnbmFsIHRoYXQgdGhlIGZyb250IGVuZCB3YXMgZmluaXNoZWQuCisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2spOiBTY2hlZHVsZSBh
IHRpbWVyIHRvIHNlcnZpY2UgdGhlIG5ldworICAgICAgICB0YXNrLCBpZiBuZWNlc3NhcnkuCisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphYm9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpoYXNQZW5kaW5nVGFza3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZp
cmVkKTogUGlja3MgdXAgImNvbW1pdCIgcmVzcG9uc2liaWxpdGllcworICAgICAgICBmcm9tIHRo
ZSBub3cgZGVsZXRlZCB0YXNrRXZlbnRUaW1lckZpcmVkLCBpZiBldmVyeXRoaW5nIGlzIHRydWx5
IGNvbXBsZXRlIGRvbmUuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U6OmRp
ZENvbXBsZXRlVGFza0V2ZW50cyk6IFJlbW92ZWQgZnJvbSBpbnRlcmZhY2UuCisKIDIwMTItMTEt
MjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gRml4IFF0IG1pbmltYWwgY29tcGlsYXRpb24gYWZ0ZXIgcjEzNTcxMy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2ViZDk3Y2Q1OThlOWQ4YmFjMjFhNjg2ZjVkYTc2Mjhl
OGRhMThhOS4uMjIxNGU2M2JjOTdmNDMyMmIwNmVhYmU3NTljZGRjMGYwODMyOWFkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0yMSAgSm9zaHVh
IEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU2ltcGxp
ZnkgdHJhbnNhY3Rpb24gdGltZXJzIGFuZCBldmVudCB0cmFja2luZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTg0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIG5vdy11bnVzZWQgZGlkQ29t
cGxldGVUYXNrRXZlbnRzKCkgbWV0aG9kLgorCisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHkuaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBz
cmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCVHJhbnNh
Y3Rpb25JbXBsLmg6CisKIDIwMTItMTEtMjYgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNYWtlIHVzZV9kZWZhdWx0X3JlbmRlcl90aGVtZSBj
b21waWxlIHRoZSByaWdodCBzZXQgb2YgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCBiNDk0
NGNhODk1YzhkMDJkMDE1NGUwNWQ2MTUzNjczMWMwNWEzY2M3Li4yMjM1N2Y4ZDRhODgyNjkwNTI0
N2Y2Y2I4ZTA3MmY3YjIyNTdiZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0xNzMsMTQgKzE3
MywxMiBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRzKGZvdW5kS2V5cy5z
aXplKCkgLSAxKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRjaChmb3VuZEtl
eXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKIH0KIAogdm9pZCBJREJDdXJzb3JC
YWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQ
cmVmZXRjaGVzKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZl
dGNoUmVzZXQiKTsKLSAgICBtX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRzKC11bnVzZWRQ
cmVmZXRjaGVzKTsKICAgICBtX2N1cnNvciA9IG1fc2F2ZWRDdXJzb3I7CiAgICAgbV9zYXZlZEN1
cnNvciA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMGRjODAyMTA5OGZlYTM4ZDUx
ZDhiOWI5YTc0NjU1ZjY1NmRmZTZhNi4uYWNlMTcwZTZhMDYzNWVmMDRmNDMzNTNlMTFjMTM4OTIz
NzI2NWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTIwMiw4ICsyMDIsNiBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosCiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotCi0gICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50
cygpOwogfQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IElEQkRhdGFi
YXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlKGludDY0X3QgaWQpCkBAIC0yMzIsNyArMjMwLDYg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZShpbnQ2NF90
IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
ZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBkYXRhYmFzZS0+bV9iYWNraW5nU3Rv
cmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBkYXRhYmFzZS0+aWQoKSwgb2JqZWN0U3RvcmUtPmlkKCkpOwotICAgIHRyYW5zYWN0aW9u
LT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJw
RGF0YWJhc2VDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcAppbmRleCA3NDcxY2FjNDdlN2I1NGZiNDc5ZDhjNTE5NjgxZjcxYmU2NjMzMjI5Li42
YTE0YWQ3OTIwYTZmZDY1ZTkzNmUxMTk5ZDU0OTQ1NDNkMjQyYjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmNwcApAQCAtMjY4LDcgKzI2OCw2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6c2V0SW5kZXhlc1JlYWR5SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
CiAgICAgT3duUHRyPFZlY3RvcjxpbnQ2NF90PiA+IGluZGV4SWRzID0gcG9wSW5kZXhJZHM7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleElkcy0+c2l6ZSgpOyArK2kpCiAgICAgICAg
IHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVByZWVtcHRpdmVFdmVudCgpOwotICAgIHRyYW5zYWN0
aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQ
dXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gcHJwVHJhbnNhY3Rpb24sIFBhc3NPd25Q
dHI8VmVjdG9yPGludDY0X3Q+ID4gcG9wSW5kZXhJZHMsIFBhc3NPd25QdHI8VmVjdG9yPEluZGV4
S2V5cz4gPiBwb3BJbmRleEtleXMpCkBAIC00MDcsOCArNDA2LDYgQEAgdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXMKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0KLSAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CiAK
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjppbmRleChpbnQ2NF90IGluZGV4SWQpCkBAIC00MzksNyArNDM2LDYgQEAgdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChpbnQ2NF90IGluZGV4SWQsIElE
QlRyYW5zYWN0aW9uQmFja2UKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRl
SW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFu
c2FjdGlvbikKIHsKICAgICBvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmRlbGV0ZUluZGV4
KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0
YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCkpOwotICAgIHRyYW5zYWN0
aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycFJhbmdlLCBJ
REJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFz
a1R5cGUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4
Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcAppbmRleCBlNGQxNjdmZmFkMGEzYjIxNTIwYTgxMDU0NDY4ZTQ5MmJkOTVkMjcy
Li4zY2U0YjFkY2Y1ODA4Y2NhYTViYzg1OGFmM2IxOWU1M2RmMmFmZDliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNzgsOSArNzgs
MTAgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fcHJldmVudFByb3BhZ2F0aW9u
KGZhbHNlKQogICAgICwgbV9yZXF1ZXN0U3RhdGUoY29udGV4dCkKIHsKLSAgICBpZiAobV90cmFu
c2FjdGlvbikgeworICAgIC8vIFJlcXVlc3RzIGFzc29jaWF0ZWQgd2l0aCBJREJGYWN0b3J5IChv
cGVuL2RlbGV0ZURhdGFiYXNlL2dldERhdGFiYXNlTmFtZXMpIGFyZSBub3QKKyAgICAvLyBhc3Nv
Y2lhdGVkIHdpdGggdHJhbnNhY3Rpb25zLgorICAgIGlmIChtX3RyYW5zYWN0aW9uKQogICAgICAg
ICBtX3RyYW5zYWN0aW9uLT5yZWdpc3RlclJlcXVlc3QodGhpcyk7Ci0gICAgfQogfQogCiBJREJS
ZXF1ZXN0Ojp+SURCUmVxdWVzdCgpCkBAIC01MDEsMzAgKzUwMiwyOSBAQCBib29sIElEQlJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAKICAgICBib29sIGRv
bnRQcmV2ZW50RGVmYXVsdCA9IElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goZXZlbnQuZ2V0
KCksIHRhcmdldHMpOwogCi0gICAgaWYgKG1fdHJhbnNhY3Rpb24gJiYgbV9yZWFkeVN0YXRlID09
IERPTkUpCi0gICAgICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0KHRoaXMpOwot
Ci0gICAgLy8gSWYgdGhpcyB3YXMgdGhlIGxhc3QgcmVxdWVzdCBpbiB0aGUgdHJhbnNhY3Rpb24n
cyBsaXN0LCBpdCBtYXkgY29tbWl0IGhlcmUuCi0gICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZl
KQotICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRBY3RpdmUoZmFsc2UpOwotCi0gICAgaWYgKGN1
cnNvclRvTm90aWZ5KQotICAgICAgICBjdXJzb3JUb05vdGlmeS0+cG9zdFN1Y2Nlc3NIYW5kbGVy
Q2FsbGJhY2soKTsKLQotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRE9ORSAmJiAoIWN1cnNvclRv
Tm90aWZ5IHx8IG1fY3Vyc29yRmluaXNoZWQpICYmIGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1l
cygpLnVwZ3JhZGVuZWVkZWRFdmVudCkKLSAgICAgICAgbV9oYXNQZW5kaW5nQWN0aXZpdHkgPSBm
YWxzZTsKLQogICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7CisgICAgICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gRE9ORSkKKyAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnVucmVnaXN0ZXJSZXF1ZXN0
KHRoaXMpOworCisgICAgICAgIC8vIFBvc3NpYmx5IGFib3J0IHRoZSB0cmFuc2FjdGlvbi4gVGhp
cyBtdXN0IG9jY3VyIGFmdGVyIHVucmVnaXN0ZXJpbmcgKHNvIHRoaXMgcmVxdWVzdAorICAgICAg
ICAvLyBkb2Vzbid0IHJlY2VpdmUgYSBzZWNvbmQgZXJyb3IpIGFuZCBiZWZvcmUgZGVhY3RpdmF0
aW5nICh3aGljaCBtaWdodCB0cmlnZ2VyIGNvbW1pdCkuCiAgICAgICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50ICYmIGRvbnRQcmV2ZW50RGVmYXVsdCAmJiAh
bV9yZXF1ZXN0QWJvcnRlZCkgewogICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0RXJyb3Io
bV9lcnJvcik7CiAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIHVudXNlZDsKICAgICAgICAgICAg
IG1fdHJhbnNhY3Rpb24tPmFib3J0KHVudXNlZCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
ZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KQotICAgICAgICAgICAg
bV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKKyAgICAg
ICAgLy8gSWYgdGhpcyB3YXMgdGhlIGxhc3QgcmVxdWVzdCBpbiB0aGUgdHJhbnNhY3Rpb24ncyBs
aXN0LCBpdCBtYXkgY29tbWl0IGhlcmUuCisgICAgICAgIGlmIChzZXRUcmFuc2FjdGlvbkFjdGl2
ZSkKKyAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7CiAgICAgfQog
CisgICAgaWYgKGN1cnNvclRvTm90aWZ5KQorICAgICAgICBjdXJzb3JUb05vdGlmeS0+cG9zdFN1
Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRE9ORSAm
JiAoIWN1cnNvclRvTm90aWZ5IHx8IG1fY3Vyc29yRmluaXNoZWQpICYmIGV2ZW50LT50eXBlKCkg
IT0gZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCkKKyAgICAgICAgbV9oYXNQZW5kaW5n
QWN0aXZpdHkgPSBmYWxzZTsKKwogICAgIHJldHVybiBkb250UHJldmVudERlZmF1bHQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggNTA1NDNkNWU4MTk5ZWYwNjE1ZjZhOGRm
ZWM1OWI3OGI3MTQ0YmZiZS4uODBjYzBlNDliZGJjYWE4MjI1NTgyNmRkOTI3ZDBlMTU0MmZiZTJm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTQ4LDEyICs0OCwxMSBAQCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZQogICAgIDogbV9vYmplY3RTdG9yZUlkcyhvYmplY3RTdG9yZUlk
cykKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9zdGF0ZShVbnVzZWQpCisgICAgLCBtX2Nv
bW1pdFBlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAgICwgbV90
cmFuc2FjdGlvbihkYXRhYmFzZS0+YmFja2luZ1N0b3JlKCkuZ2V0KCkpCiAgICAgLCBtX3Rhc2tU
aW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1RpbWVyRmlyZWQpCi0g
ICAgLCBtX3Rhc2tFdmVudFRpbWVyKHRoaXMsICZJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0
YXNrRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cygwKQot
ICAgICwgbV9wZW5kaW5nRXZlbnRzKDApCiB7CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25D
b29yZGluYXRvcigpLT5kaWRDcmVhdGVUcmFuc2FjdGlvbih0aGlzKTsKIH0KQEAgLTkxLDYgKzkw
LDggQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soVGFza1R5
cGUgdHlwZSwgUGFzc093blB0cjxTY3JpcHRFeGUKIAogICAgIGlmIChtX3N0YXRlID09IFVudXNl
ZCkKICAgICAgICAgc3RhcnQoKTsKKyAgICBlbHNlIGlmIChtX3N0YXRlID09IFJ1bm5pbmcgJiYg
IW1fdGFza1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTE1LDcgKzExNiw2IEBAIHZvaWQgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
PiBlcnJvcikKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hlZDsKICAgICBtX3Rhc2tUaW1lci5zdG9w
KCk7Ci0gICAgbV90YXNrRXZlbnRUaW1lci5zdG9wKCk7CiAKICAgICBpZiAod2FzUnVubmluZykK
ICAgICAgICAgbV90cmFuc2FjdGlvbi5yb2xsYmFjaygpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIGJv
b2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6aXNUYXNrUXVldWVFbXB0eSgpIGNvbnN0CiAK
IGJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6aGFzUGVuZGluZ1Rhc2tzKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wZW5kaW5nRXZlbnRzIHx8IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVu
dHMgfHwgIWlzVGFza1F1ZXVlRW1wdHkoKTsKKyAgICByZXR1cm4gbV9wZW5kaW5nUHJlZW1wdGl2
ZUV2ZW50cyB8fCAhaXNUYXNrUXVldWVFbXB0eSgpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCogY3Vy
c29yKQpAQCAtMTY2LDI3ICsxNjYsNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OnVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKiBjdXJzbwogICAgIG1f
b3BlbkN1cnNvcnMucmVtb3ZlKGN1cnNvcik7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50cyhpbnQgbikKLXsKLSAgICBtX3BlbmRpbmdFdmVudHMg
Kz0gbjsKLSAgICBBU1NFUlQobV9wZW5kaW5nRXZlbnRzID49IDApOwotfQotCi12b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cygpCi17Ci0gICAgaWYg
KG1fc3RhdGUgPT0gRmluaXNoZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX3N0
YXRlID09IFJ1bm5pbmcpOwotICAgIEFTU0VSVChtX3BlbmRpbmdFdmVudHMpOwotICAgIG1fcGVu
ZGluZ0V2ZW50cy0tOwotCi0gICAgLy8gQSBzaW5nbGUgdGFzayBoYXMgY29tcGxldGVkIGFuZCBl
cnJvci9zdWNjZXNzIGV2ZW50cyBmaXJlZC4gU2NoZWR1bGUKLSAgICAvLyB0aW1lciB0byBwcm9j
ZXNzIGFub3RoZXIuCi0gICAgaWYgKCFtX3Rhc2tFdmVudFRpbWVyLmlzQWN0aXZlKCkpCi0gICAg
ICAgIG1fdGFza0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCiB2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OnJ1bigpCiB7CiAgICAgLy8gVHJhbnNhY3Rpb25Db29yZGluYXRv
ciBoYXMgc3RhcnRlZCB0aGlzIHRyYW5zYWN0aW9uLiBTY2hlZHVsZSBhIHRpbWVyCkBAIC0yMTEs
NiArMTkwLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogICAg
IElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0Iik7CiAKICAgICBB
U1NFUlQobV9zdGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKKyAgICBtX2Nv
bW1pdFBlbmRpbmcgPSB0cnVlOwogCiAgICAgLy8gRnJvbnQtZW5kIGhhcyByZXF1ZXN0ZWQgYSBj
b21taXQsIGJ1dCB0aGVyZSBtYXkgYmUgdGFza3MgbGlrZSBjcmVhdGVJbmRleCB3aGljaAogICAg
IC8vIGFyZSBjb25zaWRlcmVkIHN5bmNocm9ub3VzIGJ5IHRoZSBmcm9udC1lbmQgYnV0IGFyZSBw
cm9jZXNzZWQgYXN5bmNocm9ub3VzbHkuCkBAIC0yNjksMzEgKzI0OSwxNiBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+KgogICAgIHdoaWxlICghdGFza1F1ZXVlLT5pc0VtcHR5KCkgJiYgbV9zdGF0
ZSAhPSBGaW5pc2hlZCkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKICAg
ICAgICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2sodGFza1F1ZXVl
LT50YWtlRmlyc3QoKSk7Ci0gICAgICAgIG1fcGVuZGluZ0V2ZW50cysrOwogICAgICAgICB0YXNr
LT5wZXJmb3JtVGFzaygwKTsKIAogICAgICAgICAvLyBFdmVudCBpdHNlbGYgbWF5IGNoYW5nZSB3
aGljaCBxdWV1ZSBzaG91bGQgYmUgcHJvY2Vzc2VkIG5leHQuCiAgICAgICAgIHRhc2tRdWV1ZSA9
IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMgPyAmbV9wcmVlbXB0aXZlVGFza1F1ZXVlIDogJm1f
dGFza1F1ZXVlOwogICAgIH0KLX0KLQotdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0
YXNrRXZlbnRUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KikKLXsK
LSAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVy
RmlyZWQiKTsKLSAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKIAotICAgIGlmICghaGFz
UGVuZGluZ1Rhc2tzKCkpIHsKLSAgICAgICAgLy8gVGhlIGxhc3QgdGFzayBldmVudCBoYXMgY29t
cGxldGVkIGFuZCB0aGUgdGFzawotICAgICAgICAvLyBxdWV1ZSBpcyBlbXB0eS4gQ29tbWl0IHRo
ZSB0cmFuc2FjdGlvbi4KKyAgICAvLyBJZiB0aGVyZSBhcmUgbm8gcGVuZGluZyB0YXNrcywgd2Ug
aGF2ZW4ndCBhbHJlYWR5IGNvbW1pdHRlZC9hYm9ydGVkLAorICAgIC8vIGFuZCB0aGUgZnJvbnQt
ZW5kIHJlcXVlc3RlZCBhIGNvbW1pdCwgaXQgaXMgbm93IHNhZmUgdG8gZG8gc28uCisgICAgaWYg
KCFoYXNQZW5kaW5nVGFza3MoKSAmJiBtX3N0YXRlICE9IEZpbmlzaGVkICYmIG1fY29tbWl0UGVu
ZGluZykKICAgICAgICAgY29tbWl0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBXZSBhcmUgc3RpbGwgd2FpdGluZyBmb3Igb3RoZXIgZXZlbnRzIHRvIGNvbXBsZXRlLiBIb3dl
dmVyLAotICAgIC8vIHRoZSB0YXNrIHF1ZXVlIGlzIG5vbi1lbXB0eSBhbmQgdGhlIHRpbWVyIGlz
IGluYWN0aXZlLgotICAgIC8vIFdlIGNhbiB0aGVyZm9yZSBzY2hlZHVsZSB0aGUgdGltZXIgYWdh
aW4uCi0gICAgaWYgKCFpc1Rhc2tRdWV1ZUVtcHR5KCkgJiYgIW1fdGFza1RpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIG1fdGFza1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjbG9zZU9wZW5DdXJzb3JzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwuaAppbmRleCA4MDNlZDA3NGFiYmE5MmNiMDc2NTA1YmIwZGM3OGYyOThmOWQxOWNhLi4z
MTlhOWMxMmYzN2JhYWQ0ZjZkYzZlMWU5OGFhZDk3MTMyNWNjMDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5oCkBAIC01Myw3ICs1Myw2IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGludDY0X3QsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiAgICAgdmlydHVhbCB2
b2lkIGFib3J0KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcyogY2FsbGJhY2tzKSB7IG1fY2FsbGJhY2tzID0gY2FsbGJhY2tzOyB9CiAKQEAg
LTY0LDcgKzYzLDYgQEAgcHVibGljOgogICAgIGJvb2wgc2NoZWR1bGVUYXNrKFRhc2tUeXBlLCBQ
YXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNzT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGFib3J0VGFzayA9IG51bGxwdHIpOwogICAgIHZvaWQg
cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopOwotICAgIHZvaWQgYWRkUGVu
ZGluZ0V2ZW50cyhpbnQpOwogICAgIHZvaWQgYWRkUHJlZW1wdGl2ZUV2ZW50KCkgeyBtX3BlbmRp
bmdQcmVlbXB0aXZlRXZlbnRzKys7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2
ZW50KCkgeyBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzLS07IEFTU0VSVChtX3BlbmRpbmdQcmVl
bXB0aXZlRXZlbnRzID49IDApOyB9CiAgICAgSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiog
YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSB7IHJldHVybiAmbV90cmFuc2FjdGlvbjsgfQpAQCAt
ODYsMTMgKzg0LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQZW5kaW5nVGFza3MoKSBjb25z
dDsKIAogICAgIHZvaWQgdGFza1RpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4qKTsKLSAgICB2b2lkIHRhc2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4qKTsKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKIAogICAgIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiBtX29iamVjdFN0b3JlSWRzOwogICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IG1fbW9kZTsKIAogICAgIFN0YXRlIG1fc3RhdGU7CisgICAgYm9vbCBtX2NvbW1pdFBl
bmRpbmc7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
ICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gbV9kYXRhYmFzZTsKIApAQCAtMTA1
LDkgKzEwMyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGSVhNRTogZGVsZXRlIHRoZSB0aW1lciBv
bmNlIHdlIGhhdmUgdGhyZWFkcyBpbnN0ZWFkLgogICAgIFRpbWVyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+IG1fdGFza1RpbWVyOwotICAgIFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw+IG1fdGFza0V2ZW50VGltZXI7CiAgICAgaW50IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHM7
Ci0gICAgaW50IG1fcGVuZGluZ0V2ZW50czsKIAogICAgIEhhc2hTZXQ8SURCQ3Vyc29yQmFja2Vu
ZEltcGwqPiBtX29wZW5DdXJzb3JzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
LmgKaW5kZXggMmY0Y2YzMjdhMGI4MTY5ZmFhNTM3ZjRmNWUzNWQ1OTNiNTExYmNhOS4uY2M3NGQx
MTU2ODE3YmEzMjhhMWMxZDc5NmM2MTJiYjFkNTJhYjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RT
dG9yZShpbnQ2NF90LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVRhc2tFdmVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENhbGxi
YWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcAppbmRl
eCA1NzI5NjNjMTM0OTM2ZDY4ODY1YzI2ZTllOWEzMzI0ZWM4NmY0MmFmLi42ZTAxMzRjMmE5ZmFk
MjY4MzA2NTlhOGRiNDA5NzM2Y2EwMDExNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwCkBAIC03Miwx
MSArNzIsNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjphYm9ydCgpCiAgICAg
bV93ZWJJREJUcmFuc2FjdGlvbi0+YWJvcnQoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eTo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkKLXsKLSAgICBtX3dlYklEQlRyYW5z
YWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKLX0KLQogdm9pZCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eTo6c2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCiB7CiAgICAgbV93ZWJJREJUcmFuc2FjdGlvbi0+c2V0Q2FsbGJhY2tzKG5ldyBXZWJJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAppbmRl
eCAwYTZhNTNiODQ5YTA3ZDIxZmVlODNiZDVkYjNiYTJlNmQxMWZmOTI5Li44ZWFkMzE2NGMyY2Nk
ODA3ZjAxYTViOGE4ZWQ2MmY5YTJlYjZiMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKQEAgLTQ0LDcgKzQ0
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlKGludDY0X3QsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0KCk7CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MqKTsKIAogICAgIFdlYklEQlRyYW5zYWN0aW9uKiBnZXRXZWJJREJUcmFuc2FjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fd2ViSURCVHJhbnNhY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCmluZGV4IDQw
ZDdkNzU2MzE2YzNjMzFlYThhYmM1NDQwMDlhMDA2NjI2OWMyNDUuLjQxZjRjOWQyMDM5ZmE0MTQ3
N2UxN2UzZTdlYWQ4OTQ5NGNlMWFhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNjUsMTEgKzY1LDYgQEAgdm9p
ZCBXZWJJREJUcmFuc2FjdGlvbkltcGw6OmFib3J0KCkKICAgICBtX2JhY2tlbmQtPmFib3J0KCk7
CiB9CiAKLXZvaWQgV2ViSURCVHJhbnNhY3Rpb25JbXBsOjpkaWRDb21wbGV0ZVRhc2tFdmVudHMo
KQotewotICAgIG1fYmFja2VuZC0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7Ci19Ci0KIHZvaWQg
V2ViSURCVHJhbnNhY3Rpb25JbXBsOjpzZXRDYWxsYmFja3MoV2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+
IGlkYkNhbGxiYWNrcyA9IElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9w
dFB0cihjYWxsYmFja3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCVHJhbnNhY3Rpb25JbXBsLmgKaW5kZXggMGZiNjUzNzY3NjMxNmNlNzAwY2ZiYWM4ZGU4OTkz
Y2VjNjQ2NmE3Ny4uNDI3MmNiZTEwYjI3MTAxMWIwNzkwZmQ4OTA2MTZmZTQzN2FhOTgyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBs
LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3Rv
cmUqIG9iamVjdFN0b3JlKGxvbmcgbG9uZyBpbmRleElkLCBXZWJFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q2FsbGJhY2tzKFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKik7CiAKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogZ2V0SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176343</attachid>
            <date>2012-11-27 14:47:54 -0800</date>
            <delta_ts>2012-11-27 15:09:05 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102984-20121127144530.patch</filename>
            <type>text/plain</type>
            <size>21293</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWU0ZmYwMDhiNTdlMjNj
MDY1NGJlYTY2YWY5YjJjZmE5MzEyMjNkMS4uMjQwMjY2NTA3Yzg5MmI0NWRmZGU4NDAxODBmYjQz
NmFmYmE1MjQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTExLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTaW1w
bGlmeSB0cmFuc2FjdGlvbiB0aW1lcnMgYW5kIGV2ZW50IHRyYWNraW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIE5vdyB0aGF0IHRoZSB0cmFuc2FjdGlvbiAi
Y29tbWl0IiBkZWNpc2lvbiBpcyBtYWRlIG9uIHRoZSBmcm9udC1lbmQsIHRoZSBiYWNrIGVuZCBu
by1sb25nZXIKKyAgICAgICAgbmVlZHMgdG8gYmUgYXdhcmUgb2Ygd2hlbiBpbmRpdmlkdWFsIElE
QlJlcXVlc3RzIGhhdmUgZGlzcGF0Y2hlZCB0byBzY3JpcHQgb3IgdHJhY2sgcGVuZGluZworICAg
ICAgICBldmVudHMgKGV4Y2VwdCBmb3IgcHJlZW1wdGl2ZSBvbmVzIGxpa2UgY3JlYXRlSW5kZXgp
LiBUaGlzIGFsc28gbGV0cyB0d28gdGltZXJzIGJlIGNvbGxhcHNlZAorICAgICAgICBpbnRvIG9u
ZSB3aGljaCBzaWduaWZpY2FudGx5IHNpbXBsaWZpZXMgdGhlIGNvZGUgZmxvdyBpbiBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGp1c3Qgc2ltcGxp
ZmljYXRpb24uIEV4ZXJjaXNlZCBieSBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi0qLmh0
bWwgZXRjLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNo
Q29udGludWVJbnRlcm5hbCk6IE5vIG1vcmUgdHJhY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6IE5vIG1vcmUgdHJhY2tpbmcuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZUludGVybmFsKTogTm8gbW9yZSB0cmFja2luZy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlSW50ZXJuYWwpOiBObyBtb3JlIHRyYWNr
aW5nLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c2V0
SW5kZXhlc1JlYWR5SW50ZXJuYWwpOiBObyBtb3JlIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbCk6IE5vIG1v
cmUgdHJhY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpkZWxldGVJbmRleEludGVybmFsKTogTm8gbW9yZSB0cmFja2luZy4KKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQpOiBPcmRlciBtdXN0IGJlOgorICAgICAgICAxLiByZXF1ZXN0IGlz
IHVucmVnaXN0ZXJlZCBmcm9tIHRyYW5zYWN0aW9uIChzbyByZXF1ZXN0IGxpc3QgbWF5IGJlIGVt
cHR5KQorICAgICAgICAyLiBhYm9ydCB0cmFuc2FjdGlvbiBpZiBldmVudCBiZWluZyBkaXNwYXRj
aGVkIHdhcyBhbiBlcnJvcgorICAgICAgICAzLiBkZWFjdGl2YXRlIHRyYW5zYWN0aW9uICh3aGlj
aCBtYXkgY29tbWl0IGlmICMxIGxlZnQgaXQgZW1wdHkgYW5kICMyIGRpZG4ndCBhYm9ydCkKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGwpOiBOZWVkIHRvIHRyYWNrIGlmIGNvbW1pdAorICAgICAgICB3YXMgcmVx
dWVzdGVkOyBwcmV2aW91c2x5IHRoZSBmcm9udCBlbmQgd291bGQgaGF2ZSB0cmlnZ2VyZWQgYW4g
ZXZlbnQgdGltZXIgd2hpY2gsIG9uCisgICAgICAgIGNvbXBsZXRpb24sIHdvdWxkIGJlIHRoZSBz
aWduYWwgdGhhdCB0aGUgZnJvbnQgZW5kIHdhcyBmaW5pc2hlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayk6IFNjaGVkdWxlIGEgdGlt
ZXIgdG8gc2VydmljZSB0aGUgbmV3CisgICAgICAgIHRhc2ssIGlmIG5lY2Vzc2FyeS4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6Omhhc1BlbmRpbmdUYXNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1RpbWVyRmlyZWQp
OiBQaWNrcyB1cCAiY29tbWl0IiByZXNwb25zaWJpbGl0aWVzCisgICAgICAgIGZyb20gdGhlIG5v
dyBkZWxldGVkIHRhc2tFdmVudFRpbWVyRmlyZWQsIGlmIGV2ZXJ5dGhpbmcgaXMgdHJ1bHkgY29t
cGxldGUgZG9uZS4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6ZGlkQ29t
cGxldGVUYXNrRXZlbnRzKTogUmVtb3ZlZCBmcm9tIGludGVyZmFjZS4KKwogMjAxMi0xMS0yNyAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBSZXBs
YWNlIHRvV2ViQ29yZVN0cmluZygpL3RvV2ViQ29yZUF0b21pY1N0cmluZygpIGluIENvZGVHZW5l
cmF0b3JWOC5wbSB3aXRoIFY4U3RyaW5nUmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggNjZkYWE2MzlkOWMzNTE5YTk5OGUyM2RlNDA0YzE5MTY5NTcwZjQ5NS4uMTlmMDA4NDFh
MmMyNzhhZmM1OTI3YTQ5MjViMGQwNDQzYjYwM2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0yMSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU2ltcGxpZnkgdHJhbnNhY3Rpb24gdGlt
ZXJzIGFuZCBldmVudCB0cmFja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAyOTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4K
KworICAgICAgICBSZW1vdmUgbm93LXVudXNlZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMoKSBtZXRo
b2QuCisKKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCVHJh
bnNhY3Rpb25CYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJUcmFuc2FjdGlvbklt
cGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaDoKKwogMjAxMi0x
MS0yNyAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gSW1wbGVtZW50IGZ1bGwtZmVhdHVyZWQgaW1hZ2UgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApp
bmRleCBiNDk0NGNhODk1YzhkMDJkMDE1NGUwNWQ2MTUzNjczMWMwNWEzY2M3Li4yMjM1N2Y4ZDRh
ODgyNjkwNTI0N2Y2Y2I4ZTA3MmY3YjIyNTdiZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0x
NzMsMTQgKzE3MywxMiBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRp
bnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRzKGZv
dW5kS2V5cy5zaXplKCkgLSAxKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRj
aChmb3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKIH0KIAogdm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGlu
dCB1bnVzZWRQcmVmZXRjaGVzKQogewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZElt
cGw6OnByZWZldGNoUmVzZXQiKTsKLSAgICBtX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRz
KC11bnVzZWRQcmVmZXRjaGVzKTsKICAgICBtX2N1cnNvciA9IG1fc2F2ZWRDdXJzb3I7CiAgICAg
bV9zYXZlZEN1cnNvciA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggODJjY2MzOTE5
YzdiODVmOTA3NzU1ZWVlZGZjODg2ZjY4Nzc5YzExNS4uMmNiZjliM2M4MWJiZjEwN2E5NWI3ZTli
YzI2YjllOGRmMTg1MDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTE4MCw4ICsxODAs
NiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRl
VGFza0V2ZW50cygpOwogfQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlKGludDY0X3QgaWQpCkBAIC0yMTAs
NyArMjA4LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9y
ZShpbnQ2NF90IGlkLCBJREJUcmFuc2FjdGlvbkJhY2tlbmQKIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikKIHsKICAgICBkYXRhYmFzZS0+bV9i
YWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwgb2JqZWN0U3RvcmUtPmlkKCkpOwotICAgIHRy
YW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGludDY0X3Qg
dmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwCmluZGV4IDc0NzFjYWM0N2U3YjU0ZmI0NzlkOGM1MTk2ODFmNzFiZTY2MzMyMjkuLjZh
MTRhZDc5MjBhNmZkNjVlOTM2ZTExOTlkNTQ5NDU0M2QyNDJiMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCkBAIC0yNjgsNyArMjY4LDYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpzZXRJbmRleGVzUmVhZHlJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwK
ICAgICBPd25QdHI8VmVjdG9yPGludDY0X3Q+ID4gaW5kZXhJZHMgPSBwb3BJbmRleElkczsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4SWRzLT5zaXplKCk7ICsraSkKICAgICAgICAg
dHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2ZW50KCk7Ci0gICAgdHJhbnNhY3Rp
b24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1
dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiBwcnBUcmFuc2FjdGlvbiwgUGFzc093blB0
cjxWZWN0b3I8aW50NjRfdD4gPiBwb3BJbmRleElkcywgUGFzc093blB0cjxWZWN0b3I8SW5kZXhL
ZXlzPiA+IHBvcEluZGV4S2V5cykKQEAgLTQwNyw4ICs0MDYsNiBAQCB2b2lkIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhcwogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLQotICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKIH0KIAog
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmluZGV4KGludDY0X3QgaW5kZXhJZCkKQEAgLTQzOSw3ICs0MzYsNiBAQCB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGludDY0X3QgaW5kZXhJZCwgSURC
VHJhbnNhY3Rpb25CYWNrZQogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJ
bmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5z
YWN0aW9uKQogewogICAgIG9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+ZGVsZXRlSW5kZXgo
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRh
YmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSk7Ci0gICAgdHJhbnNhY3Rp
b24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBy
cENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNr
VHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhj
ZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwCmluZGV4IDI3MzcwYjY5YjQxZWI3ODBhZDM1MzkwOTBmMDU1NjIzMmM2MDRjMDcu
LjAzYTExYjk0NDM4YmMwNzM5ZWFjNmRlMWNiYTFhMGU4MDFkMTJlZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC03OCw5ICs3OCwx
MCBAQCBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyYwogICAgICwgbV9wcmV2ZW50UHJvcGFnYXRpb24o
ZmFsc2UpCiAgICAgLCBtX3JlcXVlc3RTdGF0ZShjb250ZXh0KQogewotICAgIGlmIChtX3RyYW5z
YWN0aW9uKSB7CisgICAgLy8gUmVxdWVzdHMgYXNzb2NpYXRlZCB3aXRoIElEQkZhY3RvcnkgKG9w
ZW4vZGVsZXRlRGF0YWJhc2UvZ2V0RGF0YWJhc2VOYW1lcykgYXJlIG5vdAorICAgIC8vIGFzc29j
aWF0ZWQgd2l0aCB0cmFuc2FjdGlvbnMuCisgICAgaWYgKG1fdHJhbnNhY3Rpb24pCiAgICAgICAg
IG1fdHJhbnNhY3Rpb24tPnJlZ2lzdGVyUmVxdWVzdCh0aGlzKTsKLSAgICB9CiB9CiAKIElEQlJl
cXVlc3Q6On5JREJSZXF1ZXN0KCkKQEAgLTQ3NiwzMCArNDc3LDI5IEBAIGJvb2wgSURCUmVxdWVz
dDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogICAgIGJvb2wgZG9u
dFByZXZlbnREZWZhdWx0ID0gSURCRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQo
KSwgdGFyZ2V0cyk7CiAKLSAgICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX3JlYWR5U3RhdGUgPT0g
RE9ORSkKLSAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3QodGhpcyk7Ci0K
LSAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCByZXF1ZXN0IGluIHRoZSB0cmFuc2FjdGlvbidz
IGxpc3QsIGl0IG1heSBjb21taXQgaGVyZS4KLSAgICBpZiAoc2V0VHJhbnNhY3Rpb25BY3RpdmUp
Ci0gICAgICAgIG1fdHJhbnNhY3Rpb24tPnNldEFjdGl2ZShmYWxzZSk7Ci0KLSAgICBpZiAoY3Vy
c29yVG9Ob3RpZnkpCi0gICAgICAgIGN1cnNvclRvTm90aWZ5LT5wb3N0U3VjY2Vzc0hhbmRsZXJD
YWxsYmFjaygpOwotCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FICYmICghY3Vyc29yVG9O
b3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkgJiYgZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVz
KCkudXBncmFkZW5lZWRlZEV2ZW50KQotICAgICAgICBtX2hhc1BlbmRpbmdBY3Rpdml0eSA9IGZh
bHNlOwotCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fcmVhZHlTdGF0
ZSA9PSBET05FKQorICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+dW5yZWdpc3RlclJlcXVlc3Qo
dGhpcyk7CisKKyAgICAgICAgLy8gUG9zc2libHkgYWJvcnQgdGhlIHRyYW5zYWN0aW9uLiBUaGlz
IG11c3Qgb2NjdXIgYWZ0ZXIgdW5yZWdpc3RlcmluZyAoc28gdGhpcyByZXF1ZXN0CisgICAgICAg
IC8vIGRvZXNuJ3QgcmVjZWl2ZSBhIHNlY29uZCBlcnJvcikgYW5kIGJlZm9yZSBkZWFjdGl2YXRp
bmcgKHdoaWNoIG1pZ2h0IHRyaWdnZXIgY29tbWl0KS4KICAgICAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgJiYgZG9udFByZXZlbnREZWZhdWx0ICYmICFt
X3JlcXVlc3RBYm9ydGVkKSB7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5zZXRFcnJvciht
X2Vycm9yKTsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwogICAgICAgICAgICAg
bV90cmFuc2FjdGlvbi0+YWJvcnQodW51c2VkKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChl
dmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpCi0gICAgICAgICAgICBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCktPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOworICAgICAg
ICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCByZXF1ZXN0IGluIHRoZSB0cmFuc2FjdGlvbidzIGxp
c3QsIGl0IG1heSBjb21taXQgaGVyZS4KKyAgICAgICAgaWYgKHNldFRyYW5zYWN0aW9uQWN0aXZl
KQorICAgICAgICAgICAgbV90cmFuc2FjdGlvbi0+c2V0QWN0aXZlKGZhbHNlKTsKICAgICB9CiAK
KyAgICBpZiAoY3Vyc29yVG9Ob3RpZnkpCisgICAgICAgIGN1cnNvclRvTm90aWZ5LT5wb3N0U3Vj
Y2Vzc0hhbmRsZXJDYWxsYmFjaygpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBET05FICYm
ICghY3Vyc29yVG9Ob3RpZnkgfHwgbV9jdXJzb3JGaW5pc2hlZCkgJiYgZXZlbnQtPnR5cGUoKSAh
PSBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KQorICAgICAgICBtX2hhc1BlbmRpbmdB
Y3Rpdml0eSA9IGZhbHNlOworCiAgICAgcmV0dXJuIGRvbnRQcmV2ZW50RGVmYXVsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCA1YjczNWUyZTgxZjllNjNkZGI1NmZmM2Vi
YWIyNGFlOWMyYTJjYjkyLi43OGViN2QwYTRjY2EyZjUyYjQ1NDgwMzc3NmVmNzQwYmY4ODc3MWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtNDksMTIgKzQ5LDExIEBAIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwoaW50NjRfdCBp
ZCwgY29uc3QgVmVjdG9yPGluCiAgICAgLCBtX29iamVjdFN0b3JlSWRzKG9iamVjdFN0b3JlSWRz
KQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX3N0YXRlKFVudXNlZCkKKyAgICAsIG1fY29t
bWl0UGVuZGluZyhmYWxzZSkKICAgICAsIG1fZGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgLCBtX3Ry
YW5zYWN0aW9uKGRhdGFiYXNlLT5iYWNraW5nU3RvcmUoKS5nZXQoKSkKICAgICAsIG1fdGFza1Rp
bWVyKHRoaXMsICZJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZCkKLSAg
ICAsIG1fdGFza0V2ZW50VGltZXIodGhpcywgJklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRh
c2tFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzKDApCi0g
ICAgLCBtX3BlbmRpbmdFdmVudHMoMCkKIHsKICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNv
b3JkaW5hdG9yKCktPmRpZENyZWF0ZVRyYW5zYWN0aW9uKHRoaXMpOwogfQpAQCAtOTIsNiArOTEs
OCBAQCBib29sIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnNjaGVkdWxlVGFzayhUYXNrVHlw
ZSB0eXBlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZQogCiAgICAgaWYgKG1fc3RhdGUgPT0gVW51c2Vk
KQogICAgICAgICBzdGFydCgpOworICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gUnVubmluZyAmJiAh
bV90YXNrVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90
KDApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMTYsNyArMTE3LDYgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphYm9ydChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+
IGVycm9yKQogCiAgICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwogICAgIG1fdGFza1RpbWVyLnN0b3Ao
KTsKLSAgICBtX3Rhc2tFdmVudFRpbWVyLnN0b3AoKTsKIAogICAgIGlmICh3YXNSdW5uaW5nKQog
ICAgICAgICBtX3RyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgYm9v
bCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjppc1Rhc2tRdWV1ZUVtcHR5KCkgY29uc3QKIAog
Ym9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpoYXNQZW5kaW5nVGFza3MoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3BlbmRpbmdFdmVudHMgfHwgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50
cyB8fCAhaXNUYXNrUXVldWVFbXB0eSgpOworICAgIHJldHVybiBtX3BlbmRpbmdQcmVlbXB0aXZl
RXZlbnRzIHx8ICFpc1Rhc2tRdWV1ZUVtcHR5KCk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKiBjdXJz
b3IpCkBAIC0xNjcsMjcgKzE2Nyw2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
dW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqIGN1cnNvCiAgICAgbV9v
cGVuQ3Vyc29ycy5yZW1vdmUoY3Vyc29yKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsOjphZGRQZW5kaW5nRXZlbnRzKGludCBuKQotewotICAgIG1fcGVuZGluZ0V2ZW50cyAr
PSBuOwotICAgIEFTU0VSVChtX3BlbmRpbmdFdmVudHMgPj0gMCk7Ci19Ci0KLXZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkKLXsKLSAgICBpZiAo
bV9zdGF0ZSA9PSBGaW5pc2hlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fc3Rh
dGUgPT0gUnVubmluZyk7Ci0gICAgQVNTRVJUKG1fcGVuZGluZ0V2ZW50cyk7Ci0gICAgbV9wZW5k
aW5nRXZlbnRzLS07Ci0KLSAgICAvLyBBIHNpbmdsZSB0YXNrIGhhcyBjb21wbGV0ZWQgYW5kIGVy
cm9yL3N1Y2Nlc3MgZXZlbnRzIGZpcmVkLiBTY2hlZHVsZQotICAgIC8vIHRpbWVyIHRvIHByb2Nl
c3MgYW5vdGhlci4KLSAgICBpZiAoIW1fdGFza0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKLSAgICAg
ICAgbV90YXNrRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6cnVuKCkKIHsKICAgICAvLyBUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
IGhhcyBzdGFydGVkIHRoaXMgdHJhbnNhY3Rpb24uIFNjaGVkdWxlIGEgdGltZXIKQEAgLTIxMiw2
ICsxOTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCgpCiAgICAg
SURCX1RSQUNFKCJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQiKTsKIAogICAgIEFT
U0VSVChtX3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRlID09IFJ1bm5pbmcpOworICAgIG1fY29t
bWl0UGVuZGluZyA9IHRydWU7CiAKICAgICAvLyBGcm9udC1lbmQgaGFzIHJlcXVlc3RlZCBhIGNv
bW1pdCwgYnV0IHRoZXJlIG1heSBiZSB0YXNrcyBsaWtlIGNyZWF0ZUluZGV4IHdoaWNoCiAgICAg
Ly8gYXJlIGNvbnNpZGVyZWQgc3luY2hyb25vdXMgYnkgdGhlIGZyb250LWVuZCBidXQgYXJlIHBy
b2Nlc3NlZCBhc3luY2hyb25vdXNseS4KQEAgLTI3MCwzMSArMjUwLDE2IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1RpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4qCiAgICAgd2hpbGUgKCF0YXNrUXVldWUtPmlzRW1wdHkoKSAmJiBtX3N0YXRl
ICE9IEZpbmlzaGVkKSB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOwogICAg
ICAgICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzayh0YXNrUXVldWUt
PnRha2VGaXJzdCgpKTsKLSAgICAgICAgbV9wZW5kaW5nRXZlbnRzKys7CiAgICAgICAgIHRhc2st
PnBlcmZvcm1UYXNrKDApOwogCiAgICAgICAgIC8vIEV2ZW50IGl0c2VsZiBtYXkgY2hhbmdlIHdo
aWNoIHF1ZXVlIHNob3VsZCBiZSBwcm9jZXNzZWQgbmV4dC4KICAgICAgICAgdGFza1F1ZXVlID0g
bV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyA/ICZtX3ByZWVtcHRpdmVUYXNrUXVldWUgOiAmbV90
YXNrUXVldWU7CiAgICAgfQotfQotCi12b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRh
c2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qKQotewot
ICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza0V2ZW50VGltZXJG
aXJlZCIpOwotICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOwogCi0gICAgaWYgKCFoYXNQ
ZW5kaW5nVGFza3MoKSkgewotICAgICAgICAvLyBUaGUgbGFzdCB0YXNrIGV2ZW50IGhhcyBjb21w
bGV0ZWQgYW5kIHRoZSB0YXNrCi0gICAgICAgIC8vIHF1ZXVlIGlzIGVtcHR5LiBDb21taXQgdGhl
IHRyYW5zYWN0aW9uLgorICAgIC8vIElmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHRhc2tzLCB3ZSBo
YXZlbid0IGFscmVhZHkgY29tbWl0dGVkL2Fib3J0ZWQsCisgICAgLy8gYW5kIHRoZSBmcm9udC1l
bmQgcmVxdWVzdGVkIGEgY29tbWl0LCBpdCBpcyBub3cgc2FmZSB0byBkbyBzby4KKyAgICBpZiAo
IWhhc1BlbmRpbmdUYXNrcygpICYmIG1fc3RhdGUgIT0gRmluaXNoZWQgJiYgbV9jb21taXRQZW5k
aW5nKQogICAgICAgICBjb21taXQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IFdlIGFyZSBzdGlsbCB3YWl0aW5nIGZvciBvdGhlciBldmVudHMgdG8gY29tcGxldGUuIEhvd2V2
ZXIsCi0gICAgLy8gdGhlIHRhc2sgcXVldWUgaXMgbm9uLWVtcHR5IGFuZCB0aGUgdGltZXIgaXMg
aW5hY3RpdmUuCi0gICAgLy8gV2UgY2FuIHRoZXJmb3JlIHNjaGVkdWxlIHRoZSB0aW1lciBhZ2Fp
bi4KLSAgICBpZiAoIWlzVGFza1F1ZXVlRW1wdHkoKSAmJiAhbV90YXNrVGltZXIuaXNBY3RpdmUo
KSkKLSAgICAgICAgbV90YXNrVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmNsb3NlT3BlbkN1cnNvcnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5oCmluZGV4IGY2MzQ1NzA3ODQxYmJhNzE1YWFmYzg0YTAzZDcyNjI2MjYyZmY0NDYuLjA1
YWRhZTdkZmYyODM1YTEwZGMwMGNiYTk0MTQyYzNkMGY2NzA0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmgKQEAgLTUzLDcgKzUzLDYgQEAgcHVibGljOgogCiAgICAgLy8gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoaW50NjRfdCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgbV9jYWxsYmFja3MgPSBjYWxsYmFja3M7IH0KIApAQCAt
NjQsNyArNjMsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY2hlZHVsZVRhc2soVGFza1R5cGUsIFBh
c3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gYWJvcnRUYXNrID0gbnVsbHB0cik7CiAgICAgdm9pZCBy
ZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKik7Ci0gICAgdm9pZCBhZGRQZW5k
aW5nRXZlbnRzKGludCk7CiAgICAgdm9pZCBhZGRQcmVlbXB0aXZlRXZlbnQoKSB7IG1fcGVuZGlu
Z1ByZWVtcHRpdmVFdmVudHMrKzsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVQcmVlbXB0aXZlRXZl
bnQoKSB7IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMtLTsgQVNTRVJUKG1fcGVuZGluZ1ByZWVt
cHRpdmVFdmVudHMgPj0gMCk7IH0KICAgICBJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiBi
YWNraW5nU3RvcmVUcmFuc2FjdGlvbigpIHsgcmV0dXJuICZtX3RyYW5zYWN0aW9uOyB9CkBAIC04
Nyw3ICs4NSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQZW5kaW5nVGFza3MoKSBjb25zdDsK
IAogICAgIHZvaWQgdGFza1RpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bD4qKTsKLSAgICB2b2lkIHRhc2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4qKTsKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKIAogICAgIGNvbnN0
IGludDY0X3QgbV9pZDsKQEAgLTk1LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBtX21vZGU7CiAKICAgICBTdGF0ZSBtX3N0YXRlOworICAgIGJvb2wgbV9jb21t
aXRQZW5kaW5nOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IG1fZGF0YWJhc2U7CiAKQEAg
LTEwNyw5ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gRklYTUU6IGRlbGV0ZSB0aGUgdGlt
ZXIgb25jZSB3ZSBoYXZlIHRocmVhZHMgaW5zdGVhZC4KICAgICBUaW1lcjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsPiBtX3Rhc2tUaW1lcjsKLSAgICBUaW1lcjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsPiBtX3Rhc2tFdmVudFRpbWVyOwogICAgIGludCBtX3BlbmRpbmdQcmVlbXB0aXZlRXZl
bnRzOwotICAgIGludCBtX3BlbmRpbmdFdmVudHM7CiAKICAgICBIYXNoU2V0PElEQkN1cnNvckJh
Y2tlbmRJbXBsKj4gbV9vcGVuQ3Vyc29yczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZS5oCmluZGV4IDJmNGNmMzI3YTBiODE2OWZhYTUzN2Y0ZjVlMzVkNTkzYjUxMWJjYTkuLmNj
NzRkMTE1NjgxN2JhMzI4YTFjMWQ3OTZjNjEyYmIxZDUyYWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oCkBAIC01NCw3ICs1NCw2IEBAIHB1YmxpYzoKICAgICB9OwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2Jq
ZWN0U3RvcmUoaW50NjRfdCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRD
YWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAK
aW5kZXggNTcyOTYzYzEzNDkzNmQ2ODg2NWMyNmU5ZTlhMzMyNGVjODZmNDJhZi4uNmUwMTM0YzJh
OWZhZDI2ODMwNjU5YThkYjQwOTczNmNhMDAxMTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcApAQCAt
NzIsMTEgKzcyLDYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6YWJvcnQoKQog
ICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPmFib3J0KCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHk6OmRpZENvbXBsZXRlVGFza0V2ZW50cygpCi17Ci0gICAgbV93ZWJJREJU
cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7Ci19Ci0KIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHk6OnNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyog
Y2FsbGJhY2tzKQogewogICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPnNldENhbGxiYWNrcyhuZXcg
V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgK
aW5kZXggMGE2YTUzYjg0OWEwN2QyMWZlZTgzYmQ1ZGIzYmEyZTZkMTFmZjkyOS4uOGVhZDMxNjRj
MmNjZDgwN2YwMWE1YjhhOGVkNjJmOWEyZWI2YjIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCkBAIC00NCw3
ICs0NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZShpbnQ2NF90LCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpOwogICAgIHZpcnR1YWwg
dm9pZCBhYm9ydCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzKik7CiAKICAgICBXZWJJREJUcmFuc2FjdGlvbiogZ2V0V2ViSURCVHJhbnNhY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3dlYklEQlRyYW5zYWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRl
eCA0MGQ3ZDc1NjMxNmMzYzMxZWE4YWJjNTQ0MDA5YTAwNjYyNjljMjQ1Li40MWY0YzlkMjAzOWZh
NDE0NzdlMTdlM2U3ZWFkODk0OTRjZTFhYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTY1LDExICs2NSw2IEBA
IHZvaWQgV2ViSURCVHJhbnNhY3Rpb25JbXBsOjphYm9ydCgpCiAgICAgbV9iYWNrZW5kLT5hYm9y
dCgpOwogfQogCi12b2lkIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZl
bnRzKCkKLXsKLSAgICBtX2JhY2tlbmQtPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwotfQotCiB2
b2lkIFdlYklEQlRyYW5zYWN0aW9uSW1wbDo6c2V0Q2FsbGJhY2tzKFdlYklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzPiBpZGJDYWxsYmFja3MgPSBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUo
YWRvcHRQdHIoY2FsbGJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4IDBmYjY1Mzc2NzYzMTZjZTcwMGNmYmFjOGRl
ODk5M2NlYzY0NjZhNzcuLjQyNzJjYmUxMGIyNzEwMTFiMDc5MGZkODkwNjE2ZmU0MzdhYTk4MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9u
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9u
SW1wbC5oCkBAIC00NCw3ICs0NCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYklEQk9iamVj
dFN0b3JlKiBvYmplY3RTdG9yZShsb25nIGxvbmcgaW5kZXhJZCwgV2ViRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldENhbGxiYWNrcyhXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOwogCiAgICAgdmly
dHVhbCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGdldElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>