<?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>129741</bug_id>
          
          <creation_ts>2014-03-05 08:24:40 -0800</creation_ts>
          <short_desc>JSCell::m_gcData should encode its information differently</short_desc>
          <delta_ts>2014-03-05 15:27:43 -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>JavaScriptCore</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="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>987267</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 08:24:40 -0800</bug_when>
    <thetext>We want to keep track of three states for an object:

(1) Not marked (which implies not in the remembered set)
(2) Marked but not in the remembered set
(3) Marked and in the remembered set

Currently we only indicate marked vs. not marked in JSCell::m_gcData. During a write barrier, we only want to take the slow path if the object being stored to is in state (2). We&apos;d like to make the test for state (2) as fast as possible, which probably means making it a compare against 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987348</commentid>
    <comment_count>1</comment_count>
      <attachid>225902</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 12:11:52 -0800</bug_when>
    <thetext>Created attachment 225902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987351</commentid>
    <comment_count>2</comment_count>
      <attachid>225903</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 12:18:53 -0800</bug_when>
    <thetext>Created attachment 225903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987354</commentid>
    <comment_count>3</comment_count>
      <attachid>225905</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 12:29:01 -0800</bug_when>
    <thetext>Created attachment 225905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987361</commentid>
    <comment_count>4</comment_count>
      <attachid>225905</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-05 13:07:24 -0800</bug_when>
    <thetext>Comment on attachment 225905
Patch

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

r=me

Is speedup?

&gt; Source/JavaScriptCore/runtime/JSCell.h:150
&gt; +    void mark() { m_gcData = Marked; }

I would call this &quot;setMarked&quot;.

&gt; Source/JavaScriptCore/runtime/JSCell.h:151
&gt; +    void remember() { ASSERT(m_gcData == Marked); m_gcData = MarkedAndRemembered; }

&quot;setRemembered(true)&quot;

&gt; Source/JavaScriptCore/runtime/JSCell.h:152
&gt; +    void forget() { ASSERT(m_gcData == MarkedAndRemembered); m_gcData = Marked; }

&quot;setRemembered(false)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987397</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 14:33:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 225905 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225905&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; Is speedup?
No visible effect on benchmarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987415</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 15:27:43 -0800</bug_when>
    <thetext>Committed r165135: &lt;http://trac.webkit.org/changeset/165135&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225902</attachid>
            <date>2014-03-05 12:11:52 -0800</date>
            <delta_ts>2014-03-05 12:18:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129741-20140305121151.patch</filename>
            <type>text/plain</type>
            <size>23461</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MTE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE0LTAzLTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDZWxsOjptX2djRGF0YSBzaG91bGQgZW5jb2RlIGl0cyBpbmZvcm1hdGlvbiBk
aWZmZXJlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI5NzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2Ugd2FudCB0byBrZWVwIHRyYWNrIG9mIHRocmVlIEdDIHN0YXRlcyBmb3IgYW4gb2JqZWN0
OgorCisgICAgICAgIDEuIE5vdCBtYXJrZWQgKHdoaWNoIGltcGxpZXMgbm90IGluIHRoZSByZW1l
bWJlcmVkIHNldCkKKyAgICAgICAgMi4gTWFya2VkIGJ1dCBub3QgaW4gdGhlIHJlbWVtYmVyZWQg
c2V0CisgICAgICAgIDMuIE1hcmtlZCBhbmQgaW4gdGhlIHJlbWVtYmVyZWQgc2V0CisgICAgICAg
IAorICAgICAgICBDdXJyZW50bHkgd2Ugb25seSBpbmRpY2F0ZSBtYXJrZWQgdnMuIG5vdCBtYXJr
ZWQgaW4gSlNDZWxsOjptX2djRGF0YS4gRHVyaW5nIGEgd3JpdGUgCisgICAgICAgIGJhcnJpZXIs
IHdlIG9ubHkgd2FudCB0byB0YWtlIHRoZSBzbG93IHBhdGggaWYgdGhlIG9iamVjdCBiZWluZyBz
dG9yZWQgdG8gaXMgaW4gc3RhdGUgIzIuIAorICAgICAgICBXZSdkIGxpa2UgdG8gbWFrZSB0aGUg
dGVzdCBmb3Igc3RhdGUgIzIgYXMgZmFzdCBhcyBwb3NzaWJsZSwgd2hpY2ggbWVhbnMgbWFraW5n
IGl0IGEgCisgICAgICAgIGNvbXBhcmUgYWdhaW5zdCAwLgorCisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyV3JpdGVCYXJy
aWVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja01hcmtCeXRlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExW
TS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFsbG9jYXRlQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmVtaXRTdG9yZUJhcnJpZXIpOgor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyUmVtZW1i
ZXJlZFNldCk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZFRvUmVtZW1iZXJlZFNldCk6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmNoZWNrTWFya0J5dGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrTWFya0J5dGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGppdC9S
ZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c206CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpt
YXJrKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpyZW1lbWJlcik6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Zm9yZ2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc01hcmtlZCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNSZW1lbWJlcmVkKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURCbG9iLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6U3Ry
dWN0dXJlSURCbG9iKToKKwogMjAxNC0wMy0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFR3ZWFrIGFmdGVyIHIxNjUxMDkgdG8gYXZvaWQgZXh0cmEg
Y29waWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNjUxMTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzCiAjaWYgRU5BQkxFKEdHQykKIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2Fs
bEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKIHsKLSAgICBBc3Nl
bWJseUhlbHBlcnM6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGppdC5nZW5lcmljV3JpdGVC
YXJyaWVyKG93bmVyKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJOb3RNYXJrZWRP
ckFscmVhZHlSZW1lbWJlcmVkID0gaml0LmNoZWNrTWFya0J5dGUob3duZXIpOwogCiAgICAgLy8g
V2UgbmVlZCB0aGVzZSBleHRyYSBzbG90cyBiZWNhdXNlIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZSB3aWxsIHVzZSBwb2tlIG9uIHg4Ni4KICNpZiBDUFUoWDg2KQpAQCAtMTc5LDcgKzE3OSw3
IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBqaXQuYWRk
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKHZvaWQqKSAqIDMpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogI2VuZGlmCiAKLSAgICBkZWZpbml0
ZWx5Tm90TWFya2VkLmxpbmsoJmppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1l
bWJlcmVkLmxpbmsoJmppdCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNjUxMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzA5LDkgKzQ3MDksOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tu
b3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRl
ZmluaXRlbHlOb3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVk
ID0gY2hlY2tNYXJrQnl0ZShtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJp
ZXJCdWZmZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5v
dE1hcmtlZC5saW5rKCZtX2ppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJl
cmVkLmxpbmsoJm1faml0KTsKIAogICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgp
KSkKICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTQ3MjMsOSArNDcyMyw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihKU0NlbGwKICAgICBpZiAoIWlzS25v
d25DZWxsKHZhbHVlVXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZGVm
aW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBj
aGVja01hcmtCeXRlKG1faml0LCBvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZl
cihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxp
bmsoJm1faml0KTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygm
bV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAg
ICBpc05vdENlbGwubGluaygmbV9qaXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjUxMTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDQyLDkgKzUwNDIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJh
cnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAg
ICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8s
IHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgSklUQ29tcGlsZXI6
Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93
bmVyR1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJl
bWVtYmVyZWQgPSBjaGVja01hcmtCeXRlKG1faml0LCBvd25lckdQUik7CiAgICAgc3RvcmVUb1dy
aXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBkZWZp
bml0ZWx5Tm90TWFya2VkLmxpbmsoJm1faml0KTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFk
eVJlbWVtYmVyZWQubGluaygmbV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVz
ZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwpAQCAtNTA1Niw5ICs1
MDU2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2VsbAogICAgIGlm
ICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RN
YXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lcik7CisgICAgSklUQ29tcGls
ZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0
ZShtX2ppdCwgb3duZXIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIob3duZXIsIHNj
cmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5vdE1hcmtlZC5saW5rKCZtX2ppdCk7
CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKIAog
ICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxs
LmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjUxMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2OSwx
NSArNTQ2OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVCYXJyaWVyCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklU
OjpnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpCitK
SVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIG93bmVyKQogewotICAgIHJldHVybiBqaXQuYnJhbmNoVGVzdDgoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG93bmVyLCBKU0NlbGw6
OmdjRGF0YU9mZnNldCgpKSk7CisgICAgcmV0dXJuIGppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NE
YXRhT2Zmc2V0KCkpKTsKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omdl
bmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQ2VsbCogb3duZXIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBlcnMm
IGppdCwgSlNDZWxsKiBvd25lcikKIHsKICAgICB1aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4ob3duZXIpICsgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKTsKLSAgICBy
ZXR1cm4gaml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxl
cjo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICByZXR1cm4gaml0LmJyYW5jaFRlc3Q4
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNz
KGFkZHJlc3MpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmll
ckJ1ZmZlcihHUFJSZWcgY2VsbCwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCkBA
IC01NTM2LDE2ICs1NTM2LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihH
UFJSZWcKICAgICBpZiAoSGVhcDo6aXNNYXJrZWQodmFsdWUpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRl
QmFycmllcihtX2ppdCwgb3duZXJHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVyTm90
TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNoZWNrTWFya0J5dGUobV9qaXQsIG93bmVyR1BS
KTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpOwotICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQpOworICAgIG93bmVy
Tm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZC5saW5rKCZtX2ppdCk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNo
MSwgR1BSUmVnIHNjcmF0Y2gyKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlO
b3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7CisgICAgSklU
Q29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tN
YXJrQnl0ZShtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIo
b3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5vdE1hcmtlZC5s
aW5rKCZtX2ppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmso
Jm1faml0KTsKIH0KICNlbHNlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVCYXJy
aWVyKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjUxMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw4ICsyOTYs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKEdQUlJlZyBj
ZWxsLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAgICAgdm9pZCBzdG9yZVRv
V3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsbCosIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyKTsKIAotICAgIHN0YXRpYyBKSVRDb21waWxlcjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVy
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpOwotICAgIHN0YXRpYyBKSVRDb21waWxl
cjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBKU0NlbGwqIG93
bmVyKTsKKyAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAgY2hlY2tNYXJrQnl0ZShDQ2FsbEhl
bHBlcnMmIGppdCwgR1BSUmVnIG93bmVyKTsKKyAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAg
Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDZWxsKiBvd25lcik7CiAgICAgdm9p
ZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3Jh
dGNoMik7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBKU0NlbGwqIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjUx
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDA3OSw3ICs0MDc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9v
dXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50OChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgcmVz
dWx0LCBtX2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGUpOwogICAgICAgICBtX291dC5zdG9yZTgo
bV9vdXQuY29uc3RJbnQ4KHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpLCByZXN1bHQsIG1f
aGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlOChtX291dC5j
b25zdEludDgoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSwgcmVzdWx0
LCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKLSAgICAgICAgbV9vdXQuc3RvcmU4KG1f
b3V0LmNvbnN0SW50OCgwKSwgcmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF9nY0RhdGEpOworICAgICAg
ICBtX291dC5zdG9yZTgobV9vdXQuY29uc3RJbnQ4KEpTQ2VsbDo6Tm90TWFya2VkKSwgcmVzdWx0
LCBtX2hlYXBzLkpTQ2VsbF9nY0RhdGEpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CkBAIC01NDEwLDE2ICs1NDEwLDE2IEBAIHByaXZhdGU6CiAgICAgewogI2lmIEVO
QUJMRShHR0MpCiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiU3RvcmUgYmFycmllciBjb250aW51YXRpb24iKSk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGlzTWFya2VkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGlz
IG1hcmtlZCBibG9jayIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNNYXJrZWRBbmROb3RSZW1l
bWJlcmVkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGlzIG1hcmtlZCBi
bG9jayIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYnVmZmVySGFzU3BhY2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIlN0b3JlIGJhcnJpZXIgYnVmZmVyIGlzIGZ1bGwiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGJ1ZmZlcklzRnVsbCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RvcmUgYmFy
cmllciBidWZmZXIgaXMgZnVsbCIpKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgbWFyayBieXRl
LiAKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQuaXNaZXJvOChsb2Fk
TWFya0J5dGUoYmFzZSkpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShpc01hcmtlZCkp
OworICAgICAgICAgICAgbV9vdXQubm90WmVybzgobG9hZE1hcmtCeXRlKGJhc2UpKSwgdXN1YWxs
eShjb250aW51YXRpb24pLCByYXJlbHkoaXNNYXJrZWRBbmROb3RSZW1lbWJlcmVkKSk7CiAKICAg
ICAgICAgLy8gQXBwZW5kIHRvIHRoZSB3cml0ZSBiYXJyaWVyIGJ1ZmZlci4KLSAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc01hcmtlZCwgYnVmZmVySGFzU3Bh
Y2UpOworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTWFy
a2VkQW5kTm90UmVtZW1iZXJlZCwgYnVmZmVySGFzU3BhY2UpOwogICAgICAgICBMVmFsdWUgY3Vy
cmVudEJ1ZmZlckluZGV4ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgpLmhlYXAu
d3JpdGVCYXJyaWVyQnVmZmVyKCkubV9jdXJyZW50SW5kZXgpKTsKICAgICAgICAgTFZhbHVlIGJ1
ZmZlckNhcGFjaXR5ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgpLmhlYXAud3Jp
dGVCYXJyaWVyQnVmZmVyKCkubV9jYXBhY2l0eSkpOwogICAgICAgICBtX291dC5icmFuY2goCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTY1MTEyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
OCw4ICs2NjgsMTAgQEAgdm9pZCBIZWFwOjpjbGVhclJlbWVtYmVyZWRTZXQoVmVjdG9yPGNvbgog
ewogI2lmIEVOQUJMRShHR0MpCiAgICAgR0NQSEFTRShDbGVhclJlbWVtYmVyZWRTZXQpOwotICAg
IGZvciAoYXV0byBjZWxsIDogcmVtZW1iZXJlZFNldCkKKyAgICBmb3IgKGF1dG8gY2VsbCA6IHJl
bWVtYmVyZWRTZXQpIHsKICAgICAgICAgTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5jbGVh
clJlbWVtYmVyZWQoY2VsbCk7CisgICAgICAgIGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCktPmZv
cmdldCgpOworICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlbWVtYmVyZWRTZXQpOwog
I2VuZGlmCkBAIC04MjYsNiArODI4LDcgQEAgdm9pZCBIZWFwOjphZGRUb1JlbWVtYmVyZWRTZXQo
Y29uc3QgSlNDZQogICAgIGlmIChpc0luUmVtZW1iZXJlZFNldChjZWxsKSkKICAgICAgICAgcmV0
dXJuOwogICAgIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+c2V0UmVtZW1iZXJlZChjZWxs
KTsKKyAgICBjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLT5yZW1lbWJlcigpOwogICAgIG1fc2xv
dFZpc2l0b3IudW5jb25kaXRpb25hbGx5QXBwZW5kKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgJKHJldmlzaW9uIDE2NTExMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4Nyw5ICszODcsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsgfQogI2VuZGlmCiAKLSAgICBK
dW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyKQorICAgIEp1bXAgY2hlY2tNYXJr
Qnl0ZShHUFJSZWcgb3duZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDgoWmVy
bywgQWRkcmVzcyhvd25lciwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkpOworICAgICAgICByZXR1
cm4gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhvd25lciwgSlNDZWxsOjpnY0RhdGFPZmZz
ZXQoKSkpOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRv
dWJsZXMsIGFuZCBkb3VibGVzIGJveGVkIGFuZCBKU1ZhbHVlcy4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkocmV2aXNpb24gMTY1MTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzE0LDggKzMxNCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBlbnVtIFdyaXRlQmFycmllck1vZGUgeyBVbmNvbmRpdGlvbmFsV3JpdGVCYXJy
aWVyLCBTaG91bGRGaWx0ZXJWYWx1ZSwgU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlIH07CiAgICAg
ICAgIC8vIHZhbHVlIHJlZ2lzdGVyIGluIHdyaXRlIGJhcnJpZXIgaXMgdXNlZCBiZWZvcmUgYW55
IHNjcmF0Y2ggcmVnaXN0ZXJzCiAgICAgICAgIC8vIHNvIG1heSBzYWZlbHkgYmUgdGhlIHNhbWUg
YXMgZWl0aGVyIG9mIHRoZSBzY3JhdGNoIHJlZ2lzdGVycy4KLSAgICAgICAgSnVtcCBjaGVja01h
cmtXb3JkKFJlZ2lzdGVySUQgb3duZXIpOwotICAgICAgICBKdW1wIGNoZWNrTWFya1dvcmQoSlND
ZWxsKiBvd25lcik7CisgICAgICAgIEp1bXAgY2hlY2tNYXJrQnl0ZShSZWdpc3RlcklEIG93bmVy
KTsKKyAgICAgICAgSnVtcCBjaGVja01hcmtCeXRlKEpTQ2VsbCogb3duZXIpOwogICAgICAgICB2
b2lkIGVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0
ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3du
ZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0
V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE2NTExMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NzksMTUgKzg3OSwxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbml0X2dsb2JhbF9j
b25zdChJbnN0CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi1KSVQ6Okp1bXAgSklUOjpj
aGVja01hcmtXb3JkKFJlZ2lzdGVySUQgb3duZXIpCitKSVQ6Okp1bXAgSklUOjpjaGVja01hcmtC
eXRlKFJlZ2lzdGVySUQgb3duZXIpCiB7Ci0gICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEFk
ZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCkpKTsKKyAgICByZXR1cm4gYnJhbmNo
VGVzdDgoTm9uWmVybywgQWRkcmVzcyhvd25lciwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkpOwog
fQogCi1KSVQ6Okp1bXAgSklUOjpjaGVja01hcmtXb3JkKEpTQ2VsbCogb3duZXIpCitKSVQ6Okp1
bXAgSklUOjpjaGVja01hcmtCeXRlKEpTQ2VsbCogb3duZXIpCiB7CiAgICAgdWludDhfdCogYWRk
cmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG93bmVyKSArIEpTQ2VsbDo6Z2NEYXRh
T2Zmc2V0KCk7Ci0gICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEFic29sdXRlQWRkcmVzcyhh
ZGRyZXNzKSk7CisgICAgcmV0dXJuIGJyYW5jaFRlc3Q4KE5vblplcm8sIEFic29sdXRlQWRkcmVz
cyhhZGRyZXNzKSk7CiB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtOTA0LDkgKzkwNCw5IEBA
IHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmUKICAgICBpZiAobW9kZSA9
PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5j
aFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKTsKIAotICAgIEp1bXAgb3du
ZXJOb3RNYXJrZWQgPSBjaGVja01hcmtXb3JkKHJlZ1QwKTsKKyAgICBKdW1wIG93bmVyTm90TWFy
a2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNoZWNrTWFya0J5dGUocmVnVDApOwogICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgcmVnVDApOwotICAg
IG93bmVyTm90TWFya2VkLmxpbmsodGhpcyk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlS
ZW1lbWJlcmVkLmxpbmsodGhpcyk7CiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNl
QW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtOTUzLDkgKzk1
Myw5IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmUKICAgICBpZiAo
bW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2VsbCA9
IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KTsKIAotICAgIEp1bXAgb3duZXJOb3RNYXJrZWQgPSBjaGVja01hcmtXb3JkKHJlZ1QxKTsKKyAg
ICBKdW1wIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNoZWNrTWFya0J5dGUo
cmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVW5jb25kaXRpb25hbFdyaXRlQmFy
cmllciwgcmVnVDEpOwotICAgIG93bmVyTm90TWFya2VkLmxpbmsodGhpcyk7CisgICAgb3duZXJO
b3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmsodGhpcyk7CiAKICAgICBpZiAobW9kZSA9
PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2VsbC5saW5rKHRo
aXMpOwpAQCAtOTkzLDkgKzk5Myw5IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKEpTQ2Vs
bCogb3duZXIKIHsKICNpZiBFTkFCTEUoR0dDKQogICAgIGlmICghTWFya2VkQmxvY2s6OmJsb2Nr
Rm9yKG93bmVyKS0+aXNNYXJrZWQob3duZXIpKSB7Ci0gICAgICAgIEp1bXAgb3duZXJOb3RNYXJr
ZWQgPSBjaGVja01hcmtXb3JkKG93bmVyKTsKKyAgICAgICAgSnVtcCBvd25lck5vdE1hcmtlZE9y
QWxyZWFkeVJlbWVtYmVyZWQgPSBjaGVja01hcmtCeXRlKG93bmVyKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25VbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCBvd25lcik7Ci0gICAg
ICAgIG93bmVyTm90TWFya2VkLmxpbmsodGhpcyk7CisgICAgICAgIG93bmVyTm90TWFya2VkT3JB
bHJlYWR5UmVtZW1iZXJlZC5saW5rKHRoaXMpOwogICAgIH0gZWxzZQogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIG93bmVyKTsKICNlbHNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE2NTEx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgyNCw5ICs4MjQsOSBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgd3JpdGVC
YXJyaWVyCiAgICAgQVNTRVJUKG93bmVyICE9IHNjcmF0Y2gxKTsKICAgICBBU1NFUlQob3duZXIg
IT0gc2NyYXRjaDIpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1h
cmtlZCA9IERGRzo6U3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIoaml0LCBvd25l
cik7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1l
bWJlcmVkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tNYXJrQnl0ZShqaXQsIG93bmVyKTsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZl
cihqaXQsIG93bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGFsbG9jYXRvcik7Ci0gICAgZGVmaW5p
dGVseU5vdE1hcmtlZC5saW5rKCZqaXQpOworICAgIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVt
ZW1iZXJlZC5saW5rKCZqaXQpOwogICAgIHJldHVybiBjYWxsOwogfQogI2VuZGlmIC8vIEVOQUJM
RShHR0MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTY1MTEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTU0Myw4ICs1NDMsOCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQo
Y2VsbE9wZXJhbmQpCiAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihjZWxsT3BlcmFuZCwg
dDEpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0
MiwgLndyaXRlQmFycmllckRvbmUpCiAgICAgICAgIGNoZWNrTWFya0J5dGUodDIsIHQxLCB0Mywg
Ci0gICAgICAgICAgICBtYWNybyhtYXJrZWQpCi0gICAgICAgICAgICAgICAgYnRieiBtYXJrZWQs
IC53cml0ZUJhcnJpZXJEb25lCisgICAgICAgICAgICBtYWNybyhnY0RhdGEpCisgICAgICAgICAg
ICAgICAgYnRibnogZ2NEYXRhLCAud3JpdGVCYXJyaWVyRG9uZQogICAgICAgICAgICAgICAgIHB1
c2ggY2ZyLCBQQwogICAgICAgICAgICAgICAgICMgV2UgbWFrZSB0d28gZXh0cmEgc2xvdHMgYmVj
YXVzZSBjQ2FsbDIgd2lsbCBwb2tlLgogICAgICAgICAgICAgICAgIHN1YnAgOCwgc3AKQEAgLTU3
Nyw4ICs1NzcsOCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdCh2YWx1ZU9wCiAg
ICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MwogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDMKICAgICAgICAgY2hlY2tNYXJrQnl0ZSh0MywgdDEsIHQy
LAotICAgICAgICAgICAgbWFjcm8obWFya2VkKQotICAgICAgICAgICAgICAgIGJ0YnogbWFya2Vk
LCAud3JpdGVCYXJyaWVyRG9uZQorICAgICAgICAgICAgbWFjcm8oZ2NEYXRhKQorICAgICAgICAg
ICAgICAgIGJ0Ym56IGdjRGF0YSwgLndyaXRlQmFycmllckRvbmUKICAgICAgICAgICAgICAgICBw
dXNoIGNmciwgUEMKICAgICAgICAgICAgICAgICAjIFdlIG1ha2UgdHdvIGV4dHJhIHNsb3RzIGJl
Y2F1c2UgY0NhbGwyIHdpbGwgcG9rZS4KICAgICAgICAgICAgICAgICBzdWJwIDgsIHNwCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMTY1MTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM5NSw4ICsz
OTUsOCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoY2VsbE9wZXJhbmQpCiAgICAgICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbihjZWxsT3BlcmFuZCwgdDEpCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsKHQxLCB0MiwgLndyaXRlQmFycmllckRvbmUpCiAgICAgICAgIGNo
ZWNrTWFya0J5dGUodDIsIHQxLCB0MywgCi0gICAgICAgICAgICBtYWNybyhtYXJrZWQpCi0gICAg
ICAgICAgICAgICAgYnRieiBtYXJrZWQsIC53cml0ZUJhcnJpZXJEb25lCisgICAgICAgICAgICBt
YWNybyhnY0RhdGEpCisgICAgICAgICAgICAgICAgYnRibnogZ2NEYXRhLCAud3JpdGVCYXJyaWVy
RG9uZQogICAgICAgICAgICAgICAgIHB1c2ggUEIsIFBDCiAgICAgICAgICAgICAgICAgY0NhbGwy
Vm9pZChfbGxpbnRfd3JpdGVfYmFycmllcl9zbG93LCBjZnIsIHQyKQogICAgICAgICAgICAgICAg
IHBvcCBQQywgUEIKQEAgLTQyNiw4ICs0MjYsOCBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2Jh
bE9iamVjdCh2YWx1ZU9wCiAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MwogICAgICAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDMKICAgICAgICAgY2hlY2tN
YXJrQnl0ZSh0MywgdDEsIHQyLAotICAgICAgICAgICAgbWFjcm8obWFya2VkKQotICAgICAgICAg
ICAgICAgIGJ0YnogbWFya2VkLCAud3JpdGVCYXJyaWVyRG9uZQorICAgICAgICAgICAgbWFjcm8o
Z2NEYXRhKQorICAgICAgICAgICAgICAgIGJ0Ym56IGdjRGF0YSwgLndyaXRlQmFycmllckRvbmUK
ICAgICAgICAgICAgICAgICBwdXNoIFBCLCBQQwogICAgICAgICAgICAgICAgIGNDYWxsMlZvaWQo
X2xsaW50X3dyaXRlX2JhcnJpZXJfc2xvdywgY2ZyLCB0MykKICAgICAgICAgICAgICAgICBwb3Ag
UEMsIFBCCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNjUxMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQ0
OCwxNCArNDQ4LDcgQEAgbWFjcm8gYXJyYXlQcm9maWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIAog
ZW5kCiAKIG1hY3JvIGNoZWNrTWFya0J5dGUoY2VsbCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBjb250
aW51YXRpb24pCi0gICAgbW92ZSBjZWxsLCBzY3JhdGNoMQotICAgIG1vdmUgY2VsbCwgc2NyYXRj
aDIKLQotICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCBzY3JhdGNoMQotICAgIGFuZHAgfk1hcmtl
ZEJsb2NrTWFzaywgc2NyYXRjaDIKLQotICAgIHJzaGlmdHAgQXRvbU51bWJlclNoaWZ0ICsgQml0
TWFwV29yZFNoaWZ0LCBzY3JhdGNoMgotICAgIGxvYWRiIE1hcmtlZEJsb2NrOjptX21hcmtzW3Nj
cmF0Y2gxLCBzY3JhdGNoMiwgMV0sIHNjcmF0Y2gxCisgICAgbG9hZGIgSlNDZWxsOjptX2djRGF0
YVtjZWxsXSwgc2NyYXRjaDEKICAgICBjb250aW51YXRpb24oc2NyYXRjaDEpCiBlbmQKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDE2NTExMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsOCArMTQxLDI4IEBAIHB1YmxpYzoKIAogICAgIEpTVmFsdWUgZmFzdEdldE93blBy
b3BlcnR5KFZNJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIG1hcmsoKSB7IG1fZ2NEYXRh
ID0gMTsgfQotICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdCB7IHJldHVybiBtX2djRGF0YTsgfQor
ICAgIGVudW0gR0NEYXRhIDogdWludDhfdCB7CisgICAgICAgIE1hcmtlZCA9IDAsCisgICAgICAg
IE5vdE1hcmtlZCA9IDEsCisgICAgICAgIE1hcmtlZEFuZFJlbWVtYmVyZWQgPSAyLAorICAgIH07
CisKKyAgICB2b2lkIG1hcmsoKSB7IG1fZ2NEYXRhID0gTWFya2VkOyB9CisgICAgdm9pZCByZW1l
bWJlcigpIHsgQVNTRVJUKG1fZ2NEYXRhID09IE1hcmtlZCk7IG1fZ2NEYXRhID0gTWFya2VkQW5k
UmVtZW1iZXJlZDsgfQorICAgIHZvaWQgZm9yZ2V0KCkgeyBBU1NFUlQobV9nY0RhdGEgPT0gTWFy
a2VkQW5kUmVtZW1iZXJlZCk7IG1fZ2NEYXRhID0gTWFya2VkOyB9CisgICAgYm9vbCBpc01hcmtl
ZCgpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKG1fZ2NEYXRhKSB7CisgICAgICAgIGNh
c2UgTWFya2VkOgorICAgICAgICBjYXNlIE1hcmtlZEFuZFJlbWVtYmVyZWQ6CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBOb3RNYXJrZWQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBib29sIGlzUmVtZW1iZXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2NEYXRhID09IE1hcmtlZEFuZFJlbWVtYmVyZWQ7IH0KIAogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDE2
NTExMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGlubGlu
ZSBKU0NlbGw6OkpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKLSAgICA6IG1fZ2NEYXRhKDAp
CisgICAgOiBtX2djRGF0YShOb3RNYXJrZWQpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9u
VGhyZWFkKCkpOwogfQpAQCAtNDgsNyArNDgsNyBAQCBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0m
LCBTdHJ1Y3R1cmUqIHN0CiAgICAgLCBtX2luZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKQogICAgICwgbV90eXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpCiAgICAg
LCBtX2ZsYWdzKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkKLSAgICAs
IG1fZ2NEYXRhKDApCisgICAgLCBtX2djRGF0YShOb3RNYXJrZWQpCiB7CiAgICAgQVNTRVJUKCFp
c0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgJKHJldmlzaW9uIDE2NTExMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEQmxvYi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdS5maWVsZHMuaW5kZXhpbmdUeXBl
ID0gaW5kZXhpbmdUeXBlOwogICAgICAgICB1LmZpZWxkcy50eXBlID0gdHlwZUluZm8udHlwZSgp
OwogICAgICAgICB1LmZpZWxkcy5pbmxpbmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5pbmxpbmVUeXBl
RmxhZ3MoKTsKLSAgICAgICAgdS5maWVsZHMuZGVmYXVsdEdDRGF0YSA9IDA7CisgICAgICAgIHUu
ZmllbGRzLmRlZmF1bHRHQ0RhdGEgPSBKU0NlbGw6Ok5vdE1hcmtlZDsKICAgICB9CiAKICAgICB2
b2lkIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1cmVJREJsb2ImIG90aGVyKSB7IHUuZG91YmxlV29y
ZCA9IG90aGVyLnUuZG91YmxlV29yZDsgfQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZTsKICAgICAgICAgICAgIEpTVHlwZSB0
eXBlOwogICAgICAgICAgICAgVHlwZUluZm86OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxh
Z3M7Ci0gICAgICAgICAgICB1aW50OF90IGRlZmF1bHRHQ0RhdGE7CisgICAgICAgICAgICBKU0Nl
bGw6OkdDRGF0YSBkZWZhdWx0R0NEYXRhOwogICAgICAgICB9IGZpZWxkczsKICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgIGludDMyX3Qgd29yZDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225903</attachid>
            <date>2014-03-05 12:18:53 -0800</date>
            <delta_ts>2014-03-05 12:29:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129741-20140305121852.patch</filename>
            <type>text/plain</type>
            <size>23402</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE0LTAzLTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDZWxsOjptX2djRGF0YSBzaG91bGQgZW5jb2RlIGl0cyBpbmZvcm1hdGlvbiBk
aWZmZXJlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI5NzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2Ugd2FudCB0byBrZWVwIHRyYWNrIG9mIHRocmVlIEdDIHN0YXRlcyBmb3IgYW4gb2JqZWN0
OgorCisgICAgICAgIDEuIE5vdCBtYXJrZWQgKHdoaWNoIGltcGxpZXMgbm90IGluIHRoZSByZW1l
bWJlcmVkIHNldCkKKyAgICAgICAgMi4gTWFya2VkIGJ1dCBub3QgaW4gdGhlIHJlbWVtYmVyZWQg
c2V0CisgICAgICAgIDMuIE1hcmtlZCBhbmQgaW4gdGhlIHJlbWVtYmVyZWQgc2V0CisgICAgICAg
IAorICAgICAgICBDdXJyZW50bHkgd2Ugb25seSBpbmRpY2F0ZSBtYXJrZWQgdnMuIG5vdCBtYXJr
ZWQgaW4gSlNDZWxsOjptX2djRGF0YS4gRHVyaW5nIGEgd3JpdGUgCisgICAgICAgIGJhcnJpZXIs
IHdlIG9ubHkgd2FudCB0byB0YWtlIHRoZSBzbG93IHBhdGggaWYgdGhlIG9iamVjdCBiZWluZyBz
dG9yZWQgdG8gaXMgaW4gc3RhdGUgIzIuIAorICAgICAgICBXZSdkIGxpa2UgdG8gbWFrZSB0aGUg
dGVzdCBmb3Igc3RhdGUgIzIgYXMgZmFzdCBhcyBwb3NzaWJsZSwgd2hpY2ggbWVhbnMgbWFraW5n
IGl0IGEgCisgICAgICAgIGNvbXBhcmUgYWdhaW5zdCAwLgorCisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyV3JpdGVCYXJy
aWVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja01hcmtCeXRlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExW
TS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFsbG9jYXRlQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmVtaXRTdG9yZUJhcnJpZXIpOgor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyUmVtZW1i
ZXJlZFNldCk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZFRvUmVtZW1iZXJlZFNldCk6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmNoZWNrTWFya0J5dGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrTWFya0J5dGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGppdC9S
ZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c206CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpt
YXJrKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpyZW1lbWJlcik6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Zm9yZ2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc01hcmtlZCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNSZW1lbWJlcmVkKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURCbG9iLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6U3Ry
dWN0dXJlSURCbG9iKToKKwogMjAxNC0wMy0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFR3ZWFrIGFmdGVyIHIxNjUxMDkgdG8gYXZvaWQgZXh0cmEg
Y29waWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzCiAjaWYgRU5BQkxFKEdHQykKIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2Fs
bEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKIHsKLSAgICBBc3Nl
bWJseUhlbHBlcnM6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGppdC5nZW5lcmljV3JpdGVC
YXJyaWVyKG93bmVyKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJOb3RNYXJrZWRP
ckFscmVhZHlSZW1lbWJlcmVkID0gaml0LmNoZWNrTWFya0J5dGUob3duZXIpOwogCiAgICAgLy8g
V2UgbmVlZCB0aGVzZSBleHRyYSBzbG90cyBiZWNhdXNlIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZSB3aWxsIHVzZSBwb2tlIG9uIHg4Ni4KICNpZiBDUFUoWDg2KQpAQCAtMTc5LDcgKzE3OSw3
IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBqaXQuYWRk
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKHZvaWQqKSAqIDMpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogI2VuZGlmCiAKLSAgICBkZWZpbml0
ZWx5Tm90TWFya2VkLmxpbmsoJmppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1l
bWJlcmVkLmxpbmsoJmppdCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzA5LDkgKzQ3MDksOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tu
b3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRl
ZmluaXRlbHlOb3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVk
ID0gY2hlY2tNYXJrQnl0ZShtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJp
ZXJCdWZmZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5v
dE1hcmtlZC5saW5rKCZtX2ppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJl
cmVkLmxpbmsoJm1faml0KTsKIAogICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgp
KSkKICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTQ3MjMsOSArNDcyMyw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihKU0NlbGwKICAgICBpZiAoIWlzS25v
d25DZWxsKHZhbHVlVXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZGVm
aW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBj
aGVja01hcmtCeXRlKG1faml0LCBvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZl
cihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxp
bmsoJm1faml0KTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygm
bV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAg
ICBpc05vdENlbGwubGluaygmbV9qaXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDQyLDkgKzUwNDIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJh
cnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAg
ICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8s
IHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgSklUQ29tcGlsZXI6
Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93
bmVyR1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJl
bWVtYmVyZWQgPSBjaGVja01hcmtCeXRlKG1faml0LCBvd25lckdQUik7CiAgICAgc3RvcmVUb1dy
aXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBkZWZp
bml0ZWx5Tm90TWFya2VkLmxpbmsoJm1faml0KTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFk
eVJlbWVtYmVyZWQubGluaygmbV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVz
ZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwpAQCAtNTA1Niw5ICs1
MDU2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2VsbAogICAgIGlm
ICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RN
YXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lcik7CisgICAgSklUQ29tcGls
ZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0
ZShtX2ppdCwgb3duZXIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIob3duZXIsIHNj
cmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5vdE1hcmtlZC5saW5rKCZtX2ppdCk7
CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKIAog
ICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxs
LmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2OSwx
NSArNTQ2OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVCYXJyaWVyCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklU
OjpnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpCitK
SVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIG93bmVyKQogewotICAgIHJldHVybiBqaXQuYnJhbmNoVGVzdDgoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG93bmVyLCBKU0NlbGw6
OmdjRGF0YU9mZnNldCgpKSk7CisgICAgcmV0dXJuIGppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NE
YXRhT2Zmc2V0KCkpKTsKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omdl
bmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQ2VsbCogb3duZXIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBlcnMm
IGppdCwgSlNDZWxsKiBvd25lcikKIHsKICAgICB1aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4ob3duZXIpICsgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKTsKLSAgICBy
ZXR1cm4gaml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxl
cjo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICByZXR1cm4gaml0LmJyYW5jaFRlc3Q4
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNz
KGFkZHJlc3MpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmll
ckJ1ZmZlcihHUFJSZWcgY2VsbCwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCkBA
IC01NTM2LDE2ICs1NTM2LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihH
UFJSZWcKICAgICBpZiAoSGVhcDo6aXNNYXJrZWQodmFsdWUpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRl
QmFycmllcihtX2ppdCwgb3duZXJHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVyTm90
TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNoZWNrTWFya0J5dGUobV9qaXQsIG93bmVyR1BS
KTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpOwotICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQpOworICAgIG93bmVy
Tm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZC5saW5rKCZtX2ppdCk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNo
MSwgR1BSUmVnIHNjcmF0Y2gyKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlO
b3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7CisgICAgSklU
Q29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tN
YXJrQnl0ZShtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIo
b3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5vdE1hcmtlZC5s
aW5rKCZtX2ppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmso
Jm1faml0KTsKIH0KICNlbHNlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVCYXJy
aWVyKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw4ICsyOTYs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKEdQUlJlZyBj
ZWxsLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAgICAgdm9pZCBzdG9yZVRv
V3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsbCosIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyKTsKIAotICAgIHN0YXRpYyBKSVRDb21waWxlcjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVy
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpOwotICAgIHN0YXRpYyBKSVRDb21waWxl
cjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBKU0NlbGwqIG93
bmVyKTsKKyAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAgY2hlY2tNYXJrQnl0ZShDQ2FsbEhl
bHBlcnMmIGppdCwgR1BSUmVnIG93bmVyKTsKKyAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAg
Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDZWxsKiBvd25lcik7CiAgICAgdm9p
ZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3Jh
dGNoMik7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBKU0NlbGwqIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjUx
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDA3OSw3ICs0MDc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9v
dXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50OChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgcmVz
dWx0LCBtX2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGUpOwogICAgICAgICBtX291dC5zdG9yZTgo
bV9vdXQuY29uc3RJbnQ4KHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpLCByZXN1bHQsIG1f
aGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlOChtX291dC5j
b25zdEludDgoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSwgcmVzdWx0
LCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKLSAgICAgICAgbV9vdXQuc3RvcmU4KG1f
b3V0LmNvbnN0SW50OCgwKSwgcmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF9nY0RhdGEpOworICAgICAg
ICBtX291dC5zdG9yZTgobV9vdXQuY29uc3RJbnQ4KEpTQ2VsbDo6Tm90TWFya2VkKSwgcmVzdWx0
LCBtX2hlYXBzLkpTQ2VsbF9nY0RhdGEpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CkBAIC01NDEwLDE2ICs1NDEwLDE2IEBAIHByaXZhdGU6CiAgICAgewogI2lmIEVO
QUJMRShHR0MpCiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiU3RvcmUgYmFycmllciBjb250aW51YXRpb24iKSk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGlzTWFya2VkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGlz
IG1hcmtlZCBibG9jayIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNNYXJrZWRBbmROb3RSZW1l
bWJlcmVkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGlzIG1hcmtlZCBi
bG9jayIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYnVmZmVySGFzU3BhY2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIlN0b3JlIGJhcnJpZXIgYnVmZmVyIGlzIGZ1bGwiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGJ1ZmZlcklzRnVsbCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RvcmUgYmFy
cmllciBidWZmZXIgaXMgZnVsbCIpKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgbWFyayBieXRl
LiAKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQuaXNaZXJvOChsb2Fk
TWFya0J5dGUoYmFzZSkpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShpc01hcmtlZCkp
OworICAgICAgICAgICAgbV9vdXQubm90WmVybzgobG9hZE1hcmtCeXRlKGJhc2UpKSwgdXN1YWxs
eShjb250aW51YXRpb24pLCByYXJlbHkoaXNNYXJrZWRBbmROb3RSZW1lbWJlcmVkKSk7CiAKICAg
ICAgICAgLy8gQXBwZW5kIHRvIHRoZSB3cml0ZSBiYXJyaWVyIGJ1ZmZlci4KLSAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc01hcmtlZCwgYnVmZmVySGFzU3Bh
Y2UpOworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTWFy
a2VkQW5kTm90UmVtZW1iZXJlZCwgYnVmZmVySGFzU3BhY2UpOwogICAgICAgICBMVmFsdWUgY3Vy
cmVudEJ1ZmZlckluZGV4ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgpLmhlYXAu
d3JpdGVCYXJyaWVyQnVmZmVyKCkubV9jdXJyZW50SW5kZXgpKTsKICAgICAgICAgTFZhbHVlIGJ1
ZmZlckNhcGFjaXR5ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgpLmhlYXAud3Jp
dGVCYXJyaWVyQnVmZmVyKCkubV9jYXBhY2l0eSkpOwogICAgICAgICBtX291dC5icmFuY2goCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTY1MTE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
MCw2ICs2NzAsOCBAQCB2b2lkIEhlYXA6OmNsZWFyUmVtZW1iZXJlZFNldChWZWN0b3I8Y29uCiAg
ICAgR0NQSEFTRShDbGVhclJlbWVtYmVyZWRTZXQpOwogICAgIGZvciAoYXV0byogY2VsbCA6IHJl
bWVtYmVyZWRTZXQpCiAgICAgICAgIE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+Y2xlYXJS
ZW1lbWJlcmVkKGNlbGwpOworICAgICAgICBjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLT5mb3Jn
ZXQoKTsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZW1lbWJlcmVkU2V0KTsKICNl
bmRpZgpAQCAtODI2LDYgKzgyOCw3IEBAIHZvaWQgSGVhcDo6YWRkVG9SZW1lbWJlcmVkU2V0KGNv
bnN0IEpTQ2UKICAgICBpZiAoaXNJblJlbWVtYmVyZWRTZXQoY2VsbCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPnNldFJlbWVtYmVyZWQoY2VsbCk7
CisgICAgY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKS0+cmVtZW1iZXIoKTsKICAgICBtX3Nsb3RW
aXNpdG9yLnVuY29uZGl0aW9uYWxseUFwcGVuZChjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODcsOSArMzg3LDkgQEAgcHVibGljOgogICAg
IHZvaWQgaml0QXNzZXJ0QXJndW1lbnRDb3VudFNhbmUoKSB7IH0KICNlbmRpZgogCi0gICAgSnVt
cCBnZW5lcmljV3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lcikKKyAgICBKdW1wIGNoZWNrTWFya0J5
dGUoR1BSUmVnIG93bmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8s
IEFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCkpKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0
KCkpKTsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3Vi
bGVzLCBhbmQgZG91YmxlcyBib3hlZCBhbmQgSlNWYWx1ZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHJldmlzaW9uIDE2NTExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw4ICszMTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgZW51bSBXcml0ZUJhcnJpZXJNb2RlIHsgVW5jb25kaXRpb25hbFdyaXRlQmFycmll
ciwgU2hvdWxkRmlsdGVyVmFsdWUsIFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSB9OwogICAgICAg
ICAvLyB2YWx1ZSByZWdpc3RlciBpbiB3cml0ZSBiYXJyaWVyIGlzIHVzZWQgYmVmb3JlIGFueSBz
Y3JhdGNoIHJlZ2lzdGVycwogICAgICAgICAvLyBzbyBtYXkgc2FmZWx5IGJlIHRoZSBzYW1lIGFz
IGVpdGhlciBvZiB0aGUgc2NyYXRjaCByZWdpc3RlcnMuCi0gICAgICAgIEp1bXAgY2hlY2tNYXJr
V29yZChSZWdpc3RlcklEIG93bmVyKTsKLSAgICAgICAgSnVtcCBjaGVja01hcmtXb3JkKEpTQ2Vs
bCogb3duZXIpOworICAgICAgICBKdW1wIGNoZWNrTWFya0J5dGUoUmVnaXN0ZXJJRCBvd25lcik7
CisgICAgICAgIEp1bXAgY2hlY2tNYXJrQnl0ZShKU0NlbGwqIG93bmVyKTsKICAgICAgICAgdm9p
ZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVC
YXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVy
LCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdy
aXRlQmFycmllcihKU0NlbGwqIG93bmVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODc5LDE1ICs4NzksMTUgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5pdF9nbG9iYWxfY29u
c3QoSW5zdAogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotSklUOjpKdW1wIEpJVDo6Y2hl
Y2tNYXJrV29yZChSZWdpc3RlcklEIG93bmVyKQorSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrQnl0
ZShSZWdpc3RlcklEIG93bmVyKQogewotICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBBZGRy
ZXNzKG93bmVyLCBKU0NlbGw6OmdjRGF0YU9mZnNldCgpKSk7CisgICAgcmV0dXJuIGJyYW5jaFRl
c3Q4KE5vblplcm8sIEFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCkpKTsKIH0K
IAotSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29yZChKU0NlbGwqIG93bmVyKQorSklUOjpKdW1w
IEpJVDo6Y2hlY2tNYXJrQnl0ZShKU0NlbGwqIG93bmVyKQogewogICAgIHVpbnQ4X3QqIGFkZHJl
c3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvd25lcikgKyBKU0NlbGw6OmdjRGF0YU9m
ZnNldCgpOwotICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBBYnNvbHV0ZUFkZHJlc3MoYWRk
cmVzcykpOworICAgIHJldHVybiBicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3Mo
YWRkcmVzcykpOwogfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTkwNCw5ICs5MDQsOSBAQCB2
b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lCiAgICAgaWYgKG1vZGUgPT0g
U2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hU
ZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICBKdW1wIG93bmVy
Tm90TWFya2VkID0gY2hlY2tNYXJrV29yZChyZWdUMCk7CisgICAgSnVtcCBvd25lck5vdE1hcmtl
ZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBjaGVja01hcmtCeXRlKHJlZ1QwKTsKICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIHJlZ1QwKTsKLSAgICBv
d25lck5vdE1hcmtlZC5saW5rKHRoaXMpOworICAgIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVt
ZW1iZXJlZC5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFu
ZFZhbHVlKQogICAgICAgICBvd25lck5vdENlbGwubGluayh0aGlzKTsKQEAgLTk1Myw5ICs5NTMs
OSBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lCiAgICAgaWYgKG1v
ZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICBvd25lck5vdENlbGwgPSBi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
CiAKLSAgICBKdW1wIG93bmVyTm90TWFya2VkID0gY2hlY2tNYXJrV29yZChyZWdUMSk7CisgICAg
SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBjaGVja01hcmtCeXRlKHJl
Z1QxKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJp
ZXIsIHJlZ1QxKTsKLSAgICBvd25lck5vdE1hcmtlZC5saW5rKHRoaXMpOworICAgIG93bmVyTm90
TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZC5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1vZGUgPT0g
U2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICBvd25lck5vdENlbGwubGluayh0aGlz
KTsKQEAgLTk5Myw5ICs5OTMsOSBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihKU0NlbGwq
IG93bmVyCiB7CiAjaWYgRU5BQkxFKEdHQykKICAgICBpZiAoIU1hcmtlZEJsb2NrOjpibG9ja0Zv
cihvd25lciktPmlzTWFya2VkKG93bmVyKSkgewotICAgICAgICBKdW1wIG93bmVyTm90TWFya2Vk
ID0gY2hlY2tNYXJrV29yZChvd25lcik7CisgICAgICAgIEp1bXAgb3duZXJOb3RNYXJrZWRPckFs
cmVhZHlSZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0ZShvd25lcik7CiAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgb3duZXIpOwotICAgICAg
ICBvd25lck5vdE1hcmtlZC5saW5rKHRoaXMpOworICAgICAgICBvd25lck5vdE1hcmtlZE9yQWxy
ZWFkeVJlbWVtYmVyZWQubGluayh0aGlzKTsKICAgICB9IGVsc2UKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25VbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCBvd25lcik7CiAjZWxzZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjUxMTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MjQsOSArODI0LDkgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyOjpDYWxsIHdyaXRlQmFy
cmllcgogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoMSk7CiAgICAgQVNTRVJUKG93bmVyICE9
IHNjcmF0Y2gyKTsKIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJr
ZWQgPSBERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmljV3JpdGVCYXJyaWVyKGppdCwgb3duZXIp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVtZW1i
ZXJlZCA9IERGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrTWFya0J5dGUoaml0LCBvd25lcik7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIo
aml0LCBvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBhbGxvY2F0b3IpOwotICAgIGRlZmluaXRl
bHlOb3RNYXJrZWQubGluaygmaml0KTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVt
YmVyZWQubGluaygmaml0KTsKICAgICByZXR1cm4gY2FsbDsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
R0dDKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE2NTExOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5n
IGNvcHkpCkBAIC01NDMsOCArNTQzLDggQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKGNl
bGxPcGVyYW5kKQogICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oY2VsbE9wZXJhbmQsIHQx
KQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDIs
IC53cml0ZUJhcnJpZXJEb25lKQogICAgICAgICBjaGVja01hcmtCeXRlKHQyLCB0MSwgdDMsIAot
ICAgICAgICAgICAgbWFjcm8obWFya2VkKQotICAgICAgICAgICAgICAgIGJ0YnogbWFya2VkLCAu
d3JpdGVCYXJyaWVyRG9uZQorICAgICAgICAgICAgbWFjcm8oZ2NEYXRhKQorICAgICAgICAgICAg
ICAgIGJ0Ym56IGdjRGF0YSwgLndyaXRlQmFycmllckRvbmUKICAgICAgICAgICAgICAgICBwdXNo
IGNmciwgUEMKICAgICAgICAgICAgICAgICAjIFdlIG1ha2UgdHdvIGV4dHJhIHNsb3RzIGJlY2F1
c2UgY0NhbGwyIHdpbGwgcG9rZS4KICAgICAgICAgICAgICAgICBzdWJwIDgsIHNwCkBAIC01Nzcs
OCArNTc3LDggQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3QodmFsdWVPcAogICAg
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDMKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbE9iamVjdFt0M10sIHQzCiAgICAgICAgIGNoZWNrTWFya0J5dGUodDMsIHQxLCB0MiwK
LSAgICAgICAgICAgIG1hY3JvKG1hcmtlZCkKLSAgICAgICAgICAgICAgICBidGJ6IG1hcmtlZCwg
LndyaXRlQmFycmllckRvbmUKKyAgICAgICAgICAgIG1hY3JvKGdjRGF0YSkKKyAgICAgICAgICAg
ICAgICBidGJueiBnY0RhdGEsIC53cml0ZUJhcnJpZXJEb25lCiAgICAgICAgICAgICAgICAgcHVz
aCBjZnIsIFBDCiAgICAgICAgICAgICAgICAgIyBXZSBtYWtlIHR3byBleHRyYSBzbG90cyBiZWNh
dXNlIGNDYWxsMiB3aWxsIHBva2UuCiAgICAgICAgICAgICAgICAgc3VicCA4LCBzcApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDE2NTExOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsOCArMzk1
LDggQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKGNlbGxPcGVyYW5kKQogICAgICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oY2VsbE9wZXJhbmQsIHQxKQogICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbCh0MSwgdDIsIC53cml0ZUJhcnJpZXJEb25lKQogICAgICAgICBjaGVj
a01hcmtCeXRlKHQyLCB0MSwgdDMsIAotICAgICAgICAgICAgbWFjcm8obWFya2VkKQotICAgICAg
ICAgICAgICAgIGJ0YnogbWFya2VkLCAud3JpdGVCYXJyaWVyRG9uZQorICAgICAgICAgICAgbWFj
cm8oZ2NEYXRhKQorICAgICAgICAgICAgICAgIGJ0Ym56IGdjRGF0YSwgLndyaXRlQmFycmllckRv
bmUKICAgICAgICAgICAgICAgICBwdXNoIFBCLCBQQwogICAgICAgICAgICAgICAgIGNDYWxsMlZv
aWQoX2xsaW50X3dyaXRlX2JhcnJpZXJfc2xvdywgY2ZyLCB0MikKICAgICAgICAgICAgICAgICBw
b3AgUEMsIFBCCkBAIC00MjYsOCArNDI2LDggQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxP
YmplY3QodmFsdWVPcAogICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDMKICAgICAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0M10sIHQzCiAgICAgICAgIGNoZWNrTWFy
a0J5dGUodDMsIHQxLCB0MiwKLSAgICAgICAgICAgIG1hY3JvKG1hcmtlZCkKLSAgICAgICAgICAg
ICAgICBidGJ6IG1hcmtlZCwgLndyaXRlQmFycmllckRvbmUKKyAgICAgICAgICAgIG1hY3JvKGdj
RGF0YSkKKyAgICAgICAgICAgICAgICBidGJueiBnY0RhdGEsIC53cml0ZUJhcnJpZXJEb25lCiAg
ICAgICAgICAgICAgICAgcHVzaCBQQiwgUEMKICAgICAgICAgICAgICAgICBjQ2FsbDJWb2lkKF9s
bGludF93cml0ZV9iYXJyaWVyX3Nsb3csIGNmciwgdDMpCiAgICAgICAgICAgICAgICAgcG9wIFBD
LCBQQgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTY1MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NDgs
MTQgKzQ0OCw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZShjZWxsQW5kSW5kZXhpbmdUeXBlLCAKIGVu
ZAogCiBtYWNybyBjaGVja01hcmtCeXRlKGNlbGwsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgY29udGlu
dWF0aW9uKQotICAgIG1vdmUgY2VsbCwgc2NyYXRjaDEKLSAgICBtb3ZlIGNlbGwsIHNjcmF0Y2gy
Ci0KLSAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgc2NyYXRjaDEKLSAgICBhbmRwIH5NYXJrZWRC
bG9ja01hc2ssIHNjcmF0Y2gyCi0KLSAgICByc2hpZnRwIEF0b21OdW1iZXJTaGlmdCArIEJpdE1h
cFdvcmRTaGlmdCwgc2NyYXRjaDIKLSAgICBsb2FkYiBNYXJrZWRCbG9jazo6bV9tYXJrc1tzY3Jh
dGNoMSwgc2NyYXRjaDIsIDFdLCBzY3JhdGNoMQorICAgIGxvYWRiIEpTQ2VsbDo6bV9nY0RhdGFb
Y2VsbF0sIHNjcmF0Y2gxCiAgICAgY29udGludWF0aW9uKHNjcmF0Y2gxKQogZW5kCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxNjUxMTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQxLDggKzE0MSwyOCBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9w
ZXJ0eShWTSYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBtYXJrKCkgeyBtX2djRGF0YSA9
IDE7IH0KLSAgICBib29sIGlzTWFya2VkKCkgY29uc3QgeyByZXR1cm4gbV9nY0RhdGE7IH0KKyAg
ICBlbnVtIEdDRGF0YSA6IHVpbnQ4X3QgeworICAgICAgICBNYXJrZWQgPSAwLAorICAgICAgICBO
b3RNYXJrZWQgPSAxLAorICAgICAgICBNYXJrZWRBbmRSZW1lbWJlcmVkID0gMiwKKyAgICB9Owor
CisgICAgdm9pZCBtYXJrKCkgeyBtX2djRGF0YSA9IE1hcmtlZDsgfQorICAgIHZvaWQgcmVtZW1i
ZXIoKSB7IEFTU0VSVChtX2djRGF0YSA9PSBNYXJrZWQpOyBtX2djRGF0YSA9IE1hcmtlZEFuZFJl
bWVtYmVyZWQ7IH0KKyAgICB2b2lkIGZvcmdldCgpIHsgQVNTRVJUKG1fZ2NEYXRhID09IE1hcmtl
ZEFuZFJlbWVtYmVyZWQpOyBtX2djRGF0YSA9IE1hcmtlZDsgfQorICAgIGJvb2wgaXNNYXJrZWQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX2djRGF0YSkgeworICAgICAgICBjYXNl
IE1hcmtlZDoKKyAgICAgICAgY2FzZSBNYXJrZWRBbmRSZW1lbWJlcmVkOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgTm90TWFya2VkOgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYm9vbCBpc1JlbWVtYmVyZWQoKSBj
b25zdCB7IHJldHVybiBtX2djRGF0YSA9PSBNYXJrZWRBbmRSZW1lbWJlcmVkOyB9CiAKICAgICBz
dGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNjUx
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUg
SlNDZWxsOjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCi0gICAgOiBtX2djRGF0YSgwKQor
ICAgIDogbV9nY0RhdGEoTm90TWFya2VkKQogewogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRo
cmVhZCgpKTsKIH0KQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKFZNJiwg
U3RydWN0dXJlKiBzdAogICAgICwgbV9pbmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSkKICAgICAsIG1fdHlwZShzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKQogICAgICwg
bV9mbGFncyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpCi0gICAgLCBt
X2djRGF0YSgwKQorICAgICwgbV9nY0RhdGEoTm90TWFya2VkKQogewogICAgIEFTU0VSVCghaXND
b21waWxhdGlvblRocmVhZCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlEQmxvYi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEQmxvYi5oCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHUuZmllbGRzLmluZGV4aW5nVHlwZSA9
IGluZGV4aW5nVHlwZTsKICAgICAgICAgdS5maWVsZHMudHlwZSA9IHR5cGVJbmZvLnR5cGUoKTsK
ICAgICAgICAgdS5maWVsZHMuaW5saW5lVHlwZUZsYWdzID0gdHlwZUluZm8uaW5saW5lVHlwZUZs
YWdzKCk7Ci0gICAgICAgIHUuZmllbGRzLmRlZmF1bHRHQ0RhdGEgPSAwOworICAgICAgICB1LmZp
ZWxkcy5kZWZhdWx0R0NEYXRhID0gSlNDZWxsOjpOb3RNYXJrZWQ7CiAgICAgfQogCiAgICAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlSURCbG9iJiBvdGhlcikgeyB1LmRvdWJsZVdvcmQg
PSBvdGhlci51LmRvdWJsZVdvcmQ7IH0KQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU7CiAgICAgICAgICAgICBKU1R5cGUgdHlw
ZTsKICAgICAgICAgICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZsYWdz
OwotICAgICAgICAgICAgdWludDhfdCBkZWZhdWx0R0NEYXRhOworICAgICAgICAgICAgSlNDZWxs
OjpHQ0RhdGEgZGVmYXVsdEdDRGF0YTsKICAgICAgICAgfSBmaWVsZHM7CiAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICBpbnQzMl90IHdvcmQxOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225905</attachid>
            <date>2014-03-05 12:29:01 -0800</date>
            <delta_ts>2014-03-05 13:07:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129741-20140305122901.patch</filename>
            <type>text/plain</type>
            <size>23463</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE0LTAzLTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDZWxsOjptX2djRGF0YSBzaG91bGQgZW5jb2RlIGl0cyBpbmZvcm1hdGlvbiBk
aWZmZXJlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI5NzQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2Ugd2FudCB0byBrZWVwIHRyYWNrIG9mIHRocmVlIEdDIHN0YXRlcyBmb3IgYW4gb2JqZWN0
OgorCisgICAgICAgIDEuIE5vdCBtYXJrZWQgKHdoaWNoIGltcGxpZXMgbm90IGluIHRoZSByZW1l
bWJlcmVkIHNldCkKKyAgICAgICAgMi4gTWFya2VkIGJ1dCBub3QgaW4gdGhlIHJlbWVtYmVyZWQg
c2V0CisgICAgICAgIDMuIE1hcmtlZCBhbmQgaW4gdGhlIHJlbWVtYmVyZWQgc2V0CisgICAgICAg
IAorICAgICAgICBDdXJyZW50bHkgd2Ugb25seSBpbmRpY2F0ZSBtYXJrZWQgdnMuIG5vdCBtYXJr
ZWQgaW4gSlNDZWxsOjptX2djRGF0YS4gRHVyaW5nIGEgd3JpdGUgCisgICAgICAgIGJhcnJpZXIs
IHdlIG9ubHkgd2FudCB0byB0YWtlIHRoZSBzbG93IHBhdGggaWYgdGhlIG9iamVjdCBiZWluZyBz
dG9yZWQgdG8gaXMgaW4gc3RhdGUgIzIuIAorICAgICAgICBXZSdkIGxpa2UgdG8gbWFrZSB0aGUg
dGVzdCBmb3Igc3RhdGUgIzIgYXMgZmFzdCBhcyBwb3NzaWJsZSwgd2hpY2ggbWVhbnMgbWFraW5n
IGl0IGEgCisgICAgICAgIGNvbXBhcmUgYWdhaW5zdCAwLgorCisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyV3JpdGVCYXJy
aWVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja01hcmtCeXRlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExW
TS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmFsbG9jYXRlQ2VsbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmVtaXRTdG9yZUJhcnJpZXIpOgor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyUmVtZW1i
ZXJlZFNldCk6CisgICAgICAgIChKU0M6OkhlYXA6OmFkZFRvUmVtZW1iZXJlZFNldCk6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmNoZWNrTWFya0J5dGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrTWFya0J5dGUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGppdC9S
ZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c206CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpt
YXJrKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpyZW1lbWJlcik6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6Zm9yZ2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc01hcmtlZCk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNSZW1lbWJlcmVkKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlSURCbG9iLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEQmxvYjo6U3Ry
dWN0dXJlSURCbG9iKToKKwogMjAxNC0wMy0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFR3ZWFrIGFmdGVyIHIxNjUxMDkgdG8gYXZvaWQgZXh0cmEg
Y29waWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzCiAjaWYgRU5BQkxFKEdHQykKIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2Fs
bEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkKIHsKLSAgICBBc3Nl
bWJseUhlbHBlcnM6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGppdC5nZW5lcmljV3JpdGVC
YXJyaWVyKG93bmVyKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb3duZXJOb3RNYXJrZWRP
ckFscmVhZHlSZW1lbWJlcmVkID0gaml0LmNoZWNrTWFya0J5dGUob3duZXIpOwogCiAgICAgLy8g
V2UgbmVlZCB0aGVzZSBleHRyYSBzbG90cyBiZWNhdXNlIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZSB3aWxsIHVzZSBwb2tlIG9uIHg4Ni4KICNpZiBDUFUoWDg2KQpAQCAtMTc5LDcgKzE3OSw3
IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBqaXQuYWRk
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKHZvaWQqKSAqIDMpLCBNYWNy
b0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogI2VuZGlmCiAKLSAgICBkZWZpbml0
ZWx5Tm90TWFya2VkLmxpbmsoJmppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1l
bWJlcmVkLmxpbmsoJmppdCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzA5LDkgKzQ3MDksOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tu
b3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRl
ZmluaXRlbHlOb3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVk
ID0gY2hlY2tNYXJrQnl0ZShtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJp
ZXJCdWZmZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5v
dE1hcmtlZC5saW5rKCZtX2ppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJl
cmVkLmxpbmsoJm1faml0KTsKIAogICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgp
KSkKICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTQ3MjMsOSArNDcyMyw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihKU0NlbGwKICAgICBpZiAoIWlzS25v
d25DZWxsKHZhbHVlVXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZGVm
aW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBj
aGVja01hcmtCeXRlKG1faml0LCBvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZl
cihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxp
bmsoJm1faml0KTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygm
bV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAg
ICBpc05vdENlbGwubGluaygmbV9qaXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDQyLDkgKzUwNDIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJh
cnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAg
ICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8s
IHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgSklUQ29tcGlsZXI6
Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93
bmVyR1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJl
bWVtYmVyZWQgPSBjaGVja01hcmtCeXRlKG1faml0LCBvd25lckdQUik7CiAgICAgc3RvcmVUb1dy
aXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBkZWZp
bml0ZWx5Tm90TWFya2VkLmxpbmsoJm1faml0KTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFk
eVJlbWVtYmVyZWQubGluaygmbV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVz
ZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwpAQCAtNTA1Niw5ICs1
MDU2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2VsbAogICAgIGlm
ICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RN
YXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lcik7CisgICAgSklUQ29tcGls
ZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0
ZShtX2ppdCwgb3duZXIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIob3duZXIsIHNj
cmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5vdE1hcmtlZC5saW5rKCZtX2ppdCk7
CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKIAog
ICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxs
LmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2OSwx
NSArNTQ2OSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVCYXJyaWVyCiAg
ICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklU
OjpnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpCitK
SVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIG93bmVyKQogewotICAgIHJldHVybiBqaXQuYnJhbmNoVGVzdDgoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG93bmVyLCBKU0NlbGw6
OmdjRGF0YU9mZnNldCgpKSk7CisgICAgcmV0dXJuIGppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NE
YXRhT2Zmc2V0KCkpKTsKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omdl
bmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQ2VsbCogb3duZXIpCitKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBlcnMm
IGppdCwgSlNDZWxsKiBvd25lcikKIHsKICAgICB1aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4ob3duZXIpICsgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKTsKLSAgICBy
ZXR1cm4gaml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxl
cjo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKTsKKyAgICByZXR1cm4gaml0LmJyYW5jaFRlc3Q4
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNz
KGFkZHJlc3MpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3RvcmVUb1dyaXRlQmFycmll
ckJ1ZmZlcihHUFJSZWcgY2VsbCwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCkBA
IC01NTM2LDE2ICs1NTM2LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihH
UFJSZWcKICAgICBpZiAoSGVhcDo6aXNNYXJrZWQodmFsdWUpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRl
QmFycmllcihtX2ppdCwgb3duZXJHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVyTm90
TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNoZWNrTWFya0J5dGUobV9qaXQsIG93bmVyR1BS
KTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpOwotICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQpOworICAgIG93bmVy
Tm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZC5saW5rKCZtX2ppdCk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNo
MSwgR1BSUmVnIHNjcmF0Y2gyKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlO
b3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7CisgICAgSklU
Q29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tN
YXJrQnl0ZShtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIo
b3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgZGVmaW5pdGVseU5vdE1hcmtlZC5s
aW5rKCZtX2ppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmso
Jm1faml0KTsKIH0KICNlbHNlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVCYXJy
aWVyKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw4ICsyOTYs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKEdQUlJlZyBj
ZWxsLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAgICAgdm9pZCBzdG9yZVRv
V3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsbCosIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyKTsKIAotICAgIHN0YXRpYyBKSVRDb21waWxlcjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVy
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpOwotICAgIHN0YXRpYyBKSVRDb21waWxl
cjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBKU0NlbGwqIG93
bmVyKTsKKyAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAgY2hlY2tNYXJrQnl0ZShDQ2FsbEhl
bHBlcnMmIGppdCwgR1BSUmVnIG93bmVyKTsKKyAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAg
Y2hlY2tNYXJrQnl0ZShDQ2FsbEhlbHBlcnMmIGppdCwgSlNDZWxsKiBvd25lcik7CiAgICAgdm9p
ZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3Jh
dGNoMik7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBKU0NlbGwqIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjUx
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDA3OSw3ICs0MDc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9v
dXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50OChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgcmVz
dWx0LCBtX2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGUpOwogICAgICAgICBtX291dC5zdG9yZTgo
bV9vdXQuY29uc3RJbnQ4KHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpLCByZXN1bHQsIG1f
aGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlOChtX291dC5j
b25zdEludDgoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSwgcmVzdWx0
LCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKLSAgICAgICAgbV9vdXQuc3RvcmU4KG1f
b3V0LmNvbnN0SW50OCgwKSwgcmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF9nY0RhdGEpOworICAgICAg
ICBtX291dC5zdG9yZTgobV9vdXQuY29uc3RJbnQ4KEpTQ2VsbDo6Tm90TWFya2VkKSwgcmVzdWx0
LCBtX2hlYXBzLkpTQ2VsbF9nY0RhdGEpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CkBAIC01NDEwLDE2ICs1NDEwLDE2IEBAIHByaXZhdGU6CiAgICAgewogI2lmIEVO
QUJMRShHR0MpCiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiU3RvcmUgYmFycmllciBjb250aW51YXRpb24iKSk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGlzTWFya2VkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGlz
IG1hcmtlZCBibG9jayIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNNYXJrZWRBbmROb3RSZW1l
bWJlcmVkID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdG9yZSBiYXJyaWVyIGlzIG1hcmtlZCBi
bG9jayIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgYnVmZmVySGFzU3BhY2UgPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIlN0b3JlIGJhcnJpZXIgYnVmZmVyIGlzIGZ1bGwiKSk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIGJ1ZmZlcklzRnVsbCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RvcmUgYmFy
cmllciBidWZmZXIgaXMgZnVsbCIpKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgbWFyayBieXRl
LiAKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQuaXNaZXJvOChsb2Fk
TWFya0J5dGUoYmFzZSkpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShpc01hcmtlZCkp
OworICAgICAgICAgICAgbV9vdXQubm90WmVybzgobG9hZE1hcmtCeXRlKGJhc2UpKSwgdXN1YWxs
eShjb250aW51YXRpb24pLCByYXJlbHkoaXNNYXJrZWRBbmROb3RSZW1lbWJlcmVkKSk7CiAKICAg
ICAgICAgLy8gQXBwZW5kIHRvIHRoZSB3cml0ZSBiYXJyaWVyIGJ1ZmZlci4KLSAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc01hcmtlZCwgYnVmZmVySGFzU3Bh
Y2UpOworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzTWFy
a2VkQW5kTm90UmVtZW1iZXJlZCwgYnVmZmVySGFzU3BhY2UpOwogICAgICAgICBMVmFsdWUgY3Vy
cmVudEJ1ZmZlckluZGV4ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgpLmhlYXAu
d3JpdGVCYXJyaWVyQnVmZmVyKCkubV9jdXJyZW50SW5kZXgpKTsKICAgICAgICAgTFZhbHVlIGJ1
ZmZlckNhcGFjaXR5ID0gbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZ2bSgpLmhlYXAud3Jp
dGVCYXJyaWVyQnVmZmVyKCkubV9jYXBhY2l0eSkpOwogICAgICAgICBtX291dC5icmFuY2goCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTY1MTE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
OCw4ICs2NjgsMTAgQEAgdm9pZCBIZWFwOjpjbGVhclJlbWVtYmVyZWRTZXQoVmVjdG9yPGNvbgog
ewogI2lmIEVOQUJMRShHR0MpCiAgICAgR0NQSEFTRShDbGVhclJlbWVtYmVyZWRTZXQpOwotICAg
IGZvciAoYXV0byogY2VsbCA6IHJlbWVtYmVyZWRTZXQpCisgICAgZm9yIChhdXRvKiBjZWxsIDog
cmVtZW1iZXJlZFNldCkgewogICAgICAgICBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPmNs
ZWFyUmVtZW1iZXJlZChjZWxsKTsKKyAgICAgICAgY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKS0+
Zm9yZ2V0KCk7CisgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVtZW1iZXJlZFNldCk7
CiAjZW5kaWYKQEAgLTgyNiw2ICs4MjgsNyBAQCB2b2lkIEhlYXA6OmFkZFRvUmVtZW1iZXJlZFNl
dChjb25zdCBKU0NlCiAgICAgaWYgKGlzSW5SZW1lbWJlcmVkU2V0KGNlbGwpKQogICAgICAgICBy
ZXR1cm47CiAgICAgTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5zZXRSZW1lbWJlcmVkKGNl
bGwpOworICAgIGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCktPnJlbWVtYmVyKCk7CiAgICAgbV9z
bG90VmlzaXRvci51bmNvbmRpdGlvbmFsbHlBcHBlbmQoY29uc3RfY2FzdDxKU0NlbGwqPihjZWxs
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuaAkocmV2aXNpb24gMTY1MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDkgKzM4Nyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5lKCkgeyB9CiAjZW5kaWYKIAotICAg
IEp1bXAgZ2VuZXJpY1dyaXRlQmFycmllcihHUFJSZWcgb3duZXIpCisgICAgSnVtcCBjaGVja01h
cmtCeXRlKEdQUlJlZyBvd25lcikKICAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0OCha
ZXJvLCBBZGRyZXNzKG93bmVyLCBKU0NlbGw6OmdjRGF0YU9mZnNldCgpKSk7CisgICAgICAgIHJl
dHVybiBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKG93bmVyLCBKU0NlbGw6OmdjRGF0YU9m
ZnNldCgpKSk7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJldHdlZW4g
ZG91YmxlcywgYW5kIGRvdWJsZXMgYm94ZWQgYW5kIEpTVmFsdWVzLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsOCArMzE0LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVyTW9kZSB7IFVuY29uZGl0aW9uYWxXcml0ZUJh
cnJpZXIsIFNob3VsZEZpbHRlclZhbHVlLCBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAg
ICAgICAgLy8gdmFsdWUgcmVnaXN0ZXIgaW4gd3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBh
bnkgc2NyYXRjaCByZWdpc3RlcnMKICAgICAgICAgLy8gc28gbWF5IHNhZmVseSBiZSB0aGUgc2Ft
ZSBhcyBlaXRoZXIgb2YgdGhlIHNjcmF0Y2ggcmVnaXN0ZXJzLgotICAgICAgICBKdW1wIGNoZWNr
TWFya1dvcmQoUmVnaXN0ZXJJRCBvd25lcik7Ci0gICAgICAgIEp1bXAgY2hlY2tNYXJrV29yZChK
U0NlbGwqIG93bmVyKTsKKyAgICAgICAgSnVtcCBjaGVja01hcmtCeXRlKFJlZ2lzdGVySUQgb3du
ZXIpOworICAgICAgICBKdW1wIGNoZWNrTWFya0J5dGUoSlNDZWxsKiBvd25lcik7CiAgICAgICAg
IHZvaWQgZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdy
aXRlQmFycmllck1vZGUpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBv
d25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUpOwogICAgICAgICB2b2lkIGVt
aXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTY1MTE4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg3OSwxNSArODc5LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2luaXRfZ2xvYmFs
X2NvbnN0KEluc3QKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLUpJVDo6SnVtcCBKSVQ6
OmNoZWNrTWFya1dvcmQoUmVnaXN0ZXJJRCBvd25lcikKK0pJVDo6SnVtcCBKSVQ6OmNoZWNrTWFy
a0J5dGUoUmVnaXN0ZXJJRCBvd25lcikKIHsKLSAgICByZXR1cm4gYnJhbmNoVGVzdDgoWmVybywg
QWRkcmVzcyhvd25lciwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkpOworICAgIHJldHVybiBicmFu
Y2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKG93bmVyLCBKU0NlbGw6OmdjRGF0YU9mZnNldCgpKSk7
CiB9CiAKLUpJVDo6SnVtcCBKSVQ6OmNoZWNrTWFya1dvcmQoSlNDZWxsKiBvd25lcikKK0pJVDo6
SnVtcCBKSVQ6OmNoZWNrTWFya0J5dGUoSlNDZWxsKiBvd25lcikKIHsKICAgICB1aW50OF90KiBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob3duZXIpICsgSlNDZWxsOjpnY0Rh
dGFPZmZzZXQoKTsKLSAgICByZXR1cm4gYnJhbmNoVGVzdDgoWmVybywgQWJzb2x1dGVBZGRyZXNz
KGFkZHJlc3MpKTsKKyAgICByZXR1cm4gYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRy
ZXNzKGFkZHJlc3MpKTsKIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC05MDQsOSArOTA0LDkg
QEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZQogICAgIGlmIChtb2Rl
ID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxsID0gYnJh
bmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgSnVtcCBv
d25lck5vdE1hcmtlZCA9IGNoZWNrTWFya1dvcmQocmVnVDApOworICAgIEp1bXAgb3duZXJOb3RN
YXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0ZShyZWdUMCk7CiAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25VbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCByZWdUMCk7Ci0g
ICAgb3duZXJOb3RNYXJrZWQubGluayh0aGlzKTsKKyAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFk
eVJlbWVtYmVyZWQubGluayh0aGlzKTsKIAogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJh
c2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmsodGhpcyk7CkBAIC05NTMsOSAr
OTUzLDkgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZQogICAgIGlm
IChtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxs
ID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOwogCi0gICAgSnVtcCBvd25lck5vdE1hcmtlZCA9IGNoZWNrTWFya1dvcmQocmVnVDEpOwor
ICAgIEp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0
ZShyZWdUMSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25VbmNvbmRpdGlvbmFsV3JpdGVC
YXJyaWVyLCByZWdUMSk7Ci0gICAgb3duZXJOb3RNYXJrZWQubGluayh0aGlzKTsKKyAgICBvd25l
ck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluayh0aGlzKTsKIAogICAgIGlmIChtb2Rl
ID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmso
dGhpcyk7CkBAIC05OTMsOSArOTkzLDkgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlND
ZWxsKiBvd25lcgogewogI2lmIEVOQUJMRShHR0MpCiAgICAgaWYgKCFNYXJrZWRCbG9jazo6Ymxv
Y2tGb3Iob3duZXIpLT5pc01hcmtlZChvd25lcikpIHsKLSAgICAgICAgSnVtcCBvd25lck5vdE1h
cmtlZCA9IGNoZWNrTWFya1dvcmQob3duZXIpOworICAgICAgICBKdW1wIG93bmVyTm90TWFya2Vk
T3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNoZWNrTWFya0J5dGUob3duZXIpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIG93bmVyKTsKLSAg
ICAgICAgb3duZXJOb3RNYXJrZWQubGluayh0aGlzKTsKKyAgICAgICAgb3duZXJOb3RNYXJrZWRP
ckFscmVhZHlSZW1lbWJlcmVkLmxpbmsodGhpcyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgb3duZXIpOwogI2Vs
c2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTY1
MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODI0LDkgKzgyNCw5IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCB3cml0
ZUJhcnJpZXIKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDEpOwogICAgIEFTU0VSVChvd25l
ciAhPSBzY3JhdGNoMik7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90
TWFya2VkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dyaXRlQmFycmllcihqaXQsIG93
bmVyKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJl
bWVtYmVyZWQgPSBERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja01hcmtCeXRlKGppdCwgb3duZXIp
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBzdG9yZVRvV3JpdGVCYXJyaWVyQnVm
ZmVyKGppdCwgb3duZXIsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgYWxsb2NhdG9yKTsKLSAgICBkZWZp
bml0ZWx5Tm90TWFya2VkLmxpbmsoJmppdCk7CisgICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlS
ZW1lbWJlcmVkLmxpbmsoJmppdCk7CiAgICAgcmV0dXJuIGNhbGw7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKEdHQykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29y
a2luZyBjb3B5KQpAQCAtNTQzLDggKzU0Myw4IEBAIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFu
ZChjZWxsT3BlcmFuZCkKICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGNlbGxPcGVyYW5k
LCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENlbGxUYWcs
IHQyLCAud3JpdGVCYXJyaWVyRG9uZSkKICAgICAgICAgY2hlY2tNYXJrQnl0ZSh0MiwgdDEsIHQz
LCAKLSAgICAgICAgICAgIG1hY3JvKG1hcmtlZCkKLSAgICAgICAgICAgICAgICBidGJ6IG1hcmtl
ZCwgLndyaXRlQmFycmllckRvbmUKKyAgICAgICAgICAgIG1hY3JvKGdjRGF0YSkKKyAgICAgICAg
ICAgICAgICBidGJueiBnY0RhdGEsIC53cml0ZUJhcnJpZXJEb25lCiAgICAgICAgICAgICAgICAg
cHVzaCBjZnIsIFBDCiAgICAgICAgICAgICAgICAgIyBXZSBtYWtlIHR3byBleHRyYSBzbG90cyBi
ZWNhdXNlIGNDYWxsMiB3aWxsIHBva2UuCiAgICAgICAgICAgICAgICAgc3VicCA4LCBzcApAQCAt
NTc3LDggKzU3Nyw4IEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0KHZhbHVlT3AK
ICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQzCiAgICAgICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MwogICAgICAgICBjaGVja01hcmtCeXRlKHQzLCB0MSwg
dDIsCi0gICAgICAgICAgICBtYWNybyhtYXJrZWQpCi0gICAgICAgICAgICAgICAgYnRieiBtYXJr
ZWQsIC53cml0ZUJhcnJpZXJEb25lCisgICAgICAgICAgICBtYWNybyhnY0RhdGEpCisgICAgICAg
ICAgICAgICAgYnRibnogZ2NEYXRhLCAud3JpdGVCYXJyaWVyRG9uZQogICAgICAgICAgICAgICAg
IHB1c2ggY2ZyLCBQQwogICAgICAgICAgICAgICAgICMgV2UgbWFrZSB0d28gZXh0cmEgc2xvdHMg
YmVjYXVzZSBjQ2FsbDIgd2lsbCBwb2tlLgogICAgICAgICAgICAgICAgIHN1YnAgOCwgc3AKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNjUxMTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzk1LDgg
KzM5NSw4IEBAIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChjZWxsT3BlcmFuZCkKICAgICAg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGNlbGxPcGVyYW5kLCB0MSkKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwodDEsIHQyLCAud3JpdGVCYXJyaWVyRG9uZSkKICAgICAgICAg
Y2hlY2tNYXJrQnl0ZSh0MiwgdDEsIHQzLCAKLSAgICAgICAgICAgIG1hY3JvKG1hcmtlZCkKLSAg
ICAgICAgICAgICAgICBidGJ6IG1hcmtlZCwgLndyaXRlQmFycmllckRvbmUKKyAgICAgICAgICAg
IG1hY3JvKGdjRGF0YSkKKyAgICAgICAgICAgICAgICBidGJueiBnY0RhdGEsIC53cml0ZUJhcnJp
ZXJEb25lCiAgICAgICAgICAgICAgICAgcHVzaCBQQiwgUEMKICAgICAgICAgICAgICAgICBjQ2Fs
bDJWb2lkKF9sbGludF93cml0ZV9iYXJyaWVyX3Nsb3csIGNmciwgdDIpCiAgICAgICAgICAgICAg
ICAgcG9wIFBDLCBQQgpAQCAtNDI2LDggKzQyNiw4IEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xv
YmFsT2JqZWN0KHZhbHVlT3AKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQzCiAgICAg
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MwogICAgICAgICBjaGVj
a01hcmtCeXRlKHQzLCB0MSwgdDIsCi0gICAgICAgICAgICBtYWNybyhtYXJrZWQpCi0gICAgICAg
ICAgICAgICAgYnRieiBtYXJrZWQsIC53cml0ZUJhcnJpZXJEb25lCisgICAgICAgICAgICBtYWNy
byhnY0RhdGEpCisgICAgICAgICAgICAgICAgYnRibnogZ2NEYXRhLCAud3JpdGVCYXJyaWVyRG9u
ZQogICAgICAgICAgICAgICAgIHB1c2ggUEIsIFBDCiAgICAgICAgICAgICAgICAgY0NhbGwyVm9p
ZChfbGxpbnRfd3JpdGVfYmFycmllcl9zbG93LCBjZnIsIHQzKQogICAgICAgICAgICAgICAgIHBv
cCBQQywgUEIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE2NTExOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAt
NDQ4LDE0ICs0NDgsNyBAQCBtYWNybyBhcnJheVByb2ZpbGUoY2VsbEFuZEluZGV4aW5nVHlwZSwg
CiBlbmQKIAogbWFjcm8gY2hlY2tNYXJrQnl0ZShjZWxsLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGNv
bnRpbnVhdGlvbikKLSAgICBtb3ZlIGNlbGwsIHNjcmF0Y2gxCi0gICAgbW92ZSBjZWxsLCBzY3Jh
dGNoMgotCi0gICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHNjcmF0Y2gxCi0gICAgYW5kcCB+TWFy
a2VkQmxvY2tNYXNrLCBzY3JhdGNoMgotCi0gICAgcnNoaWZ0cCBBdG9tTnVtYmVyU2hpZnQgKyBC
aXRNYXBXb3JkU2hpZnQsIHNjcmF0Y2gyCi0gICAgbG9hZGIgTWFya2VkQmxvY2s6Om1fbWFya3Nb
c2NyYXRjaDEsIHNjcmF0Y2gyLCAxXSwgc2NyYXRjaDEKKyAgICBsb2FkYiBKU0NlbGw6Om1fZ2NE
YXRhW2NlbGxdLCBzY3JhdGNoMQogICAgIGNvbnRpbnVhdGlvbihzY3JhdGNoMSkKIGVuZAogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTY1MTE4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MSw4ICsxNDEsMjggQEAgcHVibGljOgogCiAgICAgSlNWYWx1ZSBmYXN0R2V0T3du
UHJvcGVydHkoVk0mLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgbWFyaygpIHsgbV9nY0Rh
dGEgPSAxOyB9Ci0gICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2NEYXRhOyB9
CisgICAgZW51bSBHQ0RhdGEgOiB1aW50OF90IHsKKyAgICAgICAgTWFya2VkID0gMCwKKyAgICAg
ICAgTm90TWFya2VkID0gMSwKKyAgICAgICAgTWFya2VkQW5kUmVtZW1iZXJlZCA9IDIsCisgICAg
fTsKKworICAgIHZvaWQgbWFyaygpIHsgbV9nY0RhdGEgPSBNYXJrZWQ7IH0KKyAgICB2b2lkIHJl
bWVtYmVyKCkgeyBBU1NFUlQobV9nY0RhdGEgPT0gTWFya2VkKTsgbV9nY0RhdGEgPSBNYXJrZWRB
bmRSZW1lbWJlcmVkOyB9CisgICAgdm9pZCBmb3JnZXQoKSB7IEFTU0VSVChtX2djRGF0YSA9PSBN
YXJrZWRBbmRSZW1lbWJlcmVkKTsgbV9nY0RhdGEgPSBNYXJrZWQ7IH0KKyAgICBib29sIGlzTWFy
a2VkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9nY0RhdGEpIHsKKyAgICAgICAg
Y2FzZSBNYXJrZWQ6CisgICAgICAgIGNhc2UgTWFya2VkQW5kUmVtZW1iZXJlZDoKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIE5vdE1hcmtlZDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGJvb2wgaXNSZW1lbWJlcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9nY0RhdGEgPT0gTWFya2VkQW5kUmVtZW1iZXJlZDsgfQogCiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24g
MTY1MTE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogaW5s
aW5lIEpTQ2VsbDo6SlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVGFnKQotICAgIDogbV9nY0RhdGEo
MCkKKyAgICA6IG1fZ2NEYXRhKE5vdE1hcmtlZCkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRp
b25UaHJlYWQoKSk7CiB9CkBAIC00OCw3ICs0OCw3IEBAIGlubGluZSBKU0NlbGw6OkpTQ2VsbChW
TSYsIFN0cnVjdHVyZSogc3QKICAgICAsIG1faW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpCiAgICAgLCBtX3R5cGUoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSkKICAg
ICAsIG1fZmxhZ3Moc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKQotICAg
ICwgbV9nY0RhdGEoMCkKKyAgICAsIG1fZ2NEYXRhKE5vdE1hcmtlZCkKIHsKICAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAkocmV2aXNpb24gMTY1MTE4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICB1LmZpZWxkcy5pbmRleGluZ1R5
cGUgPSBpbmRleGluZ1R5cGU7CiAgICAgICAgIHUuZmllbGRzLnR5cGUgPSB0eXBlSW5mby50eXBl
KCk7CiAgICAgICAgIHUuZmllbGRzLmlubGluZVR5cGVGbGFncyA9IHR5cGVJbmZvLmlubGluZVR5
cGVGbGFncygpOwotICAgICAgICB1LmZpZWxkcy5kZWZhdWx0R0NEYXRhID0gMDsKKyAgICAgICAg
dS5maWVsZHMuZGVmYXVsdEdDRGF0YSA9IEpTQ2VsbDo6Tm90TWFya2VkOwogICAgIH0KIAogICAg
IHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVyZUlEQmxvYiYgb3RoZXIpIHsgdS5kb3VibGVX
b3JkID0gb3RoZXIudS5kb3VibGVXb3JkOyB9CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlOwogICAgICAgICAgICAgSlNUeXBl
IHR5cGU7CiAgICAgICAgICAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVG
bGFnczsKLSAgICAgICAgICAgIHVpbnQ4X3QgZGVmYXVsdEdDRGF0YTsKKyAgICAgICAgICAgIEpT
Q2VsbDo6R0NEYXRhIGRlZmF1bHRHQ0RhdGE7CiAgICAgICAgIH0gZmllbGRzOwogICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgaW50MzJfdCB3b3JkMTsK
</data>
<flag name="review"
          id="250092"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>