<?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>90326</bug_id>
          
          <creation_ts>2012-06-29 17:29:17 -0700</creation_ts>
          <short_desc>HTMLCollection should use DynamicNodeList&apos;s invalidation model</short_desc>
          <delta_ts>2012-07-17 19:26:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          <dependson>91046</dependson>
    
    <dependson>91178</dependson>
          <blocked>89919</blocked>
    
    <blocked>91571</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andersca</cc>
    
    <cc>arko</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>660883</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-29 17:29:17 -0700</bug_when>
    <thetext>Right now, HTMLCollection gets invalidated lazily by checking DOM tree version. However, various attempts to simplify DynamicNodeList&apos;s invalidation model proved that our current invalidation model for DynamicNodeList is indeed effective. We should make HTMLCollection use the same model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660884</commentid>
    <comment_count>1</comment_count>
      <attachid>150278</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-29 17:31:21 -0700</bug_when>
    <thetext>Created attachment 150278
work in progress

Unfortunately, we have to do more refactoring around invalidateNodeListsCacheAfterAttributeChanged to avoid invalidating node lists and html collections when attribute that had changed don&apos;t affect node lists and html collections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668729</commentid>
    <comment_count>2</comment_count>
      <attachid>152186</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-13 01:34:31 -0700</bug_when>
    <thetext>Created attachment 152186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668740</commentid>
    <comment_count>3</comment_count>
      <attachid>152186</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-13 01:52:50 -0700</bug_when>
    <thetext>Comment on attachment 152186
Patch

Attachment 152186 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13239018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668755</commentid>
    <comment_count>4</comment_count>
      <attachid>152186</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-13 02:14:35 -0700</bug_when>
    <thetext>Comment on attachment 152186
Patch

Attachment 152186 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13230132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668766</commentid>
    <comment_count>5</comment_count>
      <attachid>152186</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-13 02:29:23 -0700</bug_when>
    <thetext>Comment on attachment 152186
Patch

Attachment 152186 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13236046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668775</commentid>
    <comment_count>6</comment_count>
      <attachid>152186</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-13 02:35:21 -0700</bug_when>
    <thetext>Comment on attachment 152186
Patch

Attachment 152186 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13205999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668791</commentid>
    <comment_count>7</comment_count>
      <attachid>152186</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-13 02:53:54 -0700</bug_when>
    <thetext>Comment on attachment 152186
Patch

Attachment 152186 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13233060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669308</commentid>
    <comment_count>8</comment_count>
      <attachid>152312</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-13 11:52:34 -0700</bug_when>
    <thetext>Created attachment 152312
Fixed builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669352</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-13 12:48:45 -0700</bug_when>
    <thetext>Committed r122621: &lt;http://trac.webkit.org/changeset/122621&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150278</attachid>
            <date>2012-06-29 17:31:21 -0700</date>
            <delta_ts>2012-07-13 01:34:19 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip90326</filename>
            <type>text/plain</type>
            <size>6434</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTIxNjAzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg2MywxMSArMzg2
MywyMyBAQAogICAgIG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQucmVtb3ZlKGxpc3QpOwog
fQogCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgZnVuY3Rpb24KIHZvaWQgRG9jdW1lbnQ6OmNsZWFy
Tm9kZUxpc3RDYWNoZXMoKQogewogICAgIEhhc2hTZXQ8RHluYW1pY1N1YnRyZWVOb2RlTGlzdCo+
OjppdGVyYXRvciBlbmQgPSBtX2xpc3RzSW52YWxpZGF0ZWRBdERvY3VtZW50LmVuZCgpOwogICAg
IGZvciAoSGFzaFNldDxEeW5hbWljU3VidHJlZU5vZGVMaXN0Kj46Oml0ZXJhdG9yIGl0ID0gbV9s
aXN0c0ludmFsaWRhdGVkQXREb2N1bWVudC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAg
ICAgICgqaXQpLT5pbnZhbGlkYXRlQ2FjaGUoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBOdW1Vbm5hbWVkRG9jdW1lbnRDYWNoZWRUeXBlczsgaSsrKQorICAgICAgICBtX2NvbGxl
Y3Rpb25zW2ldLT5pbnZhbGlkYXRlQ2FjaGUoKTsKKworICAgIE5hbWVkQ29sbGVjdGlvbk1hcDo6
aXRlcmF0b3IgY29sbGVjdGlvbkVuZCA9IG1fZG9jdW1lbnROYW1lZEl0ZW1Db2xsZWN0aW9ucy5l
bmQoKTsKKyAgICBmb3IgKE5hbWVkQ29sbGVjdGlvbk1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3Vt
ZW50TmFtZWRJdGVtQ29sbGVjdGlvbnMuYmVnaW4oKTsgaXQgIT0gY29sbGVjdGlvbkVuZDsgKytp
dCkKKyAgICAgICAgKCppdCktPmludmFsaWRhdGVDYWNoZSgpOworCisgICAgY29sbGVjdGlvbkVu
ZCA9IG1fd2luZG93TmFtZWRJdGVtQ29sbGVjdGlvbnMuZW5kKCk7CisgICAgZm9yIChOYW1lZENv
bGxlY3Rpb25NYXA6Oml0ZXJhdG9yIGl0ID0gbV93aW5kb3dOYW1lZEl0ZW1Db2xsZWN0aW9ucy5i
ZWdpbigpOyBpdCAhPSBjb2xsZWN0aW9uRW5kOyArK2l0KQorICAgICAgICAoKml0KS0+aW52YWxp
ZGF0ZUNhY2hlKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmF0dGFjaE5vZGVJdGVyYXRvcihOb2Rl
SXRlcmF0b3IqIG5pKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTIxNjAzKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTYsNiArOTk2
LDggQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGRhdGEtPm5vZGVMaXN0cygp
LT5pbnZhbGlkYXRlQ2FjaGVzKCZhdHRyTmFtZSk7CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1l
bnROb2RlKCkpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihkYXRh
KS0+aW52YWxpZGF0ZUNhY2hlcygpOwogICAgIH0KIH0KIApAQCAtMTAxNyw2ICsxMDE5LDggQEAK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZh
bGlkYXRlQ2FjaGVzKCk7CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihkYXRhKS0+aW52YWxpZGF0ZUNh
Y2hlcygpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJl
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aAkocmV2aXNpb24gMTIxNjAzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTMgQEAKICNpbmNsdWRlICJEYXRhc2V0
RE9NU3RyaW5nTWFwLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRT
aGFkb3cuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIk5hbWVkTm9k
ZU1hcC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MQ29sbGVjdGlvbjsKLQogY2xh
c3MgRWxlbWVudFJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YSB7CiBwdWJsaWM6CiAgICAg
RWxlbWVudFJhcmVEYXRhKCk7CkBAIC01OSw2ICs1OCwxMyBAQAogCiAgICAgICAgIHJldHVybiAo
Km1fY2FjaGVkQ29sbGVjdGlvbnMpW3R5cGUgLSBGaXJzdE5vZGVDb2xsZWN0aW9uVHlwZV0uZ2V0
KCk7CiAgICAgfQorICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcygpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAobV9jYWNoZWRDb2xsZWN0aW9ucykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IE51bVVubmFtZWREb2N1bWVudENhY2hlZFR5cGVzOyBpKyspCisgICAgICAg
ICAgICAgICAgKCptX2NhY2hlZENvbGxlY3Rpb25zKVtpXS0+aW52YWxpZGF0ZUNhY2hlKCk7Cisg
ICAgICAgIH0KKyAgICB9CiAKICAgICBPd25QdHI8Q2FjaGVkSFRNTENvbGxlY3Rpb25BcnJheT4g
bV9jYWNoZWRDb2xsZWN0aW9uczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29s
bGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHAJKHJldmlzaW9uIDEyMTYwMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxOSArODYsOSBAQAogewogfQogCi12
b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpIGNvbnN0Ci17Ci0g
ICAgdWludDY0X3QgZG9jdmVyc2lvbiA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudCo+KG1fYmFz
ZS0+ZG9jdW1lbnQoKSktPmRvbVRyZWVWZXJzaW9uKCk7Ci0KLSAgICBpZiAoY2FjaGVUcmVlVmVy
c2lvbigpID09IGRvY3ZlcnNpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGNsZWFyQ2FjaGUo
ZG9jdmVyc2lvbik7Ci19Ci0KIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZSgp
CiB7Ci0gICAgY2xlYXJDYWNoZShzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihtX2Jhc2UtPmRv
Y3VtZW50KCkpLT5kb21UcmVlVmVyc2lvbigpKTsKKyAgICBjbGVhckNhY2hlKCk7CiB9CiAKIGlu
bGluZSBib29sIEhUTUxDb2xsZWN0aW9uOjppc0FjY2VwdGFibGVFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0CkBAIC0xOTQsNyArMTg0LDYgQEAKIC8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRp
bWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQKIHVuc2lnbmVkIEhUTUxDb2xsZWN0aW9uOjpsZW5n
dGgoKSBjb25zdAogewotICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAgICAgaWYgKCFp
c0xlbmd0aENhY2hlVmFsaWQoKSkKICAgICAgICAgc2V0TGVuZ3RoQ2FjaGUoY2FsY0xlbmd0aCgp
KTsKICAgICByZXR1cm4gY2FjaGVkTGVuZ3RoKCk7CkBAIC0yMDIsNyArMTkxLDYgQEAKIAogTm9k
ZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgaW52
YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKICAgICBpZiAoaXNJdGVtQ2FjaGVWYWxpZCgpICYmIGNh
Y2hlZEl0ZW1PZmZzZXQoKSA9PSBpbmRleCkKICAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0oKTsK
ICAgICBpZiAoaXNMZW5ndGhDYWNoZVZhbGlkKCkgJiYgY2FjaGVkTGVuZ3RoKCkgPD0gaW5kZXgp
CkBAIC0yNTQsNyArMjQyLDYgQEAKICAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90
IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCiAgICAgLy8gb2JqZWN0IHdp
dGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMK
ICAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCi0gICAgaW52YWxpZGF0
ZUNhY2hlSWZOZWVkZWQoKTsKIAogICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGZvciAoRWxlbWVu
dCogZSA9IGl0ZW1BZnRlcigwKTsgZTsgZSA9IGl0ZW1BZnRlcihlKSkgewpAQCAtMzAyLDcgKzI4
OSw2IEBACiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwogICAgIHVwZGF0ZU5hbWVDYWNoZSgpOwog
CiAgICAgaWYgKFZlY3RvcjxFbGVtZW50Kj4qIGNhY2hlID0gaWRDYWNoZShuYW1lKSkgewpAQCAt
MzI0LDcgKzMxMCw2IEBACiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwogICAgIHVwZGF0ZU5hbWVDYWNoZSgp
OwogCiAgICAgVmVjdG9yPEVsZW1lbnQqPiogaWRSZXN1bHRzID0gaWRDYWNoZShuYW1lKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEyMTYwMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNyArNzIsNiBAQAogICAgIHVuc2lnbmVkIGNhY2hlZEVsZW1lbnRzQXJyYXlPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZEVsZW1lbnRzQXJyYXlPZmZzZXQ7IH0KIAogICAgIGJvb2wg
aW5jbHVkZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRlQ2hpbGRyZW47IH0KLSAg
ICB1aW50NjRfdCBjYWNoZVRyZWVWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZVRyZWVW
ZXJzaW9uOyB9CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0
cjxWZWN0b3I8RWxlbWVudCo+ID4gPiBOb2RlQ2FjaGVNYXA7CiAgICAgVmVjdG9yPEVsZW1lbnQq
PiogaWRDYWNoZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1faWRD
YWNoZS5nZXQobmFtZS5pbXBsKCkpOyB9CkBAIC05Myw3ICs5Miw2IEBACiAgICAgbXV0YWJsZSBO
b2RlQ2FjaGVNYXAgbV9pZENhY2hlOwogICAgIG11dGFibGUgTm9kZUNhY2hlTWFwIG1fbmFtZUNh
Y2hlOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9jYWNoZWRFbGVtZW50c0FycmF5T2Zmc2V0Owot
ICAgIG11dGFibGUgdWludDY0X3QgbV9jYWNoZVRyZWVWZXJzaW9uOwogCiAgICAgLy8gRklYTUU6
IE1vdmUgdGhlc2UgYml0IGZsYWdzIHRvIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB0byBwYWNr
IHRoZW0gYmV0dGVyLgogICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXNOYW1lQ2FjaGUgOiAxOwpA
QCAtMTIwLDcgKzExOCw2IEBACiAgICAgdm9pZCBuYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JikgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAgICAg
ICAgIGlmIChpc0xlbmd0aENhY2hlVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiAhY2FjaGVk
TGVuZ3RoKCk7CiAgICAgICAgIGlmIChpc0l0ZW1DYWNoZVZhbGlkKCkpCkBAIC0xMjksNyArMTI2
LDYgQEAKICAgICB9CiAgICAgYm9vbCBoYXNFeGFjdGx5T25lSXRlbSgpIGNvbnN0CiAgICAgewot
ICAgICAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwogICAgICAgICBpZiAoaXNMZW5ndGhD
YWNoZVZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGVkTGVuZ3RoKCkgPT0gMTsKICAg
ICAgICAgaWYgKGlzSXRlbUNhY2hlVmFsaWQoKSkKQEAgLTEzOSw4ICsxMzUsNyBAQAogCiAgICAg
Tm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogCi0gICAgdm9pZCBpbnZhbGlk
YXRlQ2FjaGUoKTsKLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCkgY29uc3Q7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoKSB7IGNsZWFyQ2FjaGUoKTsgfQogcHJvdGVjdGVkOgog
ICAgIEhUTUxDb2xsZWN0aW9uKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152186</attachid>
            <date>2012-07-13 01:34:31 -0700</date>
            <delta_ts>2012-07-13 11:52:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90326-20120713013800.patch</filename>
            <type>text/plain</type>
            <size>33912</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjU1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEyLTA3LTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhUTUxDb2xsZWN0aW9uIHNob3Vs
ZCB1c2UgRHluYW1pY05vZGVMaXN0J3MgaW52YWxpZGF0aW9uIG1vZGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMyNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgSFRNTENvbGxlY3Rpb24gaW52
YWxpZGF0ZWQgdXBvbiBhdHRyaWJ1dGUgYW5kIGNoaWxkcmVuIGNoYW5nZXMgaW5zdGVhZCBvZiBp
bnZhbGlkYXRpbmcgaXQgb24gZGVtYW5kCisgICAgICAgIGJ5IGNvbXBhcmluZyBET00gdHJlZSB2
ZXJzaW9ucy4gTm9kZSB0aGF0IEhUTUxDb2xsZWN0aW9ucyBvd25lZCBieSBEb2N1bWVudCBhcmUg
aW52YWxpZGF0ZWQgd2l0aCBvdGhlcgorICAgICAgICBkb2N1bWVudC1yb290ZWQgbm9kZSBsaXN0
cyBpbiBtX2xpc3RzSW52YWxpZGF0ZWRBdERvY3VtZW50IGZvciBzaW1wbGljaXR5IGFsdGhvdWdo
IHRoaXMgbWVjaGFuaXNtIGlzCisgICAgICAgIG5vcm1hbGx5IHVzZWQgZm9yIG5vZGUgbGlzdHMg
b3duZWQgYnkgYSBub24tRG9jdW1lbnQgbm9kZSB0aGF0IGNvbnRhaW5zIG5vZGVzIG91dHNpZGUg
b2YgaXRzIHN1YnRyZWUuCisgICAgICAgIEl0ZW1Qcm9wZXJ0aWVzIGFuZCBGb3JtQ29udHJvbHMg
YXJlIG1vcmUgInRyYWRpdGlvbmFsIiB1c2VycyBvZiB0aGUgbWVjaGFuaXNtLgorCisgICAgICAg
IEFsc28sIG1lcmdlZCBEeW5hbWljTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSBhbmQgSFRNTENv
bGxlY3Rpb246OmludmFsaWRhdGVDYWNoZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKTogUmVu
YW1lZC4gTm8gbG9uZ2VyIHRha2VzIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBvcgorICAgICAg
ICBOb2RlTGlzdFJvb3RUeXBlIHNpbmNlIHRoZXkgY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIGNh
Y2hlIGJhc2UuIEluY3JlbWVudCB0aGUgbm9kZSBsaXN0IGNvdW50ZXIgZm9yCisgICAgICAgIElu
dmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2Ugd2hlbiBhIEhUTUxDb2xsZWN0aW9uIGlzIHBhc3Nl
ZCBpbiBzaW5jZSBhbGwgSFRNTENvbGxlY3Rpb25zIG5lZWQgdG8gYmUKKyAgICAgICAgaW52YWxp
ZGF0ZWQgb24gaWQgb3IgbmFtZSBjb250ZW50IGF0dHJpYnV0ZSBjaGFuZ2VzIGR1ZSB0byBuYW1l
ZCBnZXR0ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJOb2RlTGlz
dENhY2hlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRJbnZhbGlkYXRlTm9kZUxp
c3RGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRl
Tm9kZUxpc3RDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsZWFyTm9kZUxp
c3RDYWNoZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6
IEFkZGVkIEludmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2UsIEludmFsaWRhdGVPbkhSZWZBdHRy
Q2hhbmdlLCBhbmQgSW52YWxpZGF0ZU9uQW55QXR0ckNoYW5nZS4KKyAgICAgICAgKERvY3VtZW50
KToKKyAgICAgICAgKiBkb20vRHluYW1pY05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aW52YWxpZGF0ZUNhY2hlKTogQWRkZWQuIEludmFs
aWRhdGVzIGNhY2hlcyBvZiBib3RoIER5bmFtaWNOb2RlTGlzdAorICAgICAgICBhbmQgSFRNTENv
bGxlY3Rpb24uIFdlIGNhbid0IGFmZm9yZCB0byB1c2UgdmlydHVhbCBmdW5jdGlvbiBjYWxscyBo
ZXJlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24KKyAgICAgICAgYWxsIG5vZGUg
bGlzdHMgYW5kIEhUTUwgY29sbGVjdGlvbnMgb3duZWQgYnkgYW5jZXN0b3JzIG9mIGFuIGVsZW1l
bnQgdW5kZXIgd2hpY2ggYSBub2RlIGlzIGFkZGVkLCByZW1vdmVkLAorICAgICAgICBvciBpdHMg
YXR0cmlidXRlcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRv
bS9EeW5hbWljTm9kZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENh
Y2hlQmFzZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKTogSW5pdGlhbGl6ZXMgbWVtYmVyIHZh
cmlhYmxlcyBkaXJlY3RseQorICAgICAgICBpbnN0ZWFkIG9mIGNhbGxpbmcgY2xlYXJDYWNoZSBu
b3cgdGhhdCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdGVDYWNoZSBoYXMgYmVj
b21lIHBvbHltb3JwaGljLgorICAgICAgICAoRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKTogSW5j
cmVhc2VkIHRoZSBudW1iZXIgb2YgYml0cyBmb3IgbV9pbnZhbGlkYXRpb25UeXBlIHNpbmNlIHdl
IG5vdyBoYXZlIDkKKyAgICAgICAgaW52YWxpZGF0aW9uIHR5cGVzLgorICAgICAgICAoV2ViQ29y
ZTo6RHluYW1pY1N1YnRyZWVOb2RlTGlzdDo6fkR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHluYW1pY1N1YnRyZWVOb2RlTGlzdDo6RHluYW1pY1N1YnRyZWVOb2Rl
TGlzdCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoRWxlbWVu
dFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2xlYXJIVE1M
Q29sbGVjdGlvbkNhY2hlcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjphZG9wdFRyZWVTY29wZSk6IEFkZGVkOyBzaW1pbGFyIHRvIE5vZGVSYXJlRGF0YTo6YWRv
cHRUcmVlU2NvcGUuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKTogQ2xl
YXJzIEhUTUwgY29sbGVjdGlvbiBjYWNoZXMgYXMgd2VsbCBhcworICAgICAgICBub2RlIGxpc3Qg
Y2FjaGVzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hl
QWZ0ZXJDaGlsZHJlbkNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6YWRvcHRUcmVlU2NvcGUp
OgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6IENhbGxzIEVsZW1lbnRSYXJl
RGF0YSdzIGFkb3B0VHJlZVNjb3BlIGFzIHdlbGwgYXMKKyAgICAgICAgTm9kZVJhcmVEYXRhJ3Mu
CisgICAgICAgICogaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtV2l0aEluZGV4KToKKyAgICAgICAgKiBodG1s
L0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RUeXBlRnJvbUNvbGxl
Y3Rpb25UeXBlKTogQWRkZWQuIEFzIG1lbnRpb25lZCBhYm92ZSwgdHJlYXQgYWxsIERvY3VtZW50
LW93bmVkIEhUTUwgY29sbGVjdGlvbgorICAgICAgICBhcyBpZiByb290ZWQgYXQgZG9jdW1lbnQg
Zm9yIGNvbnZlbmllbmNlLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0aW9uVHlwZUV4Y2x1
ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMpOiBBZGRlZC4gU2luY2UgYWxsIEhUTUwgY29sbGVjdGlv
biByZXF1aXJlcworICAgICAgICBpbnZhbGlkYXRpb24gb24gaWQgYW5kIG5hbWUgY29udGVudCBh
dHRyaWJ1dGUgY2hhbmdlcywgd2hpY2ggaXMgdGFrZW4gY2FyZSBieSB0aGUgc3BlY2lhbCBsb2dp
YyBpbgorICAgICAgICBEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlLCBleGNsdWRlIHRo
b3NlIHR3byBhdHRyaWJ1dGVzIGZyb20gY29uc2lkZXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbik6IENhbGxzIERvY3VtZW50OjpyZWdpc3Rl
ck5vZGVMaXN0Q2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6fkhUTUxD
b2xsZWN0aW9uKTogQ2FsbHMgRG9jdW1lbnQ6OnVucmVnaXN0ZXJOb2RlTGlzdENhY2hlLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1cGRhdGVO
YW1lQ2FjaGUpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb2xsZWN0aW9uQ2FjaGVCYXNlOjpIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSk6
CisgICAgICAgIChIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSk6IFJlbW92ZWQgbV9jYWNoZVRyZWVW
ZXJzaW9uIGFuZCBjbGVhckNhY2hlIHNpbmNlIHRoZXkncmUgbm8gbG9uZ2VyIHVzZWQuCisgICAg
ICAgIChIVE1MQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg6CisgICAgICAgIChIVE1MT3B0
aW9uc0NvbGxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6dXBkYXRl
TmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2Fj
aGUpOgorCiAyMDEyLTA3LTEzICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29t
PgogCiAgICAgICAgIFNob3VsZCBiZSBwb3NzaWJsZSB0byBmb2N1cyBlbGVtZW50cyB3aXRoaW4g
Y2FudmFzIGZhbGxiYWNrIGNvbnRlbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMTIyNTQ3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzg3NSwxNyArMzg3NSwyMSBAQCB2b2lkIERvY3VtZW50OjpzZXRDU1NUYXJn
ZXQoRWxlbWVudCogbikKICAgICAgICAgbi0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12
b2lkIERvY3VtZW50OjpyZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRy
ZWVOb2RlTGlzdCogbGlzdCwgTm9kZUxpc3RSb290VHlwZSByb290VHlwZSwgTm9kZUxpc3RJbnZh
bGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUpCit2b2lkIERvY3VtZW50OjpyZWdpc3Rlck5v
ZGVMaXN0Q2FjaGUoRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKiBsaXN0KQogewotICAgIG1fbm9k
ZUxpc3RDb3VudHNbaW52YWxpZGF0aW9uVHlwZV0rKzsKLSAgICBpZiAocm9vdFR5cGUgPT0gTm9k
ZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQpCisgICAgaWYgKGxpc3QtPnR5cGUoKSAhPSBJbnZhbGlk
Q29sbGVjdGlvblR5cGUpCisgICAgICAgIG1fbm9kZUxpc3RDb3VudHNbSW52YWxpZGF0ZU9uSWRO
YW1lQXR0ckNoYW5nZV0rKzsKKyAgICBtX25vZGVMaXN0Q291bnRzW2xpc3QtPmludmFsaWRhdGlv
blR5cGUoKV0rKzsKKyAgICBpZiAobGlzdC0+cm9vdFR5cGUoKSA9PSBOb2RlTGlzdElzUm9vdGVk
QXREb2N1bWVudCkKICAgICAgICAgbV9saXN0c0ludmFsaWRhdGVkQXREb2N1bWVudC5hZGQobGlz
dCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0
KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGUs
IE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQordm9pZCBEb2N1bWVu
dDo6dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUoRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKiBsaXN0
KQogewotICAgIG1fbm9kZUxpc3RDb3VudHNbaW52YWxpZGF0aW9uVHlwZV0tLTsKLSAgICBpZiAo
cm9vdFR5cGUgPT0gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQpIHsKKyAgICBpZiAobGlzdC0+
dHlwZSgpICE9IEludmFsaWRDb2xsZWN0aW9uVHlwZSkKKyAgICAgICAgbV9ub2RlTGlzdENvdW50
c1tJbnZhbGlkYXRlT25JZE5hbWVBdHRyQ2hhbmdlXS0tOworICAgIG1fbm9kZUxpc3RDb3VudHNb
bGlzdC0+aW52YWxpZGF0aW9uVHlwZSgpXS0tOworICAgIGlmIChsaXN0LT5yb290VHlwZSgpID09
IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50KSB7CiAgICAgICAgIEFTU0VSVChtX2xpc3RzSW52
YWxpZGF0ZWRBdERvY3VtZW50LmNvbnRhaW5zKGxpc3QpKTsKICAgICAgICAgbV9saXN0c0ludmFs
aWRhdGVkQXREb2N1bWVudC5yZW1vdmUobGlzdCk7CiAgICAgfQpAQCAtMzg5OCwxMCArMzkwMiwx
NCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhCiAgICAgICAgIHJl
dHVybiBhdHRyTmFtZSA9PSBjbGFzc0F0dHI7CiAgICAgY2FzZSBJbnZhbGlkYXRlT25OYW1lQXR0
ckNoYW5nZToKICAgICAgICAgcmV0dXJuIGF0dHJOYW1lID09IG5hbWVBdHRyOworICAgIGNhc2Ug
SW52YWxpZGF0ZU9uSWROYW1lQXR0ckNoYW5nZToKKyAgICAgICAgcmV0dXJuIGF0dHJOYW1lID09
IGlkQXR0ciB8fCBhdHRyTmFtZSA9PSBuYW1lQXR0cjsKICAgICBjYXNlIEludmFsaWRhdGVPbkZv
ckF0dHJDaGFuZ2U6CiAgICAgICAgIHJldHVybiBhdHRyTmFtZSA9PSBmb3JBdHRyOwogICAgIGNh
c2UgSW52YWxpZGF0ZUZvckZvcm1Db250cm9sczoKICAgICAgICAgcmV0dXJuIGF0dHJOYW1lID09
IG5hbWVBdHRyIHx8IGF0dHJOYW1lID09IGlkQXR0ciB8fCBhdHRyTmFtZSA9PSBmb3JBdHRyIHx8
IGF0dHJOYW1lID09IHR5cGVBdHRyOworICAgIGNhc2UgSW52YWxpZGF0ZU9uSFJlZkF0dHJDaGFu
Z2U6CisgICAgICAgIHJldHVybiBhdHRyTmFtZSA9PSBocmVmQXR0cjsKICAgICBjYXNlIEludmFs
aWRhdGVPbkl0ZW1BdHRyQ2hhbmdlOgogI2lmIEVOQUJMRShNSUNST0RBVEEpCiAgICAgICAgIHJl
dHVybiBhdHRyTmFtZSA9PSBpdGVtc2NvcGVBdHRyIHx8IGF0dHJOYW1lID09IGl0ZW1wcm9wQXR0
ciB8fCBhdHRyTmFtZSA9PSBpdGVtdHlwZUF0dHI7CkBAIC0zOTA5LDExICszOTE3LDEzIEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkSW52YWxpZGEKICAgICBjYXNlIERvTm90SW52
YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlczoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEludmFsaWRhdGVPbkFueUF0dHJDaGFu
Z2U6CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgRG9jdW1lbnQ6OnNob3VsZEludmFsaWRhdGVEeW5hbWljU3VidHJlZU5vZGVMaXN0KGNv
bnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAorYm9vbCBEb2N1bWVudDo6c2hvdWxk
SW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBj
b25zdAogewogICAgIGlmIChhdHRyTmFtZSkgewogICAgICAgICBmb3IgKGludCB0eXBlID0gRG9O
b3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzICsgMTsgdHlwZSA8IG51bU5vZGVMaXN0SW52
YWxpZGF0aW9uVHlwZXM7IHR5cGUrKykgewpAQCAtMzkzMyw4ICszOTQzLDggQEAgYm9vbCBEb2N1
bWVudDo6c2hvdWxkSW52YWxpZGF0ZUR5bmFtaWNTdQogCiB2b2lkIERvY3VtZW50OjpjbGVhck5v
ZGVMaXN0Q2FjaGVzKCkKIHsKLSAgICBIYXNoU2V0PER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqPjo6
aXRlcmF0b3IgZW5kID0gbV9saXN0c0ludmFsaWRhdGVkQXREb2N1bWVudC5lbmQoKTsKLSAgICBm
b3IgKEhhc2hTZXQ8RHluYW1pY1N1YnRyZWVOb2RlTGlzdCo+OjppdGVyYXRvciBpdCA9IG1fbGlz
dHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIEhh
c2hTZXQ8RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKj46Oml0ZXJhdG9yIGVuZCA9IG1fbGlzdHNJ
bnZhbGlkYXRlZEF0RG9jdW1lbnQuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PER5bmFtaWNOb2Rl
TGlzdENhY2hlQmFzZSo+OjppdGVyYXRvciBpdCA9IG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1l
bnQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+aW52YWxpZGF0ZUNh
Y2hlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMjI1NDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiAr
NzksNyBAQCBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI7CiBjbGFzcyBEb2N1bWVudFBh
cnNlcjsKIGNsYXNzIERvY3VtZW50VHlwZTsKIGNsYXNzIERvY3VtZW50V2Vha1JlZmVyZW5jZTsK
K2NsYXNzIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTsKIGNsYXNzIEVkaXRpbmdUZXh0OwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKQEAgLTE4NiwyMCArMTg3LDE4IEBA
IGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlIHsKIAogZW51bSBTdHlsZVJlc29sdmVyVXBk
YXRlRmxhZyB7IFJlY2FsY1N0eWxlSW1tZWRpYXRlbHksIERlZmVyUmVjYWxjU3R5bGUsIFJlY2Fs
Y1N0eWxlSWZOZWVkZWQgfTsKIAotZW51bSBOb2RlTGlzdFJvb3RUeXBlIHsKLSAgICBOb2RlTGlz
dElzUm9vdGVkQXROb2RlLAotICAgIE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50LAotfTsKLQog
ZW51bSBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgewogICAgIERvTm90SW52YWxpZGF0ZU9uQXR0
cmlidXRlQ2hhbmdlcyA9IDAsCiAgICAgSW52YWxpZGF0ZU9uQ2xhc3NBdHRyQ2hhbmdlLAorICAg
IEludmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2UsCiAgICAgSW52YWxpZGF0ZU9uTmFtZUF0dHJD
aGFuZ2UsCiAgICAgSW52YWxpZGF0ZU9uRm9yQXR0ckNoYW5nZSwKICAgICBJbnZhbGlkYXRlRm9y
Rm9ybUNvbnRyb2xzLAorICAgIEludmFsaWRhdGVPbkhSZWZBdHRyQ2hhbmdlLAogICAgIEludmFs
aWRhdGVPbkl0ZW1BdHRyQ2hhbmdlLAorICAgIEludmFsaWRhdGVPbkFueUF0dHJDaGFuZ2UsCiB9
OwotY29uc3QgaW50IG51bU5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZXMgPSBJbnZhbGlkYXRlT25J
dGVtQXR0ckNoYW5nZSArIDE7Citjb25zdCBpbnQgbnVtTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBl
cyA9IEludmFsaWRhdGVPbkFueUF0dHJDaGFuZ2UgKyAxOwogCiBjbGFzcyBEb2N1bWVudCA6IHB1
YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB7CiBwdWJsaWM6CkBAIC03MzgsOSArNzM3LDkgQEAgcHVibGljOgogICAgIGJv
b2wgaXNQZW5kaW5nU3R5bGVSZWNhbGMoKSBjb25zdDsKICAgICB2b2lkIHN0eWxlUmVjYWxjVGlt
ZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJEeW5hbWljU3Vi
dHJlZU5vZGVMaXN0KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqLCBOb2RlTGlzdFJvb3RUeXBlLCBO
b2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwotICAgIHZvaWQgdW5yZWdpc3RlckR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCosIE5vZGVMaXN0Um9vdFR5cGUsIE5v
ZGVMaXN0SW52YWxpZGF0aW9uVHlwZSk7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlRHluYW1p
Y1N1YnRyZWVOb2RlTGlzdChjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSA9IDApIGNvbnN0
OworICAgIHZvaWQgcmVnaXN0ZXJOb2RlTGlzdENhY2hlKER5bmFtaWNOb2RlTGlzdENhY2hlQmFz
ZSopOworICAgIHZvaWQgdW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUoRHluYW1pY05vZGVMaXN0Q2Fj
aGVCYXNlKik7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXMoY29uc3Qg
UXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSAwKSBjb25zdDsKICAgICB2b2lkIGNsZWFyTm9kZUxp
c3RDYWNoZXMoKTsKIAogICAgIHZvaWQgYXR0YWNoTm9kZUl0ZXJhdG9yKE5vZGVJdGVyYXRvciop
OwpAQCAtMTQyNCw3ICsxNDIzLDcgQEAgcHJpdmF0ZToKIAogICAgIEluaGVyaXRlZEJvb2wgbV9k
ZXNpZ25Nb2RlOwogCi0gICAgSGFzaFNldDxEeW5hbWljU3VidHJlZU5vZGVMaXN0Kj4gbV9saXN0
c0ludmFsaWRhdGVkQXREb2N1bWVudDsKKyAgICBIYXNoU2V0PER5bmFtaWNOb2RlTGlzdENhY2hl
QmFzZSo+IG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQ7CiAgICAgdW5zaWduZWQgbV9ub2Rl
TGlzdENvdW50c1tudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzXTsKIAogICAgIEhUTUxDb2xs
ZWN0aW9uKiBtX2NvbGxlY3Rpb25zW051bVVubmFtZWREb2N1bWVudENhY2hlZFR5cGVzXTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMjI1NDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsOSArMjUsMzIgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdGVDYWNoZSgpIGNvbnN0Cit7CisgICAgbV9j
YWNoZWRJdGVtID0gMDsKKyAgICBtX2lzTGVuZ3RoQ2FjaGVWYWxpZCA9IGZhbHNlOworICAgIG1f
aXNJdGVtQ2FjaGVWYWxpZCA9IGZhbHNlOworICAgIG1faXNOYW1lQ2FjaGVWYWxpZCA9IGZhbHNl
OworICAgIGlmICh0eXBlKCkgPT0gSW52YWxpZENvbGxlY3Rpb25UeXBlKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb25zdCBIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSogY2FjaGVCYXNlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgSFRNTENvbGxlY3Rpb25DYWNoZUJhc2UqPih0aGlzKTsKKyAgICBjYWNo
ZUJhc2UtPm1faWRDYWNoZS5jbGVhcigpOworICAgIGNhY2hlQmFzZS0+bV9uYW1lQ2FjaGUuY2xl
YXIoKTsKKyAgICBjYWNoZUJhc2UtPm1fY2FjaGVkRWxlbWVudHNBcnJheU9mZnNldCA9IDA7CisK
KyNpZiBFTkFCTEUoTUlDUk9EQVRBKQorICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgbW9y
ZSBnZW5lcmljIG1lY2hhbmlzbSB0byBjbGVhciBjYWNoZXMgaW4gc3ViY2xhc3Nlcy4KKyAgICBp
ZiAodHlwZSgpID09IEl0ZW1Qcm9wZXJ0aWVzKQorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24qPih0aGlzKS0+aW52YWxpZGF0ZUNhY2hlKCk7CisjZW5k
aWYKK30KKwogdW5zaWduZWQgRHluYW1pY1N1YnRyZWVOb2RlTGlzdDo6bGVuZ3RoKCkgY29uc3QK
IHsKICAgICBpZiAoaXNMZW5ndGhDYWNoZVZhbGlkKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRHluYW1pY05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0R5
bmFtaWNOb2RlTGlzdC5oCShyZXZpc2lvbiAxMjI1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RHluYW1pY05vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI0ICszNSwyNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgTm9kZTsKIAorZW51bSBOb2Rl
TGlzdFJvb3RUeXBlIHsKKyAgICBOb2RlTGlzdElzUm9vdGVkQXROb2RlLAorICAgIE5vZGVMaXN0
SXNSb290ZWRBdERvY3VtZW50LAorfTsKKwogY2xhc3MgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNl
IHsKIHB1YmxpYzoKLSAgICBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UoTm9kZUxpc3RSb290VHlw
ZSByb290VHlwZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUpCi0g
ICAgICAgIDogbV9yb290ZWRBdERvY3VtZW50KHJvb3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRB
dERvY3VtZW50KQorICAgIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZShOb2RlTGlzdFJvb3RUeXBl
IHJvb3RUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSwgQ29s
bGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUgPSBJbnZhbGlkQ29sbGVjdGlvblR5cGUpCisgICAg
ICAgIDogbV9jYWNoZWRJdGVtKDApCisgICAgICAgICwgbV9pc0xlbmd0aENhY2hlVmFsaWQoZmFs
c2UpCisgICAgICAgICwgbV9pc0l0ZW1DYWNoZVZhbGlkKGZhbHNlKQorICAgICAgICAsIG1fcm9v
dGVkQXREb2N1bWVudChyb290VHlwZSA9PSBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudCkKICAg
ICAgICAgLCBtX2ludmFsaWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZSkKLSAgICAgICAgLCBt
X2NvbGxlY3Rpb25UeXBlKEludmFsaWRDb2xsZWN0aW9uVHlwZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2ludmFsaWRhdGlvblR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRh
dGlvblR5cGUpKTsKLSAgICAgICAgY2xlYXJDYWNoZSgpOwotICAgIH0KLQotICAgIER5bmFtaWNO
b2RlTGlzdENhY2hlQmFzZShDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKLSAgICAgICAg
OiBtX3Jvb3RlZEF0RG9jdW1lbnQoZmFsc2UpIC8vIElnbm9yZWQKLSAgICAgICAgLCBtX2ludmFs
aWRhdGlvblR5cGUoRG9Ob3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzKSAvLyBJZ25vcmVk
CisgICAgICAgICwgbV9pc05hbWVDYWNoZVZhbGlkKGZhbHNlKQogICAgICAgICAsIG1fY29sbGVj
dGlvblR5cGUoY29sbGVjdGlvblR5cGUpCiAgICAgeworICAgICAgICBBU1NFUlQobV9pbnZhbGlk
YXRpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZhbGlkYXRpb25UeXBlKSk7CiAg
ICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b2xsZWN0aW9uVHlwZSkpOwotICAgICAgICBjbGVhckNhY2hlKCk7CiAgICAgfQogCiBwdWJsaWM6
CkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52
YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlPihtX2ludmFsaWRhdGlvblR5cGUpOyB9CiAgICAg
QUxXQVlTX0lOTElORSBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29sbGVjdGlvblR5cGU+KG1fY29sbGVjdGlvblR5cGUpOyB9CiAKKyAgICB2b2lkIGlu
dmFsaWRhdGVDYWNoZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzSXRlbUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzSXRlbUNhY2hlVmFsaWQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIE5vZGUqIGNhY2hlZEl0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZEl0ZW07IH0KQEAgLTg1LDI0ICs4NywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBo
YXNOYW1lQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmFtZUNhY2hlVmFsaWQ7IH0KICAgICB2
b2lkIHNldEhhc05hbWVDYWNoZSgpIGNvbnN0IHsgbV9pc05hbWVDYWNoZVZhbGlkID0gdHJ1ZTsg
fQogCi0gICAgdm9pZCBjbGVhckNhY2hlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIG1fY2FjaGVk
SXRlbSA9IDA7Ci0gICAgICAgIG1faXNMZW5ndGhDYWNoZVZhbGlkID0gZmFsc2U7Ci0gICAgICAg
IG1faXNJdGVtQ2FjaGVWYWxpZCA9IGZhbHNlOwotICAgICAgICBtX2lzTmFtZUNhY2hlVmFsaWQg
PSBmYWxzZTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgbXV0YWJsZSBOb2RlKiBtX2NhY2hlZEl0
ZW07CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZExlbmd0aDsKICAgICBtdXRhYmxlIHVu
c2lnbmVkIG1fY2FjaGVkSXRlbU9mZnNldDsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faXNMZW5n
dGhDYWNoZVZhbGlkIDogMTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faXNJdGVtQ2FjaGVWYWxp
ZCA6IDE7Ci0KLSAgICAvLyBGcm9tIER5bmFtaWNOb2RlTGlzdAogICAgIGNvbnN0IHVuc2lnbmVk
IG1fcm9vdGVkQXREb2N1bWVudCA6IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9pbnZhbGlkYXRp
b25UeXBlIDogMzsKKyAgICBjb25zdCB1bnNpZ25lZCBtX2ludmFsaWRhdGlvblR5cGUgOiA0Owog
CiAgICAgLy8gRnJvbSBIVE1MQ29sbGVjdGlvbgogICAgIG11dGFibGUgdW5zaWduZWQgbV9pc05h
bWVDYWNoZVZhbGlkIDogMTsKQEAgLTEzMyw3ICsxMjUsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBP
dGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAgTm9kZSogb3duZXJOb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9vd25lck5vZGUuZ2V0KCk7IH0KLSAgICB2b2lkIGludmFsaWRhdGVDYWNo
ZSgpIHsgY2xlYXJDYWNoZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBOb2RlKiByb290Tm9kZSgp
IGNvbnN0CkBAIC0xNTQsNyArMTQ1LDcgQEAgY2xhc3MgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCA6
IHB1YmxpYyBEeQogcHVibGljOgogICAgIHZpcnR1YWwgfkR5bmFtaWNTdWJ0cmVlTm9kZUxpc3Qo
KQogICAgIHsKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9k
ZUxpc3QodGhpcywgcm9vdFR5cGUoKSwgaW52YWxpZGF0aW9uVHlwZSgpKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUodGhpcyk7CiAgICAgfQogICAgIHZpcnR1
YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOb2RlKiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsKQEAgLTE2Myw3ICsxNTQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG5v
ZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlLCBOb2RlTGlzdFJv
b3RUeXBlIHJvb3RUeXBlID0gTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZSkKICAgICAgICAgOiBEeW5h
bWljTm9kZUxpc3Qobm9kZSwgcm9vdFR5cGUsIGludmFsaWRhdGlvblR5cGUpCiAgICAgewotICAg
ICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QodGhpcywgcm9v
dFR5cGUsIGludmFsaWRhdGlvblR5cGUpOworICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3Rlck5v
ZGVMaXN0Q2FjaGUodGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaAkocmV2aXNpb24gMTIyNTQ3KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIHB1
YmxpYzoKIAogICAgICAgICByZXR1cm4gKCptX2NhY2hlZENvbGxlY3Rpb25zKVt0eXBlIC0gRmly
c3ROb2RlQ29sbGVjdGlvblR5cGVdOwogICAgIH0KKwogICAgIHZvaWQgcmVtb3ZlQ2FjaGVkSFRN
TENvbGxlY3Rpb24oSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlIHR5
cGUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jYWNoZWRDb2xsZWN0aW9ucyk7CkBAIC02NCw2
ICs2NSwzNCBAQCBwdWJsaWM6CiAgICAgICAgICgqbV9jYWNoZWRDb2xsZWN0aW9ucylbdHlwZSAt
IEZpcnN0Tm9kZUNvbGxlY3Rpb25UeXBlXSA9IDA7CiAgICAgfQogCisgICAgdm9pZCBjbGVhckhU
TUxDb2xsZWN0aW9uQ2FjaGVzKCkKKyAgICB7CisgICAgICAgIGlmICghbV9jYWNoZWRDb2xsZWN0
aW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgKCptX2NhY2hlZENvbGxlY3Rpb25zKS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAg
aWYgKCgqbV9jYWNoZWRDb2xsZWN0aW9ucylbaV0pCisgICAgICAgICAgICAgICAgKCptX2NhY2hl
ZENvbGxlY3Rpb25zKVtpXS0+aW52YWxpZGF0ZUNhY2hlKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIGFkb3B0VHJlZVNjb3BlKERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQq
IG5ld0RvY3VtZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhY2hlZENvbGxlY3Rpb25zKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAo
Km1fY2FjaGVkQ29sbGVjdGlvbnMpLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBIVE1MQ29s
bGVjdGlvbiogY29sbGVjdGlvbiA9ICgqbV9jYWNoZWRDb2xsZWN0aW9ucylbaV07CisgICAgICAg
ICAgICBpZiAoIWNvbGxlY3Rpb24pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBjb2xsZWN0aW9uLT5pbnZhbGlkYXRlQ2FjaGUoKTsKKyAgICAgICAgICAgIGlmIChvbGRE
b2N1bWVudCAhPSBuZXdEb2N1bWVudCkgeworICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51
bnJlZ2lzdGVyTm9kZUxpc3RDYWNoZShjb2xsZWN0aW9uKTsKKyAgICAgICAgICAgICAgICBuZXdE
b2N1bWVudC0+cmVnaXN0ZXJOb2RlTGlzdENhY2hlKGNvbGxlY3Rpb24pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCiAgICAgdHlwZWRlZiBGaXhlZEFycmF5PEhUTUxDb2xsZWN0
aW9uKiwgTnVtTm9kZUNvbGxlY3Rpb25UeXBlcz4gQ2FjaGVkSFRNTENvbGxlY3Rpb25BcnJheTsK
ICAgICBPd25QdHI8Q2FjaGVkSFRNTENvbGxlY3Rpb25BcnJheT4gbV9jYWNoZWRDb2xsZWN0aW9u
czsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMTIyNTQ3KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRHluYW1pY05vZGVMaXN0LmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgogI2luY2x1ZGUg
IkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50Q29u
dGV4dC5oIgpAQCAtOTYzLDcgKzk2NCw3IEBAIHZvaWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0
c0NhY2hlQWZ0ZXIKICAgICBpZiAoIWF0dHJpYnV0ZU93bmVyRWxlbWVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFkb2N1bWVudCgpLT5zaG91bGRJbnZhbGlkYXRlRHluYW1pY1N1YnRy
ZWVOb2RlTGlzdCgmYXR0ck5hbWUpKQorICAgIGlmICghZG9jdW1lbnQoKS0+c2hvdWxkSW52YWxp
ZGF0ZU5vZGVMaXN0Q2FjaGVzKCZhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRv
Y3VtZW50KCktPmNsZWFyTm9kZUxpc3RDYWNoZXMoKTsKQEAgLTk3MywxMCArOTc0LDEwIEBAIHZv
aWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXIKICAgICAgICAgaWYgKCFub2Rl
LT5oYXNSYXJlRGF0YSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIE5vZGVSYXJl
RGF0YSogZGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7Ci0gICAgICAgIGlmICghZGF0YS0+bm9kZUxp
c3RzKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBkYXRhLT5ub2RlTGlzdHMo
KS0+aW52YWxpZGF0ZUNhY2hlcygmYXR0ck5hbWUpOworICAgICAgICBpZiAoZGF0YS0+bm9kZUxp
c3RzKCkpCisgICAgICAgICAgICBkYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hlcygm
YXR0ck5hbWUpOworICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8RWxlbWVudFJhcmVEYXRhKj4oZGF0YSktPmNsZWFySFRNTENvbGxlY3Rp
b25DYWNoZXMoKTsKICAgICB9CiB9CiAKQEAgLTk4NSw3ICs5ODYsNyBAQCB2b2lkIE5vZGU6Omlu
dmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyCiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCiAgICAg
ICAgIHJhcmVEYXRhKCktPmNsZWFyQ2hpbGROb2RlTGlzdENhY2hlKCk7CiAKLSAgICBpZiAoIWRv
Y3VtZW50KCktPnNob3VsZEludmFsaWRhdGVEeW5hbWljU3VidHJlZU5vZGVMaXN0KCkpCisgICAg
aWYgKCFkb2N1bWVudCgpLT5zaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXMoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZG9jdW1lbnQoKS0+Y2xlYXJOb2RlTGlzdENhY2hlcygpOwpAQCAt
OTk0LDEwICs5OTUsMTAgQEAgdm9pZCBOb2RlOjppbnZhbGlkYXRlTm9kZUxpc3RzQ2FjaGVBZnRl
cgogICAgICAgICBpZiAoIW5vZGUtPmhhc1JhcmVEYXRhKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gbm9kZS0+cmFyZURhdGEoKTsKLSAgICAg
ICAgaWYgKCFkYXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlkYXRlQ2FjaGVzKCk7CisgICAgICAgIGlmIChk
YXRhLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlk
YXRlQ2FjaGVzKCk7CisgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihkYXRhKS0+Y2xlYXJIVE1MQ29sbGVj
dGlvbkNhY2hlcygpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aAkocmV2aXNpb24gMTIyNTQ3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsOCArMTM4LDggQEAgcHVibGljOgogICAgICAgICAgICAg
Zm9yIChOb2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2F0
b21pY05hbWVDYWNoZXMuYmVnaW4oKTsgaXQgIT0gYXRvbWljTmFtZUNhY2hlRW5kOyArK2l0KSB7
CiAgICAgICAgICAgICAgICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCogbGlzdCA9IGl0LT5zZWNv
bmQ7CiAgICAgICAgICAgICAgICAgaWYgKGxpc3QtPmlzUm9vdGVkQXREb2N1bWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRHluYW1pY1N1YnRyZWVO
b2RlTGlzdChsaXN0LCBsaXN0LT5yb290VHlwZSgpLCBsaXN0LT5pbnZhbGlkYXRpb25UeXBlKCkp
OwotICAgICAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+cmVnaXN0ZXJEeW5hbWljU3VidHJl
ZU5vZGVMaXN0KGxpc3QsIGxpc3QtPnJvb3RUeXBlKCksIGxpc3QtPmludmFsaWRhdGlvblR5cGUo
KSk7CisgICAgICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyTm9kZUxpc3RD
YWNoZShsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgbmV3RG9jdW1lbnQtPnJlZ2lzdGVyTm9k
ZUxpc3RDYWNoZShsaXN0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAg
LTE0Nyw4ICsxNDcsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKE5vZGVMaXN0TmFtZUNh
Y2hlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbmFtZUNhY2hlcy5iZWdpbigpOyBpdCAhPSBu
YW1lQ2FjaGVFbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAgICBEeW5hbWljU3VidHJlZU5vZGVM
aXN0KiBsaXN0ID0gaXQtPnNlY29uZDsKICAgICAgICAgICAgICAgICBpZiAobGlzdC0+aXNSb290
ZWRBdERvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVn
aXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KGxpc3QsIGxpc3QtPnJvb3RUeXBlKCksIGxpc3Qt
PmludmFsaWRhdGlvblR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LT5y
ZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QobGlzdCwgbGlzdC0+cm9vdFR5cGUoKSwgbGlz
dC0+aW52YWxpZGF0aW9uVHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQt
PnVucmVnaXN0ZXJOb2RlTGlzdENhY2hlKGxpc3QpOworICAgICAgICAgICAgICAgICAgICBuZXdE
b2N1bWVudC0+cmVnaXN0ZXJOb2RlTGlzdENhY2hlKGxpc3QpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KIApAQCAtMTU2LDggKzE1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGZvciAoVGFnTm9kZUxpc3RDYWNoZU5TOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdGFnTm9kZUxp
c3RDYWNoZU5TLmJlZ2luKCk7IGl0ICE9IHRhZ0VuZDsgKytpdCkgewogICAgICAgICAgICAgICAg
IER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QgPSBpdC0+c2Vjb25kOwogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbGlzdC0+aXNSb290ZWRBdERvY3VtZW50KCkpOwotICAgICAgICAgICAgICAg
IG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRHluYW1pY1N1YnRyZWVOb2RlTGlzdChsaXN0LCBsaXN0
LT5yb290VHlwZSgpLCBsaXN0LT5pbnZhbGlkYXRpb25UeXBlKCkpOwotICAgICAgICAgICAgICAg
IG5ld0RvY3VtZW50LT5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QobGlzdCwgbGlzdC0+
cm9vdFR5cGUoKSwgbGlzdC0+aW52YWxpZGF0aW9uVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBv
bGREb2N1bWVudC0+dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUobGlzdCk7CisgICAgICAgICAgICAg
ICAgbmV3RG9jdW1lbnQtPnJlZ2lzdGVyTm9kZUxpc3RDYWNoZShsaXN0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVB
ZG9wdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRv
cHRlci5jcHAJKHJldmlzaW9uIDEyMjU0NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpbmNsdWRl
ICJUcmVlU2NvcGVBZG9wdGVyLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
IkVsZW1lbnRSYXJlRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRl
ICJOb2RlUmFyZURhdGEuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsOSArNDksMTIgQEAgdm9p
ZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcAogICAgICAgICBvbGREb2N1bWVu
dC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5v
ZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QpKSB7Ci0gICAgICAgIE5vZGVS
YXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRUcmVlU2NvcGUobmV3RG9jdW1lbnQgPT0gbV9u
ZXdTY29wZSA/IDAgOiBtX25ld1Njb3BlKTsKLSAgICAgICAgaWYgKHJhcmVEYXRhICYmIHJhcmVE
YXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+YWRv
cHRUcmVlU2NvcGUob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKKyAgICAgICAgaWYgKE5vZGVS
YXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5zZXRUcmVlU2NvcGUobmV3RG9jdW1lbnQgPT0gbV9u
ZXdTY29wZSA/IDAgOiBtX25ld1Njb3BlKSkgeworICAgICAgICAgICAgaWYgKHJhcmVEYXRhLT5u
b2RlTGlzdHMoKSkKKyAgICAgICAgICAgICAgICByYXJlRGF0YS0+bm9kZUxpc3RzKCktPmFkb3B0
VHJlZVNjb3BlKG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CisgICAgICAgICAgICBpZiAobm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnRS
YXJlRGF0YSo+KHJhcmVEYXRhKS0+YWRvcHRUcmVlU2NvcGUob2xkRG9jdW1lbnQsIG5ld0RvY3Vt
ZW50KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCiAg
ICAgICAgICAgICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQobm9kZSwgb2xkRG9jdW1lbnQsIG5ld0Rv
Y3VtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMjI1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQCBIVE1MQWxsQ29sbGVjdGlv
bjo6fkhUTUxBbGxDb2xsZWN0aW9uKCkKIAogTm9kZSogSFRNTEFsbENvbGxlY3Rpb246Om5hbWVk
SXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGluZGV4KSBj
b25zdAogewotICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAgICAgdXBkYXRlTmFtZUNh
Y2hlKCk7CiAKICAgICBpZiAoVmVjdG9yPEVsZW1lbnQqPiogY2FjaGUgPSBpZENhY2hlKG5hbWUp
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24g
MTIyNTQ3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDExICs3Niw4OCBAQCBzdGF0aWMgYm9vbCBzaG91bGRPbmx5SW5jbHVk
ZURpcmVjdENoaWxkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgTm9kZUxpc3RSb290
VHlwZSByb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZShDb2xsZWN0aW9uVHlwZSB0eXBlKQorewor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRG9jSW1hZ2VzOgorICAgIGNhc2UgRG9jQXBw
bGV0czoKKyAgICBjYXNlIERvY0VtYmVkczoKKyAgICBjYXNlIERvY09iamVjdHM6CisgICAgY2Fz
ZSBEb2NGb3JtczoKKyAgICBjYXNlIERvY0xpbmtzOgorICAgIGNhc2UgRG9jQW5jaG9yczoKKyAg
ICBjYXNlIERvY1NjcmlwdHM6CisgICAgY2FzZSBEb2NBbGw6CisgICAgY2FzZSBXaW5kb3dOYW1l
ZEl0ZW1zOgorICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgorI2lmIEVOQUJMRShNSUNST0RB
VEEpCisgICAgY2FzZSBJdGVtUHJvcGVydGllczoKKyNlbmRpZgorICAgIGNhc2UgRm9ybUNvbnRy
b2xzOgorICAgICAgICByZXR1cm4gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQ7CisgICAgY2Fz
ZSBOb2RlQ2hpbGRyZW46CisgICAgY2FzZSBUYWJsZVRCb2RpZXM6CisgICAgY2FzZSBUU2VjdGlv
blJvd3M6CisgICAgY2FzZSBUYWJsZVJvd3M6CisgICAgY2FzZSBUUkNlbGxzOgorICAgIGNhc2Ug
U2VsZWN0T3B0aW9uczoKKyAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKKyAgICBjYXNlIERhdGFM
aXN0T3B0aW9uczoKKyAgICBjYXNlIE1hcEFyZWFzOgorICAgIGNhc2UgSW52YWxpZENvbGxlY3Rp
b25UeXBlOgorICAgICAgICByZXR1cm4gTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZTsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5vZGVMaXN0SXNSb290ZWRBdE5v
ZGU7Cit9CisKK3N0YXRpYyBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlw
ZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMoQ29sbGVjdGlvblR5cGUgdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIERvY0ltYWdlczoKKyAgICBjYXNlIERvY0VtYmVk
czoKKyAgICBjYXNlIERvY09iamVjdHM6CisgICAgY2FzZSBEb2NGb3JtczoKKyAgICBjYXNlIERv
Y0FuY2hvcnM6IC8vIERlcGVuZHMgb24gbmFtZSBhdHRyaWJ1dGUuCisgICAgY2FzZSBEb2NTY3Jp
cHRzOgorICAgIGNhc2UgRG9jQWxsOgorICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczogLy8gRGVw
ZW5kcyBvbiBpZCBhbmQgbmFtZSBhdHRyaWJ1dGVzLgorICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0
ZW1zOiAvLyBEaXR0by4KKyAgICBjYXNlIE5vZGVDaGlsZHJlbjoKKyAgICBjYXNlIFRhYmxlVEJv
ZGllczoKKyAgICBjYXNlIFRTZWN0aW9uUm93czoKKyAgICBjYXNlIFRhYmxlUm93czoKKyAgICBj
YXNlIFRSQ2VsbHM6CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgIGNhc2UgTWFwQXJlYXM6
CisgICAgICAgIHJldHVybiBEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXM7CisgICAg
Y2FzZSBEb2NBcHBsZXRzOgorICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgorICAgIGNhc2UgRGF0
YUxpc3RPcHRpb25zOgorICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciBzb21lIGRh
eS4KKyAgICAgICAgcmV0dXJuIEludmFsaWRhdGVPbkFueUF0dHJDaGFuZ2U7CisgICAgY2FzZSBE
b2NMaW5rczoKKyAgICAgICAgcmV0dXJuIEludmFsaWRhdGVPbkhSZWZBdHRyQ2hhbmdlOworI2lm
IEVOQUJMRShNSUNST0RBVEEpCisgICAgY2FzZSBJdGVtUHJvcGVydGllczoKKyAgICAgICAgcmV0
dXJuIEludmFsaWRhdGVPbkl0ZW1BdHRyQ2hhbmdlOworI2VuZGlmCisgICAgY2FzZSBGb3JtQ29u
dHJvbHM6CisgICAgICAgIHJldHVybiBJbnZhbGlkYXRlRm9yRm9ybUNvbnRyb2xzOworICAgIGNh
c2UgSW52YWxpZENvbGxlY3Rpb25UeXBlOgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRl
Q2hhbmdlczsKK30KKyAgICAKKwogSFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKE5vZGUq
IGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCi0gICAgOiBIVE1MQ29sbGVjdGlvbkNhY2hlQmFz
ZSh0eXBlKQorICAgIDogSFRNTENvbGxlY3Rpb25DYWNoZUJhc2Uocm9vdFR5cGVGcm9tQ29sbGVj
dGlvblR5cGUodHlwZSksIGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1
dGVzKHR5cGUpLCB0eXBlKQogICAgICwgbV9iYXNlKGJhc2UpCiB7CiAgICAgQVNTRVJUKG1fYmFz
ZSk7CisgICAgbV9iYXNlLT5kb2N1bWVudCgpLT5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUodGhpcyk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxDb2xsZWN0aW9uOjpjcmVhdGUo
Tm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKQEAgLTk4LDI2ICsxNzUsOCBAQCBIVE1M
Q29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKCkKICAgICAgICAgdG9FbGVtZW50KGJhc2UoKSkt
PnJlbW92ZUNhY2hlZEhUTUxDb2xsZWN0aW9uKHRoaXMsIHR5cGUoKSk7CiAgICAgfSBlbHNlIC8v
IEhUTUxOYW1lQ29sbGVjdGlvbiByZW1vdmVzIGNhY2hlIGJ5IGl0c2VsZi4KICAgICAgICAgQVNT
RVJUKHR5cGUoKSA9PSBXaW5kb3dOYW1lZEl0ZW1zIHx8IHR5cGUoKSA9PSBEb2N1bWVudE5hbWVk
SXRlbXMpOwotfQotCi12b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGVJZk5lZWRl
ZCgpIGNvbnN0Ci17Ci0gICAgdWludDY0X3QgZG9jdmVyc2lvbiA9IHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KG1fYmFzZS0+ZG9jdW1lbnQoKSktPmRvbVRyZWVWZXJzaW9uKCk7CiAKLSAgICBp
ZiAoY2FjaGVUcmVlVmVyc2lvbigpID09IGRvY3ZlcnNpb24pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGludmFsaWRhdGVDYWNoZSgpOwotfQotCi12b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlk
YXRlQ2FjaGUoKSBjb25zdAotewotI2lmIEVOQUJMRShNSUNST0RBVEEpCi0gICAgLy8gRklYTUU6
IFRoZXJlIHNob3VsZCBiZSBtb3JlIGdlbmVyaWMgbWVjaGFuaXNtIHRvIGNsZWFyIGNhY2hlcyBp
biBzdWJjbGFzc2VzLgotICAgIGlmICh0eXBlKCkgPT0gSXRlbVByb3BlcnRpZXMpCi0gICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbio+KHRoaXMpLT5jbGVh
ckNhY2hlKCk7Ci0jZW5kaWYKLSAgICBjbGVhckNhY2hlKHN0YXRpY19jYXN0PEhUTUxEb2N1bWVu
dCo+KG1fYmFzZS0+ZG9jdW1lbnQoKSktPmRvbVRyZWVWZXJzaW9uKCkpOworICAgIG1fYmFzZS0+
ZG9jdW1lbnQoKS0+dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUodGhpcyk7CiB9CiAKIGlubGluZSBi
b29sIEhUTUxDb2xsZWN0aW9uOjppc0FjY2VwdGFibGVFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQp
IGNvbnN0CkBAIC0yMDAsNyArMjU5LDYgQEAgRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0ZW1B
ZnRlcih1bnNpZwogCiB1bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIHsK
LSAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwogICAgIGlmIChpc0xlbmd0aENhY2hlVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIGNhY2hlZExlbmd0aCgpOwogCkBAIC0yMjIsNyArMjgwLDYg
QEAgdW5zaWduZWQgSFRNTENvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0CiAKIE5vZGUqIEhUTUxD
b2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIGludmFsaWRhdGVD
YWNoZUlmTmVlZGVkKCk7CiAgICAgaWYgKGlzSXRlbUNhY2hlVmFsaWQoKSAmJiBjYWNoZWRJdGVt
T2Zmc2V0KCkgPT0gaW5kZXgpCiAgICAgICAgIHJldHVybiBjYWNoZWRJdGVtKCk7CiAKQEAgLTMw
Niw3ICszNjMsNiBAQCBOb2RlKiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0CiAg
ICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhvZCB0aGVu
IHNlYXJjaGVzIGZvciBhbgogICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZSBhdHRy
aWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCiAgICAgLy8gdGhhdCBhcmUgYWxsb3dl
ZCBhIG5hbWUgYXR0cmlidXRlLgotICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAKICAg
ICB1bnNpZ25lZCBhcnJheU9mZnNldCA9IDA7CiAgICAgdW5zaWduZWQgaSA9IDA7CkBAIC0zMzIs
NyArMzg4LDYgQEAgTm9kZSogSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdAogCiB2
b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogewotICAgIGludmFs
aWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAgICAgaWYgKGhhc05hbWVDYWNoZSgpKQogICAgICAgICBy
ZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHJldmlzaW9u
IDEyMjU0NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMjMgKzM5LDEzIEBAIGNsYXNzIE5vZGVMaXN0OwogCiBjbGFzcyBIVE1M
Q29sbGVjdGlvbkNhY2hlQmFzZSA6IHB1YmxpYyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2Ugewog
cHVibGljOgotICAgIEhUTUxDb2xsZWN0aW9uQ2FjaGVCYXNlKENvbGxlY3Rpb25UeXBlIHR5cGUp
Ci0gICAgICAgIDogRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKHR5cGUpCisgICAgSFRNTENvbGxl
Y3Rpb25DYWNoZUJhc2UoTm9kZUxpc3RSb290VHlwZSByb290VHlwZSwgTm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBl
KQorICAgICAgICA6IER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZShyb290VHlwZSwgaW52YWxpZGF0
aW9uVHlwZSwgY29sbGVjdGlvblR5cGUpCiAgICAgICAgICwgbV9jYWNoZWRFbGVtZW50c0FycmF5
T2Zmc2V0KDApCi0gICAgICAgICwgbV9jYWNoZVRyZWVWZXJzaW9uKDApCiAgICAgewogICAgIH0K
IAogcHJvdGVjdGVkOgotICAgIHZvaWQgY2xlYXJDYWNoZSh1aW50NjRfdCBjdXJyZW50RG9tVHJl
ZVZlcnNpb24pIGNvbnN0Ci0gICAgewotICAgICAgICBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6
OmNsZWFyQ2FjaGUoKTsKLSAgICAgICAgbV9pZENhY2hlLmNsZWFyKCk7Ci0gICAgICAgIG1fbmFt
ZUNhY2hlLmNsZWFyKCk7Ci0gICAgICAgIG1fY2FjaGVkRWxlbWVudHNBcnJheU9mZnNldCA9IDA7
Ci0gICAgICAgIG1fY2FjaGVUcmVlVmVyc2lvbiA9IGN1cnJlbnREb21UcmVlVmVyc2lvbjsKLSAg
ICB9Ci0KICAgICB2b2lkIHNldEl0ZW1DYWNoZShOb2RlKiBpdGVtLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGVsZW1lbnRzQXJyYXlPZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICBzZXRJ
dGVtQ2FjaGUoaXRlbSwgb2Zmc2V0KTsKQEAgLTYzLDggKzUzLDYgQEAgcHJvdGVjdGVkOgogICAg
IH0KICAgICB1bnNpZ25lZCBjYWNoZWRFbGVtZW50c0FycmF5T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRFbGVtZW50c0FycmF5T2Zmc2V0OyB9CiAKLSAgICB1aW50NjRfdCBjYWNoZVRy
ZWVWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZVRyZWVWZXJzaW9uOyB9Ci0KICAgICB0
eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxWZWN0b3I8RWxlbWVudCo+
ID4gPiBOb2RlQ2FjaGVNYXA7CiAgICAgVmVjdG9yPEVsZW1lbnQqPiogaWRDYWNoZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1faWRDYWNoZS5nZXQobmFtZS5pbXBs
KCkpOyB9CiAgICAgVmVjdG9yPEVsZW1lbnQqPiogbmFtZUNhY2hlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9uYW1lQ2FjaGUuZ2V0KG5hbWUuaW1wbCgpKTsgfQpA
QCAtNzYsMTMgKzY0LDEzIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdXNpbmcgRHluYW1p
Y05vZGVMaXN0Q2FjaGVCYXNlOjppc1Jvb3RlZEF0RG9jdW1lbnQ7CiAgICAgdXNpbmcgRHluYW1p
Y05vZGVMaXN0Q2FjaGVCYXNlOjpzaG91bGRJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2U7Ci0g
ICAgdXNpbmcgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjpjbGVhckNhY2hlOwogICAgIHVzaW5n
IER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6c2V0SXRlbUNhY2hlOwogCiAgICAgbXV0YWJsZSBO
b2RlQ2FjaGVNYXAgbV9pZENhY2hlOwogICAgIG11dGFibGUgTm9kZUNhY2hlTWFwIG1fbmFtZUNh
Y2hlOwogICAgIG11dGFibGUgdW5zaWduZWQgbV9jYWNoZWRFbGVtZW50c0FycmF5T2Zmc2V0Owot
ICAgIG11dGFibGUgdWludDY0X3QgbV9jYWNoZVRyZWVWZXJzaW9uOworCisgICAgZnJpZW5kIHZv
aWQgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlOjppbnZhbGlkYXRlQ2FjaGUoKSBjb25zdDsKIH07
CiAKIGNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rp
b24+LCBwdWJsaWMgSFRNTENvbGxlY3Rpb25DYWNoZUJhc2UgewpAQCAtMTAxLDcgKzg5LDYgQEAg
cHVibGljOgogICAgIHZvaWQgbmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAg
ICAgewotICAgICAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwogICAgICAgICBpZiAoaXNM
ZW5ndGhDYWNoZVZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gIWNhY2hlZExlbmd0aCgpOwog
ICAgICAgICBpZiAoaXNJdGVtQ2FjaGVWYWxpZCgpKQpAQCAtMTEwLDcgKzk3LDYgQEAgcHVibGlj
OgogICAgIH0KICAgICBib29sIGhhc0V4YWN0bHlPbmVJdGVtKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAgICAgICAgIGlmIChpc0xlbmd0aENhY2hl
VmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWRMZW5ndGgoKSA9PSAxOwogICAgICAg
ICBpZiAoaXNJdGVtQ2FjaGVWYWxpZCgpKQpAQCAtMTIwLDkgKzEwNiw2IEBAIHB1YmxpYzoKIAog
ICAgIE5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2UuZ2V0KCk7IH0KIAotICAgIHZv
aWQgaW52YWxpZGF0ZUNhY2hlKCkgY29uc3Q7Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVJZk5l
ZWRlZCgpIGNvbnN0OwotCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTENvbGxlY3Rpb24oTm9kZSogYmFz
ZSwgQ29sbGVjdGlvblR5cGUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMjI1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBA
QCBOb2RlKiBIVE1MRm9ybUNvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zCiAgICAgLy8gYXR0cmli
dXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZv
ciBhbgogICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZSBhdHRyaWJ1dGUsIGJ1dCBv
bmx5IG9uIHRob3NlIGVsZW1lbnRzCiAgICAgLy8gdGhhdCBhcmUgYWxsb3dlZCBhIG5hbWUgYXR0
cmlidXRlLgotICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAgICAgY29uc3QgVmVjdG9y
PEhUTUxJbWFnZUVsZW1lbnQqPiogaW1hZ2VzRWxlbWVudHMgPSBiYXNlKCktPmhhc1RhZ05hbWUo
ZmllbGRzZXRUYWcpID8gMCA6ICZmb3JtSW1hZ2VFbGVtZW50cygpOwogICAgIGlmIChIVE1MRWxl
bWVudCogaXRlbSA9IGZpcnN0TmFtZWRJdGVtKGZvcm1Db250cm9sRWxlbWVudHMoKSwgaW1hZ2Vz
RWxlbWVudHMsIGlkQXR0ciwgbmFtZSkpCiAgICAgICAgIHJldHVybiBpdGVtOwpAQCAtMTIxLDcg
KzEyMCw2IEBAIE5vZGUqIEhUTUxGb3JtQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnMKIAogdm9p
ZCBIVE1MRm9ybUNvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0CiB7Ci0gICAgaW52
YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKICAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCiAgICAgICAg
IHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVj
dGlvbi5oCShyZXZpc2lvbiAxMjI1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25zQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB1
c2luZyBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQ7Ci0KIHByaXZhdGU6
CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKEVsZW1lbnQqKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCShyZXZpc2lv
biAxMjI1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNiBAQCBIVE1MRWxlbWVudCogSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uOjppCiAKIHZvaWQgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
Ojp1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogewotICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVk
KCk7CiAgICAgaWYgKG1faGFzUHJvcGVydHlOYW1lQ2FjaGUpCiAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5o
CShyZXZpc2lvbiAxMjI1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5hbWVkSXRlbShjb25zdCBTdHJpbmcmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdm9pZCBjbGVhckNhY2hlKCkgY29uc3QK
KyAgICB2b2lkIGludmFsaWRhdGVDYWNoZSgpIGNvbnN0CiAgICAgewogICAgICAgICBtX2l0ZW1S
ZWZFbGVtZW50cy5jbGVhcigpOwogICAgICAgICBtX3Byb3BlcnR5TmFtZXMuY2xlYXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152312</attachid>
            <date>2012-07-13 11:52:34 -0700</date>
            <delta_ts>2012-07-13 12:35:58 -0700</delta_ts>
            <desc>Fixed builds</desc>
            <filename>bug-90326-20120713115601.patch</filename>
            <type>text/plain</type>
            <size>34124</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDEyLTA3LTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhUTUxDb2xsZWN0aW9uIHNob3Vs
ZCB1c2UgRHluYW1pY05vZGVMaXN0J3MgaW52YWxpZGF0aW9uIG1vZGVsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMyNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgSFRNTENvbGxlY3Rpb24gaW52
YWxpZGF0ZWQgdXBvbiBhdHRyaWJ1dGUgYW5kIGNoaWxkcmVuIGNoYW5nZXMgaW5zdGVhZCBvZiBp
bnZhbGlkYXRpbmcgaXQgb24gZGVtYW5kCisgICAgICAgIGJ5IGNvbXBhcmluZyBET00gdHJlZSB2
ZXJzaW9ucy4gTm9kZSB0aGF0IEhUTUxDb2xsZWN0aW9ucyBvd25lZCBieSBEb2N1bWVudCBhcmUg
aW52YWxpZGF0ZWQgd2l0aCBvdGhlcgorICAgICAgICBkb2N1bWVudC1yb290ZWQgbm9kZSBsaXN0
cyBpbiBtX2xpc3RzSW52YWxpZGF0ZWRBdERvY3VtZW50IGZvciBzaW1wbGljaXR5IGFsdGhvdWdo
IHRoaXMgbWVjaGFuaXNtIGlzCisgICAgICAgIG5vcm1hbGx5IHVzZWQgZm9yIG5vZGUgbGlzdHMg
b3duZWQgYnkgYSBub24tRG9jdW1lbnQgbm9kZSB0aGF0IGNvbnRhaW5zIG5vZGVzIG91dHNpZGUg
b2YgaXRzIHN1YnRyZWUuCisgICAgICAgIEl0ZW1Qcm9wZXJ0aWVzIGFuZCBGb3JtQ29udHJvbHMg
YXJlIG1vcmUgInRyYWRpdGlvbmFsIiB1c2VycyBvZiB0aGUgbWVjaGFuaXNtLgorCisgICAgICAg
IEFsc28sIG1lcmdlZCBEeW5hbWljTm9kZUxpc3Q6OmludmFsaWRhdGVDYWNoZSBhbmQgSFRNTENv
bGxlY3Rpb246OmludmFsaWRhdGVDYWNoZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlKTogUmVu
YW1lZC4gTm8gbG9uZ2VyIHRha2VzIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBvcgorICAgICAg
ICBOb2RlTGlzdFJvb3RUeXBlIHNpbmNlIHRoZXkgY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIGNh
Y2hlIGJhc2UuIEluY3JlbWVudCB0aGUgbm9kZSBsaXN0IGNvdW50ZXIgZm9yCisgICAgICAgIElu
dmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2Ugd2hlbiBhIEhUTUxDb2xsZWN0aW9uIGlzIHBhc3Nl
ZCBpbiBzaW5jZSBhbGwgSFRNTENvbGxlY3Rpb25zIG5lZWQgdG8gYmUKKyAgICAgICAgaW52YWxp
ZGF0ZWQgb24gaWQgb3IgbmFtZSBjb250ZW50IGF0dHJpYnV0ZSBjaGFuZ2VzIGR1ZSB0byBuYW1l
ZCBnZXR0ZXJzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJOb2RlTGlz
dENhY2hlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRJbnZhbGlkYXRlTm9kZUxp
c3RGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRl
Tm9kZUxpc3RDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsZWFyTm9kZUxp
c3RDYWNoZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6
IEFkZGVkIEludmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2UsIEludmFsaWRhdGVPbkhSZWZBdHRy
Q2hhbmdlLCBhbmQgSW52YWxpZGF0ZU9uQW55QXR0ckNoYW5nZS4KKyAgICAgICAgKERvY3VtZW50
KToKKyAgICAgICAgKiBkb20vRHluYW1pY05vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6aW52YWxpZGF0ZUNhY2hlKTogQWRkZWQuIEludmFs
aWRhdGVzIGNhY2hlcyBvZiBib3RoIER5bmFtaWNOb2RlTGlzdAorICAgICAgICBhbmQgSFRNTENv
bGxlY3Rpb24uIFdlIGNhbid0IGFmZm9yZCB0byB1c2UgdmlydHVhbCBmdW5jdGlvbiBjYWxscyBo
ZXJlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24KKyAgICAgICAgYWxsIG5vZGUg
bGlzdHMgYW5kIEhUTUwgY29sbGVjdGlvbnMgb3duZWQgYnkgYW5jZXN0b3JzIG9mIGFuIGVsZW1l
bnQgdW5kZXIgd2hpY2ggYSBub2RlIGlzIGFkZGVkLCByZW1vdmVkLAorICAgICAgICBvciBpdHMg
YXR0cmlidXRlcyBhcmUgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRv
bS9EeW5hbWljTm9kZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENh
Y2hlQmFzZTo6RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKTogSW5pdGlhbGl6ZXMgbWVtYmVyIHZh
cmlhYmxlcyBkaXJlY3RseQorICAgICAgICBpbnN0ZWFkIG9mIGNhbGxpbmcgY2xlYXJDYWNoZSBu
b3cgdGhhdCBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdGVDYWNoZSBoYXMgYmVj
b21lIHBvbHltb3JwaGljLgorICAgICAgICAoRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKTogSW5j
cmVhc2VkIHRoZSBudW1iZXIgb2YgYml0cyBmb3IgbV9pbnZhbGlkYXRpb25UeXBlIHNpbmNlIHdl
IG5vdyBoYXZlIDkKKyAgICAgICAgaW52YWxpZGF0aW9uIHR5cGVzLgorICAgICAgICAoV2ViQ29y
ZTo6RHluYW1pY1N1YnRyZWVOb2RlTGlzdDo6fkR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHluYW1pY1N1YnRyZWVOb2RlTGlzdDo6RHluYW1pY1N1YnRyZWVOb2Rl
TGlzdCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoRWxlbWVu
dFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2xlYXJIVE1M
Q29sbGVjdGlvbkNhY2hlcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjphZG9wdFRyZWVTY29wZSk6IEFkZGVkOyBzaW1pbGFyIHRvIE5vZGVSYXJlRGF0YTo6YWRv
cHRUcmVlU2NvcGUuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKTogQ2xl
YXJzIEhUTUwgY29sbGVjdGlvbiBjYWNoZXMgYXMgd2VsbCBhcworICAgICAgICBub2RlIGxpc3Qg
Y2FjaGVzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hl
QWZ0ZXJDaGlsZHJlbkNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6YWRvcHRUcmVlU2NvcGUp
OgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6IENhbGxzIEVsZW1lbnRSYXJl
RGF0YSdzIGFkb3B0VHJlZVNjb3BlIGFzIHdlbGwgYXMKKyAgICAgICAgTm9kZVJhcmVEYXRhJ3Mu
CisgICAgICAgICogaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtV2l0aEluZGV4KToKKyAgICAgICAgKiBodG1s
L0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJvb3RUeXBlRnJvbUNvbGxl
Y3Rpb25UeXBlKTogQWRkZWQuIEFzIG1lbnRpb25lZCBhYm92ZSwgdHJlYXQgYWxsIERvY3VtZW50
LW93bmVkIEhUTUwgY29sbGVjdGlvbgorICAgICAgICBhcyBpZiByb290ZWQgYXQgZG9jdW1lbnQg
Zm9yIGNvbnZlbmllbmNlLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0aW9uVHlwZUV4Y2x1
ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMpOiBBZGRlZC4gU2luY2UgYWxsIEhUTUwgY29sbGVjdGlv
biByZXF1aXJlcworICAgICAgICBpbnZhbGlkYXRpb24gb24gaWQgYW5kIG5hbWUgY29udGVudCBh
dHRyaWJ1dGUgY2hhbmdlcywgd2hpY2ggaXMgdGFrZW4gY2FyZSBieSB0aGUgc3BlY2lhbCBsb2dp
YyBpbgorICAgICAgICBEb2N1bWVudDo6cmVnaXN0ZXJOb2RlTGlzdENhY2hlLCBleGNsdWRlIHRo
b3NlIHR3byBhdHRyaWJ1dGVzIGZyb20gY29uc2lkZXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbik6IENhbGxzIERvY3VtZW50OjpyZWdpc3Rl
ck5vZGVMaXN0Q2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6fkhUTUxD
b2xsZWN0aW9uKTogQ2FsbHMgRG9jdW1lbnQ6OnVucmVnaXN0ZXJOb2RlTGlzdENhY2hlLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1cGRhdGVO
YW1lQ2FjaGUpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb2xsZWN0aW9uQ2FjaGVCYXNlOjpIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSk6
CisgICAgICAgIChIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSk6IFJlbW92ZWQgbV9jYWNoZVRyZWVW
ZXJzaW9uIGFuZCBjbGVhckNhY2hlIHNpbmNlIHRoZXkncmUgbm8gbG9uZ2VyIHVzZWQuCisgICAg
ICAgIChIVE1MQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmg6CisgICAgICAgIChIVE1MT3B0
aW9uc0NvbGxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6dXBkYXRl
TmFtZUNhY2hlKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2Fj
aGUpOgorCiAyMDEyLTA3LTEzICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29t
PgogCiAgICAgICAgIFNob3VsZCBiZSBwb3NzaWJsZSB0byBmb2N1cyBlbGVtZW50cyB3aXRoaW4g
Y2FudmFzIGZhbGxiYWNrIGNvbnRlbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMTIyNTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzg3NSwxNyArMzg3NSwyMSBAQCB2b2lkIERvY3VtZW50OjpzZXRDU1NUYXJn
ZXQoRWxlbWVudCogbikKICAgICAgICAgbi0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12
b2lkIERvY3VtZW50OjpyZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRy
ZWVOb2RlTGlzdCogbGlzdCwgTm9kZUxpc3RSb290VHlwZSByb290VHlwZSwgTm9kZUxpc3RJbnZh
bGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUpCit2b2lkIERvY3VtZW50OjpyZWdpc3Rlck5v
ZGVMaXN0Q2FjaGUoRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKiBsaXN0KQogewotICAgIG1fbm9k
ZUxpc3RDb3VudHNbaW52YWxpZGF0aW9uVHlwZV0rKzsKLSAgICBpZiAocm9vdFR5cGUgPT0gTm9k
ZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQpCisgICAgaWYgKGxpc3QtPnR5cGUoKSAhPSBJbnZhbGlk
Q29sbGVjdGlvblR5cGUpCisgICAgICAgIG1fbm9kZUxpc3RDb3VudHNbSW52YWxpZGF0ZU9uSWRO
YW1lQXR0ckNoYW5nZV0rKzsKKyAgICBtX25vZGVMaXN0Q291bnRzW2xpc3QtPmludmFsaWRhdGlv
blR5cGUoKV0rKzsKKyAgICBpZiAobGlzdC0+cm9vdFR5cGUoKSA9PSBOb2RlTGlzdElzUm9vdGVk
QXREb2N1bWVudCkKICAgICAgICAgbV9saXN0c0ludmFsaWRhdGVkQXREb2N1bWVudC5hZGQobGlz
dCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0
KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QsIE5vZGVMaXN0Um9vdFR5cGUgcm9vdFR5cGUs
IE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQordm9pZCBEb2N1bWVu
dDo6dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUoRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKiBsaXN0
KQogewotICAgIG1fbm9kZUxpc3RDb3VudHNbaW52YWxpZGF0aW9uVHlwZV0tLTsKLSAgICBpZiAo
cm9vdFR5cGUgPT0gTm9kZUxpc3RJc1Jvb3RlZEF0RG9jdW1lbnQpIHsKKyAgICBpZiAobGlzdC0+
dHlwZSgpICE9IEludmFsaWRDb2xsZWN0aW9uVHlwZSkKKyAgICAgICAgbV9ub2RlTGlzdENvdW50
c1tJbnZhbGlkYXRlT25JZE5hbWVBdHRyQ2hhbmdlXS0tOworICAgIG1fbm9kZUxpc3RDb3VudHNb
bGlzdC0+aW52YWxpZGF0aW9uVHlwZSgpXS0tOworICAgIGlmIChsaXN0LT5yb290VHlwZSgpID09
IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50KSB7CiAgICAgICAgIEFTU0VSVChtX2xpc3RzSW52
YWxpZGF0ZWRBdERvY3VtZW50LmNvbnRhaW5zKGxpc3QpKTsKICAgICAgICAgbV9saXN0c0ludmFs
aWRhdGVkQXREb2N1bWVudC5yZW1vdmUobGlzdCk7CiAgICAgfQpAQCAtMzg5OCwxMCArMzkwMiwx
NCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhCiAgICAgICAgIHJl
dHVybiBhdHRyTmFtZSA9PSBjbGFzc0F0dHI7CiAgICAgY2FzZSBJbnZhbGlkYXRlT25OYW1lQXR0
ckNoYW5nZToKICAgICAgICAgcmV0dXJuIGF0dHJOYW1lID09IG5hbWVBdHRyOworICAgIGNhc2Ug
SW52YWxpZGF0ZU9uSWROYW1lQXR0ckNoYW5nZToKKyAgICAgICAgcmV0dXJuIGF0dHJOYW1lID09
IGlkQXR0ciB8fCBhdHRyTmFtZSA9PSBuYW1lQXR0cjsKICAgICBjYXNlIEludmFsaWRhdGVPbkZv
ckF0dHJDaGFuZ2U6CiAgICAgICAgIHJldHVybiBhdHRyTmFtZSA9PSBmb3JBdHRyOwogICAgIGNh
c2UgSW52YWxpZGF0ZUZvckZvcm1Db250cm9sczoKICAgICAgICAgcmV0dXJuIGF0dHJOYW1lID09
IG5hbWVBdHRyIHx8IGF0dHJOYW1lID09IGlkQXR0ciB8fCBhdHRyTmFtZSA9PSBmb3JBdHRyIHx8
IGF0dHJOYW1lID09IHR5cGVBdHRyOworICAgIGNhc2UgSW52YWxpZGF0ZU9uSFJlZkF0dHJDaGFu
Z2U6CisgICAgICAgIHJldHVybiBhdHRyTmFtZSA9PSBocmVmQXR0cjsKICAgICBjYXNlIEludmFs
aWRhdGVPbkl0ZW1BdHRyQ2hhbmdlOgogI2lmIEVOQUJMRShNSUNST0RBVEEpCiAgICAgICAgIHJl
dHVybiBhdHRyTmFtZSA9PSBpdGVtc2NvcGVBdHRyIHx8IGF0dHJOYW1lID09IGl0ZW1wcm9wQXR0
ciB8fCBhdHRyTmFtZSA9PSBpdGVtdHlwZUF0dHI7CkBAIC0zOTA5LDExICszOTE3LDEzIEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc2hvdWxkSW52YWxpZGEKICAgICBjYXNlIERvTm90SW52
YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlczoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEludmFsaWRhdGVPbkFueUF0dHJDaGFu
Z2U6CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgRG9jdW1lbnQ6OnNob3VsZEludmFsaWRhdGVEeW5hbWljU3VidHJlZU5vZGVMaXN0KGNv
bnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBjb25zdAorYm9vbCBEb2N1bWVudDo6c2hvdWxk
SW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKSBj
b25zdAogewogICAgIGlmIChhdHRyTmFtZSkgewogICAgICAgICBmb3IgKGludCB0eXBlID0gRG9O
b3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzICsgMTsgdHlwZSA8IG51bU5vZGVMaXN0SW52
YWxpZGF0aW9uVHlwZXM7IHR5cGUrKykgewpAQCAtMzkzMyw4ICszOTQzLDggQEAgYm9vbCBEb2N1
bWVudDo6c2hvdWxkSW52YWxpZGF0ZUR5bmFtaWNTdQogCiB2b2lkIERvY3VtZW50OjpjbGVhck5v
ZGVMaXN0Q2FjaGVzKCkKIHsKLSAgICBIYXNoU2V0PER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqPjo6
aXRlcmF0b3IgZW5kID0gbV9saXN0c0ludmFsaWRhdGVkQXREb2N1bWVudC5lbmQoKTsKLSAgICBm
b3IgKEhhc2hTZXQ8RHluYW1pY1N1YnRyZWVOb2RlTGlzdCo+OjppdGVyYXRvciBpdCA9IG1fbGlz
dHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIEhh
c2hTZXQ8RHluYW1pY05vZGVMaXN0Q2FjaGVCYXNlKj46Oml0ZXJhdG9yIGVuZCA9IG1fbGlzdHNJ
bnZhbGlkYXRlZEF0RG9jdW1lbnQuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PER5bmFtaWNOb2Rl
TGlzdENhY2hlQmFzZSo+OjppdGVyYXRvciBpdCA9IG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1l
bnQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+aW52YWxpZGF0ZUNh
Y2hlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMjI1NTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiAr
NzksNyBAQCBjbGFzcyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI7CiBjbGFzcyBEb2N1bWVudFBh
cnNlcjsKIGNsYXNzIERvY3VtZW50VHlwZTsKIGNsYXNzIERvY3VtZW50V2Vha1JlZmVyZW5jZTsK
K2NsYXNzIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTsKIGNsYXNzIEVkaXRpbmdUZXh0OwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEVudGl0eVJlZmVyZW5jZTsKQEAgLTE4NiwyMCArMTg3LDE4IEBA
IGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlIHsKIAogZW51bSBTdHlsZVJlc29sdmVyVXBk
YXRlRmxhZyB7IFJlY2FsY1N0eWxlSW1tZWRpYXRlbHksIERlZmVyUmVjYWxjU3R5bGUsIFJlY2Fs
Y1N0eWxlSWZOZWVkZWQgfTsKIAotZW51bSBOb2RlTGlzdFJvb3RUeXBlIHsKLSAgICBOb2RlTGlz
dElzUm9vdGVkQXROb2RlLAotICAgIE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50LAotfTsKLQog
ZW51bSBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgewogICAgIERvTm90SW52YWxpZGF0ZU9uQXR0
cmlidXRlQ2hhbmdlcyA9IDAsCiAgICAgSW52YWxpZGF0ZU9uQ2xhc3NBdHRyQ2hhbmdlLAorICAg
IEludmFsaWRhdGVPbklkTmFtZUF0dHJDaGFuZ2UsCiAgICAgSW52YWxpZGF0ZU9uTmFtZUF0dHJD
aGFuZ2UsCiAgICAgSW52YWxpZGF0ZU9uRm9yQXR0ckNoYW5nZSwKICAgICBJbnZhbGlkYXRlRm9y
Rm9ybUNvbnRyb2xzLAorICAgIEludmFsaWRhdGVPbkhSZWZBdHRyQ2hhbmdlLAogICAgIEludmFs
aWRhdGVPbkl0ZW1BdHRyQ2hhbmdlLAorICAgIEludmFsaWRhdGVPbkFueUF0dHJDaGFuZ2UsCiB9
OwotY29uc3QgaW50IG51bU5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZXMgPSBJbnZhbGlkYXRlT25J
dGVtQXR0ckNoYW5nZSArIDE7Citjb25zdCBpbnQgbnVtTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBl
cyA9IEludmFsaWRhdGVPbkFueUF0dHJDaGFuZ2UgKyAxOwogCiBjbGFzcyBEb2N1bWVudCA6IHB1
YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB7CiBwdWJsaWM6CkBAIC03MzgsOSArNzM3LDkgQEAgcHVibGljOgogICAgIGJv
b2wgaXNQZW5kaW5nU3R5bGVSZWNhbGMoKSBjb25zdDsKICAgICB2b2lkIHN0eWxlUmVjYWxjVGlt
ZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJEeW5hbWljU3Vi
dHJlZU5vZGVMaXN0KER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqLCBOb2RlTGlzdFJvb3RUeXBlLCBO
b2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwotICAgIHZvaWQgdW5yZWdpc3RlckR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3QoRHluYW1pY1N1YnRyZWVOb2RlTGlzdCosIE5vZGVMaXN0Um9vdFR5cGUsIE5v
ZGVMaXN0SW52YWxpZGF0aW9uVHlwZSk7Ci0gICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlRHluYW1p
Y1N1YnRyZWVOb2RlTGlzdChjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSA9IDApIGNvbnN0
OworICAgIHZvaWQgcmVnaXN0ZXJOb2RlTGlzdENhY2hlKER5bmFtaWNOb2RlTGlzdENhY2hlQmFz
ZSopOworICAgIHZvaWQgdW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUoRHluYW1pY05vZGVMaXN0Q2Fj
aGVCYXNlKik7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXMoY29uc3Qg
UXVhbGlmaWVkTmFtZSogYXR0ck5hbWUgPSAwKSBjb25zdDsKICAgICB2b2lkIGNsZWFyTm9kZUxp
c3RDYWNoZXMoKTsKIAogICAgIHZvaWQgYXR0YWNoTm9kZUl0ZXJhdG9yKE5vZGVJdGVyYXRvciop
OwpAQCAtMTQyNCw3ICsxNDIzLDcgQEAgcHJpdmF0ZToKIAogICAgIEluaGVyaXRlZEJvb2wgbV9k
ZXNpZ25Nb2RlOwogCi0gICAgSGFzaFNldDxEeW5hbWljU3VidHJlZU5vZGVMaXN0Kj4gbV9saXN0
c0ludmFsaWRhdGVkQXREb2N1bWVudDsKKyAgICBIYXNoU2V0PER5bmFtaWNOb2RlTGlzdENhY2hl
QmFzZSo+IG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQ7CiAgICAgdW5zaWduZWQgbV9ub2Rl
TGlzdENvdW50c1tudW1Ob2RlTGlzdEludmFsaWRhdGlvblR5cGVzXTsKIAogICAgIEhUTUxDb2xs
ZWN0aW9uKiBtX2NvbGxlY3Rpb25zW051bVVubmFtZWREb2N1bWVudENhY2hlZFR5cGVzXTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAxMjI1NTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRHluYW1pY05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsOSArMjUsMzIgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2U6OmludmFsaWRhdGVDYWNoZSgpIGNvbnN0Cit7CisgICAgbV9j
YWNoZWRJdGVtID0gMDsKKyAgICBtX2lzTGVuZ3RoQ2FjaGVWYWxpZCA9IGZhbHNlOworICAgIG1f
aXNJdGVtQ2FjaGVWYWxpZCA9IGZhbHNlOworICAgIG1faXNOYW1lQ2FjaGVWYWxpZCA9IGZhbHNl
OworICAgIGlmICh0eXBlKCkgPT0gSW52YWxpZENvbGxlY3Rpb25UeXBlKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb25zdCBIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZSogY2FjaGVCYXNlID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgSFRNTENvbGxlY3Rpb25DYWNoZUJhc2UqPih0aGlzKTsKKyAgICBjYWNo
ZUJhc2UtPm1faWRDYWNoZS5jbGVhcigpOworICAgIGNhY2hlQmFzZS0+bV9uYW1lQ2FjaGUuY2xl
YXIoKTsKKyAgICBjYWNoZUJhc2UtPm1fY2FjaGVkRWxlbWVudHNBcnJheU9mZnNldCA9IDA7CisK
KyNpZiBFTkFCTEUoTUlDUk9EQVRBKQorICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgbW9y
ZSBnZW5lcmljIG1lY2hhbmlzbSB0byBjbGVhciBjYWNoZXMgaW4gc3ViY2xhc3Nlcy4KKyAgICBp
ZiAodHlwZSgpID09IEl0ZW1Qcm9wZXJ0aWVzKQorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24qPih0aGlzKS0+aW52YWxpZGF0ZUNhY2hlKCk7CisjZW5k
aWYKK30KKwogdW5zaWduZWQgRHluYW1pY1N1YnRyZWVOb2RlTGlzdDo6bGVuZ3RoKCkgY29uc3QK
IHsKICAgICBpZiAoaXNMZW5ndGhDYWNoZVZhbGlkKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRHluYW1pY05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0R5
bmFtaWNOb2RlTGlzdC5oCShyZXZpc2lvbiAxMjI1NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RHluYW1pY05vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI0ICszNSwyNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgTm9kZTsKIAorZW51bSBOb2Rl
TGlzdFJvb3RUeXBlIHsKKyAgICBOb2RlTGlzdElzUm9vdGVkQXROb2RlLAorICAgIE5vZGVMaXN0
SXNSb290ZWRBdERvY3VtZW50LAorfTsKKwogY2xhc3MgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNl
IHsKIHB1YmxpYzoKLSAgICBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2UoTm9kZUxpc3RSb290VHlw
ZSByb290VHlwZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUpCi0g
ICAgICAgIDogbV9yb290ZWRBdERvY3VtZW50KHJvb3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRB
dERvY3VtZW50KQorICAgIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZShOb2RlTGlzdFJvb3RUeXBl
IHJvb3RUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSwgQ29s
bGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUgPSBJbnZhbGlkQ29sbGVjdGlvblR5cGUpCisgICAg
ICAgIDogbV9jYWNoZWRJdGVtKDApCisgICAgICAgICwgbV9pc0xlbmd0aENhY2hlVmFsaWQoZmFs
c2UpCisgICAgICAgICwgbV9pc0l0ZW1DYWNoZVZhbGlkKGZhbHNlKQorICAgICAgICAsIG1fcm9v
dGVkQXREb2N1bWVudChyb290VHlwZSA9PSBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudCkKICAg
ICAgICAgLCBtX2ludmFsaWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZSkKLSAgICAgICAgLCBt
X2NvbGxlY3Rpb25UeXBlKEludmFsaWRDb2xsZWN0aW9uVHlwZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2ludmFsaWRhdGlvblR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRh
dGlvblR5cGUpKTsKLSAgICAgICAgY2xlYXJDYWNoZSgpOwotICAgIH0KLQotICAgIER5bmFtaWNO
b2RlTGlzdENhY2hlQmFzZShDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKLSAgICAgICAg
OiBtX3Jvb3RlZEF0RG9jdW1lbnQoZmFsc2UpIC8vIElnbm9yZWQKLSAgICAgICAgLCBtX2ludmFs
aWRhdGlvblR5cGUoRG9Ob3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzKSAvLyBJZ25vcmVk
CisgICAgICAgICwgbV9pc05hbWVDYWNoZVZhbGlkKGZhbHNlKQogICAgICAgICAsIG1fY29sbGVj
dGlvblR5cGUoY29sbGVjdGlvblR5cGUpCiAgICAgeworICAgICAgICBBU1NFUlQobV9pbnZhbGlk
YXRpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZhbGlkYXRpb25UeXBlKSk7CiAg
ICAgICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihj
b2xsZWN0aW9uVHlwZSkpOwotICAgICAgICBjbGVhckNhY2hlKCk7CiAgICAgfQogCiBwdWJsaWM6
CkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE5vZGVMaXN0SW52
YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlPihtX2ludmFsaWRhdGlvblR5cGUpOyB9CiAgICAg
QUxXQVlTX0lOTElORSBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q29sbGVjdGlvblR5cGU+KG1fY29sbGVjdGlvblR5cGUpOyB9CiAKKyAgICB2b2lkIGlu
dmFsaWRhdGVDYWNoZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzSXRlbUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzSXRlbUNhY2hlVmFsaWQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIE5vZGUqIGNhY2hlZEl0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2NhY2hlZEl0ZW07IH0KQEAgLTg1LDI0ICs4NywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBo
YXNOYW1lQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzTmFtZUNhY2hlVmFsaWQ7IH0KICAgICB2
b2lkIHNldEhhc05hbWVDYWNoZSgpIGNvbnN0IHsgbV9pc05hbWVDYWNoZVZhbGlkID0gdHJ1ZTsg
fQogCi0gICAgdm9pZCBjbGVhckNhY2hlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIG1fY2FjaGVk
SXRlbSA9IDA7Ci0gICAgICAgIG1faXNMZW5ndGhDYWNoZVZhbGlkID0gZmFsc2U7Ci0gICAgICAg
IG1faXNJdGVtQ2FjaGVWYWxpZCA9IGZhbHNlOwotICAgICAgICBtX2lzTmFtZUNhY2hlVmFsaWQg
PSBmYWxzZTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgbXV0YWJsZSBOb2RlKiBtX2NhY2hlZEl0
ZW07CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZExlbmd0aDsKICAgICBtdXRhYmxlIHVu
c2lnbmVkIG1fY2FjaGVkSXRlbU9mZnNldDsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faXNMZW5n
dGhDYWNoZVZhbGlkIDogMTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faXNJdGVtQ2FjaGVWYWxp
ZCA6IDE7Ci0KLSAgICAvLyBGcm9tIER5bmFtaWNOb2RlTGlzdAogICAgIGNvbnN0IHVuc2lnbmVk
IG1fcm9vdGVkQXREb2N1bWVudCA6IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9pbnZhbGlkYXRp
b25UeXBlIDogMzsKKyAgICBjb25zdCB1bnNpZ25lZCBtX2ludmFsaWRhdGlvblR5cGUgOiA0Owog
CiAgICAgLy8gRnJvbSBIVE1MQ29sbGVjdGlvbgogICAgIG11dGFibGUgdW5zaWduZWQgbV9pc05h
bWVDYWNoZVZhbGlkIDogMTsKQEAgLTEzMyw3ICsxMjUsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBP
dGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAgTm9kZSogb3duZXJOb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9vd25lck5vZGUuZ2V0KCk7IH0KLSAgICB2b2lkIGludmFsaWRhdGVDYWNo
ZSgpIHsgY2xlYXJDYWNoZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBOb2RlKiByb290Tm9kZSgp
IGNvbnN0CkBAIC0xNTQsNyArMTQ1LDcgQEAgY2xhc3MgRHluYW1pY1N1YnRyZWVOb2RlTGlzdCA6
IHB1YmxpYyBEeQogcHVibGljOgogICAgIHZpcnR1YWwgfkR5bmFtaWNTdWJ0cmVlTm9kZUxpc3Qo
KQogICAgIHsKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9k
ZUxpc3QodGhpcywgcm9vdFR5cGUoKSwgaW52YWxpZGF0aW9uVHlwZSgpKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3Rlck5vZGVMaXN0Q2FjaGUodGhpcyk7CiAgICAgfQogICAgIHZpcnR1
YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOb2RlKiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBPVkVSUklERTsKQEAgLTE2Myw3ICsxNTQsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgRHluYW1pY1N1YnRyZWVOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IG5v
ZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlLCBOb2RlTGlzdFJv
b3RUeXBlIHJvb3RUeXBlID0gTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZSkKICAgICAgICAgOiBEeW5h
bWljTm9kZUxpc3Qobm9kZSwgcm9vdFR5cGUsIGludmFsaWRhdGlvblR5cGUpCiAgICAgewotICAg
ICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QodGhpcywgcm9v
dFR5cGUsIGludmFsaWRhdGlvblR5cGUpOworICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3Rlck5v
ZGVMaXN0Q2FjaGUodGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaAkocmV2aXNpb24gMTIyNTUxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiRGF0YXNldERPTVN0cmluZ01hcC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJFbGVtZW50U2hhZG93LmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CkBAIC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBy
ZXR1cm4gKCptX2NhY2hlZENvbGxlY3Rpb25zKVt0eXBlIC0gRmlyc3ROb2RlQ29sbGVjdGlvblR5
cGVdOwogICAgIH0KKwogICAgIHZvaWQgcmVtb3ZlQ2FjaGVkSFRNTENvbGxlY3Rpb24oSFRNTENv
bGxlY3Rpb24qIGNvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlIHR5cGUpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV9jYWNoZWRDb2xsZWN0aW9ucyk7CkBAIC02NCw2ICs2NiwzNCBAQCBwdWJsaWM6
CiAgICAgICAgICgqbV9jYWNoZWRDb2xsZWN0aW9ucylbdHlwZSAtIEZpcnN0Tm9kZUNvbGxlY3Rp
b25UeXBlXSA9IDA7CiAgICAgfQogCisgICAgdm9pZCBjbGVhckhUTUxDb2xsZWN0aW9uQ2FjaGVz
KCkKKyAgICB7CisgICAgICAgIGlmICghbV9jYWNoZWRDb2xsZWN0aW9ucykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKCptX2NhY2hlZENv
bGxlY3Rpb25zKS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKCgqbV9jYWNoZWRDb2xs
ZWN0aW9ucylbaV0pCisgICAgICAgICAgICAgICAgKCptX2NhY2hlZENvbGxlY3Rpb25zKVtpXS0+
aW52YWxpZGF0ZUNhY2hlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFkb3B0VHJl
ZVNjb3BlKERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2NhY2hlZENvbGxlY3Rpb25zKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAoKm1fY2FjaGVkQ29sbGVjdGlv
bnMpLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlv
biA9ICgqbV9jYWNoZWRDb2xsZWN0aW9ucylbaV07CisgICAgICAgICAgICBpZiAoIWNvbGxlY3Rp
b24pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb2xsZWN0aW9uLT5p
bnZhbGlkYXRlQ2FjaGUoKTsKKyAgICAgICAgICAgIGlmIChvbGREb2N1bWVudCAhPSBuZXdEb2N1
bWVudCkgeworICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyTm9kZUxpc3RD
YWNoZShjb2xsZWN0aW9uKTsKKyAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+cmVnaXN0ZXJO
b2RlTGlzdENhY2hlKGNvbGxlY3Rpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCiAgICAgdHlwZWRlZiBGaXhlZEFycmF5PEhUTUxDb2xsZWN0aW9uKiwgTnVtTm9kZUNvbGxl
Y3Rpb25UeXBlcz4gQ2FjaGVkSFRNTENvbGxlY3Rpb25BcnJheTsKICAgICBPd25QdHI8Q2FjaGVk
SFRNTENvbGxlY3Rpb25BcnJheT4gbV9jYWNoZWRDb2xsZWN0aW9uczsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAkocmV2aXNpb24gMTIyNTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBl
LmgiCiAjaW5jbHVkZSAiRHluYW1pY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgor
I2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgpAQCAtOTczLDcg
Kzk3NCw3IEBAIHZvaWQgTm9kZTo6aW52YWxpZGF0ZU5vZGVMaXN0c0NhY2hlQWZ0ZXIKICAgICBp
ZiAoIWF0dHJpYnV0ZU93bmVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFk
b2N1bWVudCgpLT5zaG91bGRJbnZhbGlkYXRlRHluYW1pY1N1YnRyZWVOb2RlTGlzdCgmYXR0ck5h
bWUpKQorICAgIGlmICghZG9jdW1lbnQoKS0+c2hvdWxkSW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVz
KCZhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRvY3VtZW50KCktPmNsZWFyTm9k
ZUxpc3RDYWNoZXMoKTsKQEAgLTk4MywxMCArOTg0LDEwIEBAIHZvaWQgTm9kZTo6aW52YWxpZGF0
ZU5vZGVMaXN0c0NhY2hlQWZ0ZXIKICAgICAgICAgaWYgKCFub2RlLT5oYXNSYXJlRGF0YSgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IG5vZGUt
PnJhcmVEYXRhKCk7Ci0gICAgICAgIGlmICghZGF0YS0+bm9kZUxpc3RzKCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBkYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hl
cygmYXR0ck5hbWUpOworICAgICAgICBpZiAoZGF0YS0+bm9kZUxpc3RzKCkpCisgICAgICAgICAg
ICBkYXRhLT5ub2RlTGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hlcygmYXR0ck5hbWUpOworICAgICAg
ICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RWxl
bWVudFJhcmVEYXRhKj4oZGF0YSktPmNsZWFySFRNTENvbGxlY3Rpb25DYWNoZXMoKTsKICAgICB9
CiB9CiAKQEAgLTk5NSw3ICs5OTYsNyBAQCB2b2lkIE5vZGU6OmludmFsaWRhdGVOb2RlTGlzdHND
YWNoZUFmdGVyCiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJhcmVEYXRhKCktPmNs
ZWFyQ2hpbGROb2RlTGlzdENhY2hlKCk7CiAKLSAgICBpZiAoIWRvY3VtZW50KCktPnNob3VsZElu
dmFsaWRhdGVEeW5hbWljU3VidHJlZU5vZGVMaXN0KCkpCisgICAgaWYgKCFkb2N1bWVudCgpLT5z
aG91bGRJbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
ZG9jdW1lbnQoKS0+Y2xlYXJOb2RlTGlzdENhY2hlcygpOwpAQCAtMTAwNCwxMCArMTAwNSwxMCBA
QCB2b2lkIE5vZGU6OmludmFsaWRhdGVOb2RlTGlzdHNDYWNoZUFmdGVyCiAgICAgICAgIGlmICgh
bm9kZS0+aGFzUmFyZURhdGEoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBOb2Rl
UmFyZURhdGEqIGRhdGEgPSBub2RlLT5yYXJlRGF0YSgpOwotICAgICAgICBpZiAoIWRhdGEtPm5v
ZGVMaXN0cygpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZGF0YS0+bm9kZUxp
c3RzKCktPmludmFsaWRhdGVDYWNoZXMoKTsKKyAgICAgICAgaWYgKGRhdGEtPm5vZGVMaXN0cygp
KQorICAgICAgICAgICAgZGF0YS0+bm9kZUxpc3RzKCktPmludmFsaWRhdGVDYWNoZXMoKTsKKyAg
ICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PEVsZW1lbnRSYXJlRGF0YSo+KGRhdGEpLT5jbGVhckhUTUxDb2xsZWN0aW9uQ2FjaGVzKCk7CiAg
ICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCShyZXZpc2lvbiAxMjI1
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzOCw4ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKE5vZGVMaXN0QXRv
bWljTmFtZUNhY2hlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYXRvbWljTmFtZUNhY2hlcy5i
ZWdpbigpOyBpdCAhPSBhdG9taWNOYW1lQ2FjaGVFbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAg
ICBEeW5hbWljU3VidHJlZU5vZGVMaXN0KiBsaXN0ID0gaXQtPnNlY29uZDsKICAgICAgICAgICAg
ICAgICBpZiAobGlzdC0+aXNSb290ZWRBdERvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KGxpc3QsIGxp
c3QtPnJvb3RUeXBlKCksIGxpc3QtPmludmFsaWRhdGlvblR5cGUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5ld0RvY3VtZW50LT5yZWdpc3RlckR5bmFtaWNTdWJ0cmVlTm9kZUxpc3QobGlzdCwg
bGlzdC0+cm9vdFR5cGUoKSwgbGlzdC0+aW52YWxpZGF0aW9uVHlwZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJOb2RlTGlzdENhY2hlKGxpc3QpOworICAg
ICAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+cmVnaXN0ZXJOb2RlTGlzdENhY2hlKGxpc3Qp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMTQ3LDggKzE0Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoTm9kZUxpc3ROYW1lQ2FjaGVNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9uYW1lQ2FjaGVzLmJlZ2luKCk7IGl0ICE9IG5hbWVDYWNoZUVuZDsgKytp
dCkgewogICAgICAgICAgICAgICAgIER5bmFtaWNTdWJ0cmVlTm9kZUxpc3QqIGxpc3QgPSBpdC0+
c2Vjb25kOwogICAgICAgICAgICAgICAgIGlmIChsaXN0LT5pc1Jvb3RlZEF0RG9jdW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3RlckR5bmFtaWNTdWJ0
cmVlTm9kZUxpc3QobGlzdCwgbGlzdC0+cm9vdFR5cGUoKSwgbGlzdC0+aW52YWxpZGF0aW9uVHlw
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbmV3RG9jdW1lbnQtPnJlZ2lzdGVyRHluYW1pY1N1
YnRyZWVOb2RlTGlzdChsaXN0LCBsaXN0LT5yb290VHlwZSgpLCBsaXN0LT5pbnZhbGlkYXRpb25U
eXBlKCkpOworICAgICAgICAgICAgICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3Rlck5vZGVM
aXN0Q2FjaGUobGlzdCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LT5yZWdpc3Rl
ck5vZGVMaXN0Q2FjaGUobGlzdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
CkBAIC0xNTYsOCArMTU2LDggQEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChUYWdOb2RlTGlz
dENhY2hlTlM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90YWdOb2RlTGlzdENhY2hlTlMuYmVnaW4o
KTsgaXQgIT0gdGFnRW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgRHluYW1pY1N1YnRyZWVO
b2RlTGlzdCogbGlzdCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFsaXN0
LT5pc1Jvb3RlZEF0RG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVu
cmVnaXN0ZXJEeW5hbWljU3VidHJlZU5vZGVMaXN0KGxpc3QsIGxpc3QtPnJvb3RUeXBlKCksIGxp
c3QtPmludmFsaWRhdGlvblR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgbmV3RG9jdW1lbnQtPnJl
Z2lzdGVyRHluYW1pY1N1YnRyZWVOb2RlTGlzdChsaXN0LCBsaXN0LT5yb290VHlwZSgpLCBsaXN0
LT5pbnZhbGlkYXRpb25UeXBlKCkpOworICAgICAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJl
Z2lzdGVyTm9kZUxpc3RDYWNoZShsaXN0KTsKKyAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC0+
cmVnaXN0ZXJOb2RlTGlzdENhY2hlKGxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAkocmV2aXNp
b24gMTIyNTUxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgIlRyZWVTY29wZUFkb3B0
ZXIuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFJhcmVEYXRh
LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5o
IgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw5ICs0OSwxMiBAQCB2b2lkIFRyZWVTY29wZUFkb3B0
ZXI6Om1vdmVUcmVlVG9OZXdTY29wCiAgICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVy
c2lvbigpOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0
YSA9IG5vZGUtPnNldFRyZWVTY29wZShuZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1f
bmV3U2NvcGUpOwotICAgICAgICBpZiAocmFyZURhdGEgJiYgcmFyZURhdGEtPm5vZGVMaXN0cygp
KQotICAgICAgICAgICAgcmFyZURhdGEtPm5vZGVMaXN0cygpLT5hZG9wdFRyZWVTY29wZShvbGRE
b2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgICAgICBpZiAoTm9kZVJhcmVEYXRhKiByYXJlRGF0
YSA9IG5vZGUtPnNldFRyZWVTY29wZShuZXdEb2N1bWVudCA9PSBtX25ld1Njb3BlID8gMCA6IG1f
bmV3U2NvcGUpKSB7CisgICAgICAgICAgICBpZiAocmFyZURhdGEtPm5vZGVMaXN0cygpKQorICAg
ICAgICAgICAgICAgIHJhcmVEYXRhLT5ub2RlTGlzdHMoKS0+YWRvcHRUcmVlU2NvcGUob2xkRG9j
dW1lbnQsIG5ld0RvY3VtZW50KTsKKyAgICAgICAgICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudFJhcmVEYXRhKj4ocmFyZURh
dGEpLT5hZG9wdFRyZWVTY29wZShvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgICAgICB9
CiAKICAgICAgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKICAgICAgICAgICAgIG1vdmVO
b2RlVG9OZXdEb2N1bWVudChub2RlLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEyMjU1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw2IEBAIEhUTUxBbGxDb2xsZWN0aW9uOjp+SFRNTEFsbENvbGxl
Y3Rpb24oKQogCiBOb2RlKiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtV2l0aEluZGV4KGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgaW52
YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKICAgICB1cGRhdGVOYW1lQ2FjaGUoKTsKIAogICAgIGlm
IChWZWN0b3I8RWxlbWVudCo+KiBjYWNoZSA9IGlkQ2FjaGUobmFtZSkpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMjI1NTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYs
MTEgKzc2LDg4IEBAIHN0YXRpYyBib29sIHNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGQKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBOb2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlRnJv
bUNvbGxlY3Rpb25UeXBlKENvbGxlY3Rpb25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBEb2NJbWFnZXM6CisgICAgY2FzZSBEb2NBcHBsZXRzOgorICAgIGNhc2Ug
RG9jRW1iZWRzOgorICAgIGNhc2UgRG9jT2JqZWN0czoKKyAgICBjYXNlIERvY0Zvcm1zOgorICAg
IGNhc2UgRG9jTGlua3M6CisgICAgY2FzZSBEb2NBbmNob3JzOgorICAgIGNhc2UgRG9jU2NyaXB0
czoKKyAgICBjYXNlIERvY0FsbDoKKyAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6CisgICAgY2Fz
ZSBEb2N1bWVudE5hbWVkSXRlbXM6CisjaWYgRU5BQkxFKE1JQ1JPREFUQSkKKyAgICBjYXNlIEl0
ZW1Qcm9wZXJ0aWVzOgorI2VuZGlmCisgICAgY2FzZSBGb3JtQ29udHJvbHM6CisgICAgICAgIHJl
dHVybiBOb2RlTGlzdElzUm9vdGVkQXREb2N1bWVudDsKKyAgICBjYXNlIE5vZGVDaGlsZHJlbjoK
KyAgICBjYXNlIFRhYmxlVEJvZGllczoKKyAgICBjYXNlIFRTZWN0aW9uUm93czoKKyAgICBjYXNl
IFRhYmxlUm93czoKKyAgICBjYXNlIFRSQ2VsbHM6CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgor
ICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgorICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgorICAg
IGNhc2UgTWFwQXJlYXM6CisgICAgY2FzZSBJbnZhbGlkQ29sbGVjdGlvblR5cGU6CisgICAgICAg
IHJldHVybiBOb2RlTGlzdElzUm9vdGVkQXROb2RlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gTm9kZUxpc3RJc1Jvb3RlZEF0Tm9kZTsKK30KKworc3RhdGlj
IE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmRO
YW1lQXR0cmlidXRlcyhDb2xsZWN0aW9uVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgRG9jSW1hZ2VzOgorICAgIGNhc2UgRG9jRW1iZWRzOgorICAgIGNhc2UgRG9j
T2JqZWN0czoKKyAgICBjYXNlIERvY0Zvcm1zOgorICAgIGNhc2UgRG9jQW5jaG9yczogLy8gRGVw
ZW5kcyBvbiBuYW1lIGF0dHJpYnV0ZS4KKyAgICBjYXNlIERvY1NjcmlwdHM6CisgICAgY2FzZSBE
b2NBbGw6CisgICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOiAvLyBEZXBlbmRzIG9uIGlkIGFuZCBu
YW1lIGF0dHJpYnV0ZXMuCisgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6IC8vIERpdHRvLgor
ICAgIGNhc2UgTm9kZUNoaWxkcmVuOgorICAgIGNhc2UgVGFibGVUQm9kaWVzOgorICAgIGNhc2Ug
VFNlY3Rpb25Sb3dzOgorICAgIGNhc2UgVGFibGVSb3dzOgorICAgIGNhc2UgVFJDZWxsczoKKyAg
ICBjYXNlIFNlbGVjdE9wdGlvbnM6CisgICAgY2FzZSBNYXBBcmVhczoKKyAgICAgICAgcmV0dXJu
IERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlczsKKyAgICBjYXNlIERvY0FwcGxldHM6
CisgICAgY2FzZSBTZWxlY3RlZE9wdGlvbnM6CisgICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6Cisg
ICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0dGVyIHNvbWUgZGF5LgorICAgICAgICByZXR1
cm4gSW52YWxpZGF0ZU9uQW55QXR0ckNoYW5nZTsKKyAgICBjYXNlIERvY0xpbmtzOgorICAgICAg
ICByZXR1cm4gSW52YWxpZGF0ZU9uSFJlZkF0dHJDaGFuZ2U7CisjaWYgRU5BQkxFKE1JQ1JPREFU
QSkKKyAgICBjYXNlIEl0ZW1Qcm9wZXJ0aWVzOgorICAgICAgICByZXR1cm4gSW52YWxpZGF0ZU9u
SXRlbUF0dHJDaGFuZ2U7CisjZW5kaWYKKyAgICBjYXNlIEZvcm1Db250cm9sczoKKyAgICAgICAg
cmV0dXJuIEludmFsaWRhdGVGb3JGb3JtQ29udHJvbHM7CisgICAgY2FzZSBJbnZhbGlkQ29sbGVj
dGlvblR5cGU6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gRG9Ob3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzOworfQorICAg
IAorCiBIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24oTm9kZSogYmFzZSwgQ29sbGVjdGlv
blR5cGUgdHlwZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uQ2FjaGVCYXNlKHR5cGUpCisgICAgOiBI
VE1MQ29sbGVjdGlvbkNhY2hlQmFzZShyb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZSh0eXBlKSwg
aW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXModHlwZSksIHR5cGUp
CiAgICAgLCBtX2Jhc2UoYmFzZSkKIHsKICAgICBBU1NFUlQobV9iYXNlKTsKKyAgICBtX2Jhc2Ut
PmRvY3VtZW50KCktPnJlZ2lzdGVyTm9kZUxpc3RDYWNoZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShOb2RlKiBiYXNlLCBDb2xs
ZWN0aW9uVHlwZSB0eXBlKQpAQCAtOTgsMjYgKzE3NSw4IEBAIEhUTUxDb2xsZWN0aW9uOjp+SFRN
TENvbGxlY3Rpb24oKQogICAgICAgICB0b0VsZW1lbnQoYmFzZSgpKS0+cmVtb3ZlQ2FjaGVkSFRN
TENvbGxlY3Rpb24odGhpcywgdHlwZSgpKTsKICAgICB9IGVsc2UgLy8gSFRNTE5hbWVDb2xsZWN0
aW9uIHJlbW92ZXMgY2FjaGUgYnkgaXRzZWxmLgogICAgICAgICBBU1NFUlQodHlwZSgpID09IFdp
bmRvd05hbWVkSXRlbXMgfHwgdHlwZSgpID09IERvY3VtZW50TmFtZWRJdGVtcyk7Ci19Ci0KLXZv
aWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCkgY29uc3QKLXsKLSAg
ICB1aW50NjRfdCBkb2N2ZXJzaW9uID0gc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obV9iYXNl
LT5kb2N1bWVudCgpKS0+ZG9tVHJlZVZlcnNpb24oKTsKIAotICAgIGlmIChjYWNoZVRyZWVWZXJz
aW9uKCkgPT0gZG9jdmVyc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW52YWxpZGF0ZUNh
Y2hlKCk7Ci19Ci0KLXZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZSgpIGNvbnN0
Ci17Ci0jaWYgRU5BQkxFKE1JQ1JPREFUQSkKLSAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkIGJl
IG1vcmUgZ2VuZXJpYyBtZWNoYW5pc20gdG8gY2xlYXIgY2FjaGVzIGluIHN1YmNsYXNzZXMuCi0g
ICAgaWYgKHR5cGUoKSA9PSBJdGVtUHJvcGVydGllcykKLSAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKj4odGhpcyktPmNsZWFyQ2FjaGUoKTsKLSNlbmRp
ZgotICAgIGNsZWFyQ2FjaGUoc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50Kj4obV9iYXNlLT5kb2N1
bWVudCgpKS0+ZG9tVHJlZVZlcnNpb24oKSk7CisgICAgbV9iYXNlLT5kb2N1bWVudCgpLT51bnJl
Z2lzdGVyTm9kZUxpc3RDYWNoZSh0aGlzKTsKIH0KIAogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rp
b246OmlzQWNjZXB0YWJsZUVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKQEAgLTIwMCw3
ICsyNTksNiBAQCBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6aXRlbUFmdGVyKHVuc2lnCiAKIHVu
c2lnbmVkIEhUTUxDb2xsZWN0aW9uOjpsZW5ndGgoKSBjb25zdAogewotICAgIGludmFsaWRhdGVD
YWNoZUlmTmVlZGVkKCk7CiAgICAgaWYgKGlzTGVuZ3RoQ2FjaGVWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gY2FjaGVkTGVuZ3RoKCk7CiAKQEAgLTIyMiw3ICsyODAsNiBAQCB1bnNpZ25lZCBIVE1M
Q29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIAogTm9kZSogSFRNTENvbGxlY3Rpb246Oml0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsK
ICAgICBpZiAoaXNJdGVtQ2FjaGVWYWxpZCgpICYmIGNhY2hlZEl0ZW1PZmZzZXQoKSA9PSBpbmRl
eCkKICAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0oKTsKIApAQCAtMzA2LDcgKzM2Myw2IEBAIE5v
ZGUqIEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXQKICAgICAvLyBhdHRyaWJ1dGUu
IElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFu
CiAgICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkg
b24gdGhvc2UgZWxlbWVudHMKICAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1
dGUuCi0gICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKIAogICAgIHVuc2lnbmVkIGFycmF5
T2Zmc2V0ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKQEAgLTMzMiw3ICszODgsNiBAQCBOb2Rl
KiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0CiAKIHZvaWQgSFRNTENvbGxlY3Rp
b246OnVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0CiB7Ci0gICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVk
ZWQoKTsKICAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2aXNpb24gMTIyNTUxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwy
MyArMzksMTMgQEAgY2xhc3MgTm9kZUxpc3Q7CiAKIGNsYXNzIEhUTUxDb2xsZWN0aW9uQ2FjaGVC
YXNlIDogcHVibGljIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZSB7CiBwdWJsaWM6Ci0gICAgSFRN
TENvbGxlY3Rpb25DYWNoZUJhc2UoQ29sbGVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBEeW5h
bWljTm9kZUxpc3RDYWNoZUJhc2UodHlwZSkKKyAgICBIVE1MQ29sbGVjdGlvbkNhY2hlQmFzZShO
b2RlTGlzdFJvb3RUeXBlIHJvb3RUeXBlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxp
ZGF0aW9uVHlwZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgICAgIDogRHlu
YW1pY05vZGVMaXN0Q2FjaGVCYXNlKHJvb3RUeXBlLCBpbnZhbGlkYXRpb25UeXBlLCBjb2xsZWN0
aW9uVHlwZSkKICAgICAgICAgLCBtX2NhY2hlZEVsZW1lbnRzQXJyYXlPZmZzZXQoMCkKLSAgICAg
ICAgLCBtX2NhY2hlVHJlZVZlcnNpb24oMCkKICAgICB7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBjbGVhckNhY2hlKHVpbnQ2NF90IGN1cnJlbnREb21UcmVlVmVyc2lvbikgY29uc3QK
LSAgICB7Ci0gICAgICAgIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6Y2xlYXJDYWNoZSgpOwot
ICAgICAgICBtX2lkQ2FjaGUuY2xlYXIoKTsKLSAgICAgICAgbV9uYW1lQ2FjaGUuY2xlYXIoKTsK
LSAgICAgICAgbV9jYWNoZWRFbGVtZW50c0FycmF5T2Zmc2V0ID0gMDsKLSAgICAgICAgbV9jYWNo
ZVRyZWVWZXJzaW9uID0gY3VycmVudERvbVRyZWVWZXJzaW9uOwotICAgIH0KLQogICAgIHZvaWQg
c2V0SXRlbUNhY2hlKE5vZGUqIGl0ZW0sIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgZWxlbWVu
dHNBcnJheU9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHNldEl0ZW1DYWNoZShpdGVtLCBv
ZmZzZXQpOwpAQCAtNjMsOCArNTMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogICAgIHVuc2lnbmVk
IGNhY2hlZEVsZW1lbnRzQXJyYXlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEVsZW1l
bnRzQXJyYXlPZmZzZXQ7IH0KIAotICAgIHVpbnQ2NF90IGNhY2hlVHJlZVZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2NhY2hlVHJlZVZlcnNpb247IH0KLQogICAgIHR5cGVkZWYgSGFzaE1hcDxB
dG9taWNTdHJpbmdJbXBsKiwgT3duUHRyPFZlY3RvcjxFbGVtZW50Kj4gPiA+IE5vZGVDYWNoZU1h
cDsKICAgICBWZWN0b3I8RWxlbWVudCo+KiBpZENhY2hlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3QgeyByZXR1cm4gbV9pZENhY2hlLmdldChuYW1lLmltcGwoKSk7IH0KICAgICBWZWN0
b3I8RWxlbWVudCo+KiBuYW1lQ2FjaGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCB7
IHJldHVybiBtX25hbWVDYWNoZS5nZXQobmFtZS5pbXBsKCkpOyB9CkBAIC03NiwxMyArNjQsMTMg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB1c2luZyBEeW5hbWljTm9kZUxpc3RDYWNoZUJh
c2U6OmlzUm9vdGVkQXREb2N1bWVudDsKICAgICB1c2luZyBEeW5hbWljTm9kZUxpc3RDYWNoZUJh
c2U6OnNob3VsZEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZTsKLSAgICB1c2luZyBEeW5hbWlj
Tm9kZUxpc3RDYWNoZUJhc2U6OmNsZWFyQ2FjaGU7CiAgICAgdXNpbmcgRHluYW1pY05vZGVMaXN0
Q2FjaGVCYXNlOjpzZXRJdGVtQ2FjaGU7CiAKICAgICBtdXRhYmxlIE5vZGVDYWNoZU1hcCBtX2lk
Q2FjaGU7CiAgICAgbXV0YWJsZSBOb2RlQ2FjaGVNYXAgbV9uYW1lQ2FjaGU7CiAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBtX2NhY2hlZEVsZW1lbnRzQXJyYXlPZmZzZXQ7Ci0gICAgbXV0YWJsZSB1aW50
NjRfdCBtX2NhY2hlVHJlZVZlcnNpb247CisKKyAgICBmcmllbmQgdm9pZCBEeW5hbWljTm9kZUxp
c3RDYWNoZUJhc2U6OmludmFsaWRhdGVDYWNoZSgpIGNvbnN0OwogfTsKIAogY2xhc3MgSFRNTENv
bGxlY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxIVE1MQ29sbGVjdGlvbj4sIHB1YmxpYyBIVE1M
Q29sbGVjdGlvbkNhY2hlQmFzZSB7CkBAIC0xMDEsNyArODksNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBuYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+JikgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlu
dmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAgICAgICAgIGlmIChpc0xlbmd0aENhY2hlVmFsaWQo
KSkKICAgICAgICAgICAgIHJldHVybiAhY2FjaGVkTGVuZ3RoKCk7CiAgICAgICAgIGlmIChpc0l0
ZW1DYWNoZVZhbGlkKCkpCkBAIC0xMTAsNyArOTcsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJv
b2wgaGFzRXhhY3RseU9uZUl0ZW0oKSBjb25zdAogICAgIHsKLSAgICAgICAgaW52YWxpZGF0ZUNh
Y2hlSWZOZWVkZWQoKTsKICAgICAgICAgaWYgKGlzTGVuZ3RoQ2FjaGVWYWxpZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGNhY2hlZExlbmd0aCgpID09IDE7CiAgICAgICAgIGlmIChpc0l0ZW1DYWNo
ZVZhbGlkKCkpCkBAIC0xMjAsOSArMTA2LDYgQEAgcHVibGljOgogCiAgICAgTm9kZSogYmFzZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFzZS5nZXQoKTsgfQogCi0gICAgdm9pZCBpbnZhbGlkYXRlQ2Fj
aGUoKSBjb25zdDsKLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCkgY29uc3Q7Ci0K
IHByb3RlY3RlZDoKICAgICBIVE1MQ29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAJ
KHJldmlzaW9uIDEyMjU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw2IEBAIE5vZGUqIEhUTUxGb3Jt
Q29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnMKICAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2gg
aXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCiAgICAgLy8gb2Jq
ZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxl
bWVudHMKICAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCi0gICAgaW52
YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKICAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVu
dCo+KiBpbWFnZXNFbGVtZW50cyA9IGJhc2UoKS0+aGFzVGFnTmFtZShmaWVsZHNldFRhZykgPyAw
IDogJmZvcm1JbWFnZUVsZW1lbnRzKCk7CiAgICAgaWYgKEhUTUxFbGVtZW50KiBpdGVtID0gZmly
c3ROYW1lZEl0ZW0oZm9ybUNvbnRyb2xFbGVtZW50cygpLCBpbWFnZXNFbGVtZW50cywgaWRBdHRy
LCBuYW1lKSkKICAgICAgICAgcmV0dXJuIGl0ZW07CkBAIC0xMjEsNyArMTIwLDYgQEAgTm9kZSog
SFRNTEZvcm1Db2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29ucwogCiB2b2lkIEhUTUxGb3JtQ29sbGVj
dGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKIHsKLSAgICBpbnZhbGlkYXRlQ2FjaGVJZk5l
ZWRlZCgpOwogICAgIGlmIChoYXNOYW1lQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgJKHJldmlzaW9u
IDEyMjU1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRM
ZW5ndGgodW5zaWduZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHVzaW5nIEhUTUxDb2xsZWN0
aW9uOjppbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZDsKLQogcHJpdmF0ZToKICAgICBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24oRWxlbWVudCopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEyMjU1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQyLDcgKzE0Miw2IEBAIEhUTUxFbGVtZW50KiBIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb246OmkKIAogdm9pZCBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNo
ZSgpIGNvbnN0CiB7Ci0gICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKICAgICBpZiAobV9o
YXNQcm9wZXJ0eU5hbWVDYWNoZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEyMjU1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gbmFtZWRJdGVtKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qg
T1ZFUlJJREU7CiAKLSAgICB2b2lkIGNsZWFyQ2FjaGUoKSBjb25zdAorICAgIHZvaWQgaW52YWxp
ZGF0ZUNhY2hlKCkgY29uc3QKICAgICB7CiAgICAgICAgIG1faXRlbVJlZkVsZW1lbnRzLmNsZWFy
KCk7CiAgICAgICAgIG1fcHJvcGVydHlOYW1lcy5jbGVhcigpOwo=
</data>
<flag name="review"
          id="160985"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>