<?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>82030</bug_id>
          
          <creation_ts>2012-03-23 00:54:11 -0700</creation_ts>
          <short_desc>DFG Fixup should be able to short-circuit trivial ValueToInt32&apos;s</short_desc>
          <delta_ts>2012-03-23 20:23:43 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586156</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-23 00:54:11 -0700</bug_when>
    <thetext>And the Fixup phase should be made into a proper phase, to reduce the size and complexity of the prediction propagation phase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586158</commentid>
    <comment_count>1</comment_count>
      <attachid>133441</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-23 00:57:37 -0700</bug_when>
    <thetext>Created attachment 133441
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586728</commentid>
    <comment_count>2</comment_count>
      <attachid>133441</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-03-23 14:12:05 -0700</bug_when>
    <thetext>Comment on attachment 133441
the patch

r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586994</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-23 20:23:43 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/111974</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133441</attachid>
            <date>2012-03-23 00:57:37 -0700</date>
            <delta_ts>2012-03-23 14:12:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixupvaluetoint32_patch_1.diff</filename>
            <type>text/plain</type>
            <size>26850</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExODM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDEyLTAzLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIEZpeHVwIHNob3VsZCBiZSBhYmxlIHRvIHNob3J0LWNpcmN1aXQgdHJpdmlhbCBWYWx1ZVRv
SW50MzIncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODIwMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisg
ICAgICAgIFRha2VzIHRoZSBmaXh1cCgpIG1ldGhvZCBvZiB0aGUgcHJlZGljdGlvbiBwcm9wYWdh
dGlvbiBwaGFzZSBhbmQgbWFrZXMgaXQKKyAgICAgICAgaW50byBpdHMgb3duIHBoYXNlLiBBZGRz
IHRoZSBhYmlsaXR5IHRvIHNob3J0LWNpcmN1aXQgdHJpdmlhbCBWYWx1ZVRvSW50MzIKKyAgICAg
ICAgbm9kZXMsIGFuZCBtYXJrIHB1cmUgVmFsdWVUb0ludDMyJ3MgYXMgc3VjaC4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VTYWZlKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAg
ICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoREZHKToK
KyAgICAgICAgKEZpeHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OkZp
eHVwUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnJ1bik6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpG
aXh1cFBoYXNlOjpmaXhJbnRFZGdlKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtRml4dXAp
OgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmg6IEFkZGVkLgorICAgICAgICAoREZHKToK
KyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAo
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UpOgorCiAyMDEyLTAzLTIzICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJpdFZlY3Rvcjo6cmVzaXplT3V0T2ZMaW5l
IGRvZXNuJ3QgbWVtc2V0IHdoZW4gY29udmVydGluZyBhbiBpbmxpbmUgYnVmZmVyCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMTE3OTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYg
KzY2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuY3BwCiAgICAgZGZnL0RGR0NTRVBoYXNlLmNwcAogICAgIGRmZy9ERkdEcml2
ZXIuY3BwCisgICAgZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCiAgICAgZGZnL0RGR0dyYXBoLmNwcAog
ICAgIGRmZy9ERkdKSVRDb21waWxlci5jcHAKICAgICBkZmcvREZHTm9kZUZsYWdzLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEx
MTc5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZQUkluZm8uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdGlvbkluZm8uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBj
b3B5KQpAQCAtOTIsNiArOTIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuY3BwIFwKICAgICBkZmcvREZHQ1NFUGhhc2UuY3BwIFwKICAgICBkZmcvREZH
RHJpdmVyLmNwcCBcCisgICAgZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIFwKICAgICBkZmcvREZHR3Jh
cGguY3BwIFwKICAgICBkZmcvREZHSklUQ29tcGlsZXIuY3BwIFwKICAgICBkZmcvREZHTm9kZUZs
YWdzLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTEx
Nzk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAKIAkJMEYyMUMy
N0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFE
QzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5
dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYy
NDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIw
MDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8q
IERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQkRDMTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICov
OyB9OworCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDMTMxNTFDNUQ0
QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29k
ZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5jcHAgKi87IH07CiAJCTBGNDI2QTQ4MTQ2MENCQjMwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MTgsNiArNzIwLDggQEAKIAkJMEYyMUMy
N0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0
QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyQkRDMTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRml4dXBQaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHRml4dXBQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MkJEQzEzMTUxQzVENEEwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0ZpeHVwUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBo
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NzYsNiArMTk4MCw4IEBACiAJCQkJMEZEM0M4MjAxNDEx
NUNGODAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgKi8sCiAJCQkJMEZEM0M4MjIxNDExNUQwRTAw
RkQ4MUNCIC8qIERGR0RyaXZlci5oICovLAogCQkJCTg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAv
KiBERkdGUFJJbmZvLmggKi8sCisJCQkJMEYyQkRDMTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0Zp
eHVwUGhhc2UuY3BwICovLAorCQkJCTBGMkJEQzEzMTUxQzVENEEwMENEODkxMCAvKiBERkdGaXh1
cFBoYXNlLmggKi8sCiAJCQkJODZFQzlEQjYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRp
b25JbmZvLmggKi8sCiAJCQkJODZBRTZDNEMxMzZBMTFFNDAwOTYzMDEyIC8qIERGR0dQUkluZm8u
aCAqLywKIAkJCQk4NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLApA
QCAtMjQ4Niw2ICsyNDkyLDcgQEAKIAkJCQkwQTQzMzdCRTE1MDYyMTlCMDA5OTFDOTUgLyogREZH
UmVkdW5kYW50UGhpRWxpbWluYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgx
QkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjJCREMxNjE1MUM1RDRGMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0zMDQwLDYgKzMwNDcsNyBAQAogCQkJCTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJC
MSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBBNDMzN0JCMTUw
NjIxODgwMDk5MUM5NSAvKiBERkdSZWR1bmRhbnRQaGlFbGltaW5hdGlvblBoYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQTU4MUJBMTUwRTk1MkMwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8qIERGR0Zp
eHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTExNzk3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5OCwxMCArNjk4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdh
dGl2ZVplcm8pKQogICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgCi0jaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKCJNYWtpbmcgJXMgQCV1
IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBzbG93LWNhc2UgY291bnRlciBpcyBhdCAldSBhbmQgZXhp
dCBwcm9maWxlcyBzYXkgJWQsICVkXG4iLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbm9kZUluZGV4
XS5vcCgpKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJ
bmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKTsKLSNlbmRp
ZgotICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX2dyYXBoW25vZGVJbmRleF0ub3AoKSkgewog
ICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgICAgICBjYXNlIEFyaXRoQWRkOgpAQCAt
OTkzLDEwICs5ODksNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKEludGVycHJl
CiAgICAgTm9kZUluZGV4IGNhbGxUYXJnZXQgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CiAgICAgZW51bSB7IENvbnN0YW50RnVuY3Rpb24sIExpbmtlZEZ1bmN0aW9uLCBV
bmtub3duRnVuY3Rpb24gfSBjYWxsVHlwZTsKICAgICAgICAgICAgIAotI2lmIERGR19FTkFCTEUo
REVCVUdfVkVSQk9TRSkKLSAgICBkYXRhTG9nKCJTbG93IGNhc2UgY291bnQgZm9yIGNhbGwgYXQg
QCV6dSBiYyMldTogJXUvJXU7IGV4aXQgcHJvZmlsZTogJWQuXG4iLCBtX2dyYXBoLnNpemUoKSwg
bV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNh
c2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3VudCgpLCBt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRDYWNoZSkpOwotI2VuZGlmCi0gICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtT
dGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCk7CiAgICAgCkBAIC0xODc5LDEw
ICsxODcxLDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssIG1fY3VycmVudEluZGV4LCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIAotI2lmIERGR19F
TkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2coIlNsb3cgY2FzZSBjb3Vu
dCBmb3IgR2V0QnlJZCBAJXp1IGJjIyV1OiAldTsgZXhpdCBwcm9maWxlOiAlZFxuIiwgbV9ncmFw
aC5zaXplKCksIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9j
b3VudGVyLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRDYWNoZSkpOwotI2VuZGlmCi0gICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChnZXRCeUlkU3RhdHVzLmlzU2ltcGxlRGlyZWN0KCkKICAgICAgICAgICAgICAgICAmJiAh
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMuc3Ry
dWN0dXJlU2V0KCkuc2l6ZSgpKTsKQEAgLTE5MjEsMTAgKzE5MDksNiBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGJv
b2wgaGFzRXhpdFNpdGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSk7CiAgICAgICAgICAgICAKLSNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgICAgICAgICBkYXRhTG9nKCJTbG93IGNhc2UgY291bnQg
Zm9yIFB1dEJ5SWQgQCV6dSBiYyMldTogJXU7IGV4aXQgcHJvZmlsZTogJWRcbiIsIG1fZ3JhcGgu
c2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291
bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ2FjaGUpKTsKLSNlbmRpZiAgICAgICAgICAgIAotCiAgICAgICAgICAgICBp
ZiAoIWhhc0V4aXRTaXRlICYmIHB1dEJ5SWRTdGF0dXMuaXNTaW1wbGVSZXBsYWNlKCkpIHsKICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQocHV0QnlJZFN0YXR1cy5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5T2Zmc2V0LCBPcEluZm8obV9ncmFwaC5tX3N0
b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksIGJhc2UsIGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9y
YWdlLCBiYXNlKSwgdmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bi5oCShyZXZpc2lvbiAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ry
aXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2
ZXIuY3BwCShyZXZpc2lvbiAxMTE3OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJE
RkdCeXRlQ29kZVBhcnNlci5oIgogI2luY2x1ZGUgIkRGR0NGQVBoYXNlLmgiCiAjaW5jbHVkZSAi
REZHQ1NFUGhhc2UuaCIKKyNpbmNsdWRlICJERkdGaXh1cFBoYXNlLmgiCiAjaW5jbHVkZSAiREZH
SklUQ29tcGlsZXIuaCIKICNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5o
IgogI2luY2x1ZGUgIkRGR1JlZHVuZGFudFBoaUVsaW1pbmF0aW9uUGhhc2UuaCIKQEAgLTYwLDYg
KzYxLDcgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQogCiAgICAg
cGVyZm9ybVJlZHVuZGFudFBoaUVsaW1pbmF0aW9uKGRmZyk7CiAgICAgcGVyZm9ybVByZWRpY3Rp
b25Qcm9wYWdhdGlvbihkZmcpOworICAgIHBlcmZvcm1GaXh1cChkZmcpOwogICAgIHBlcmZvcm1D
U0UoZGZnKTsKICAgICBwZXJmb3JtVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvbihkZmcpOwogICAg
IHBlcmZvcm1DRkEoZGZnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJERkdGaXh1cFBoYXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKwor
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHUGhhc2UuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNl
IHsKK3B1YmxpYzoKKyAgICBGaXh1cFBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFz
ZShncmFwaCwgImZpeHVwIikKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgcnVuKCkKKyAg
ICB7CisgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSAwOyBtX2NvbXBpbGVJbmRleCA8IG1f
Z3JhcGguc2l6ZSgpOyArK21fY29tcGlsZUluZGV4KQorICAgICAgICAgICAgZml4dXBOb2RlKG1f
Z3JhcGhbbV9jb21waWxlSW5kZXhdKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaXh1
cE5vZGUoTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgTm9kZVR5cGUgb3Ag
PSBub2RlLm9wKCk7CisKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
CisgICAgICAgIGRhdGFMb2coIiAgICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29t
cGlsZUluZGV4KTsKKyNlbmRpZgorICAgICAgICAKKyAgICAgICAgc3dpdGNoIChvcCkgeworICAg
ICAgICBjYXNlIEdldEJ5SWQ6IHsKKyAgICAgICAgICAgIGlmICghaXNJbnQzMlByZWRpY3Rpb24o
bV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGlmIChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2RlLmlkZW50
aWZpZXJOdW1iZXIoKSkgIT0gZ2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGJvb2wgaXNBcnJheSA9IGlzQXJyYXlQ
cmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAgICAgICAg
ICAgIGJvb2wgaXNTdHJpbmcgPSBpc1N0cmluZ1ByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYm9vbCBpc0J5dGVBcnJheSA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCk7CisgICAgICAgICAg
ICBib29sIGlzSW50OEFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxh
dGVJbnQ4QXJyYXkoKTsKKyAgICAgICAgICAgIGJvb2wgaXNJbnQxNkFycmF5ID0gbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCk7CisgICAgICAgICAgICBi
b29sIGlzSW50MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRl
SW50MzJBcnJheSgpOworICAgICAgICAgICAgYm9vbCBpc1VpbnQ4QXJyYXkgPSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKTsKKyAgICAgICAgICAgIGJv
b2wgaXNVaW50OENsYW1wZWRBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3Bl
Y3VsYXRlVWludDhDbGFtcGVkQXJyYXkoKTsKKyAgICAgICAgICAgIGJvb2wgaXNVaW50MTZBcnJh
eSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKTsK
KyAgICAgICAgICAgIGJvb2wgaXNVaW50MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
c2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKTsKKyAgICAgICAgICAgIGJvb2wgaXNGbG9hdDMy
QXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJh
eSgpOworICAgICAgICAgICAgYm9vbCBpc0Zsb2F0NjRBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCk7CisgICAgICAgICAgICBpZiAoIWlz
QXJyYXkgJiYgIWlzU3RyaW5nICYmICFpc0J5dGVBcnJheSAmJiAhaXNJbnQ4QXJyYXkgJiYgIWlz
SW50MTZBcnJheSAmJiAhaXNJbnQzMkFycmF5ICYmICFpc1VpbnQ4QXJyYXkgJiYgIWlzVWludDhD
bGFtcGVkQXJyYXkgJiYgIWlzVWludDE2QXJyYXkgJiYgIWlzVWludDMyQXJyYXkgJiYgIWlzRmxv
YXQzMkFycmF5ICYmICFpc0Zsb2F0NjRBcnJheSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAg
ICAgICAgICAgIGRhdGFMb2coIiAgQCV1IC0+ICVzIiwgbV9jb21waWxlSW5kZXgsIGlzQXJyYXkg
PyAiR2V0QXJyYXlMZW5ndGgiIDogIkdldFN0cmluZ0xlbmd0aCIpOworI2VuZGlmCisgICAgICAg
ICAgICBpZiAoaXNBcnJheSkKKyAgICAgICAgICAgICAgICBub2RlLnNldE9wKEdldEFycmF5TGVu
Z3RoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKQorICAgICAgICAgICAgICAgIG5v
ZGUuc2V0T3AoR2V0U3RyaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzQnl0ZUFy
cmF5KQorICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0Qnl0ZUFycmF5TGVuZ3RoKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGlzSW50OEFycmF5KQorICAgICAgICAgICAgICAgIG5vZGUuc2V0
T3AoR2V0SW50OEFycmF5TGVuZ3RoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50MTZBcnJh
eSkKKyAgICAgICAgICAgICAgICBub2RlLnNldE9wKEdldEludDE2QXJyYXlMZW5ndGgpOworICAg
ICAgICAgICAgZWxzZSBpZiAoaXNJbnQzMkFycmF5KQorICAgICAgICAgICAgICAgIG5vZGUuc2V0
T3AoR2V0SW50MzJBcnJheUxlbmd0aCk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1VpbnQ4QXJy
YXkpCisgICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRVaW50OEFycmF5TGVuZ3RoKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGlzVWludDhDbGFtcGVkQXJyYXkpCisgICAgICAgICAgICAgICAg
bm9kZS5zZXRPcChHZXRVaW50OENsYW1wZWRBcnJheUxlbmd0aCk7CisgICAgICAgICAgICBlbHNl
IGlmIChpc1VpbnQxNkFycmF5KQorICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0VWludDE2
QXJyYXlMZW5ndGgpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNVaW50MzJBcnJheSkKKyAgICAg
ICAgICAgICAgICBub2RlLnNldE9wKEdldFVpbnQzMkFycmF5TGVuZ3RoKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5KQorICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0
RmxvYXQzMkFycmF5TGVuZ3RoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5
KQorICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0RmxvYXQ2NEFycmF5TGVuZ3RoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIC8vIE5vIGxvbmdlciBNdXN0R2VuZXJhdGUKKyAgICAgICAgICAgIEFTU0VSVChu
b2RlLmZsYWdzKCkgJiBOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG5vZGUuY2xlYXJG
bGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYobV9jb21w
aWxlSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
ZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGJh
c2VQcmVkaWN0aW9uID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CisgICAg
ICAgICAgICBpZiAoIShiYXNlUHJlZGljdGlvbiAmIFByZWRpY3RJbnQzMikgJiYgYmFzZVByZWRp
Y3Rpb24pIHsKKyAgICAgICAgICAgICAgICBub2RlLnNldE9wQW5kRGVmYXVsdEZsYWdzKE5vcCk7
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVmQ2hpbGQxKG5vZGUpOworICAg
ICAgICAgICAgICAgIG1fZ3JhcGguY2xlYXJBbmREZXJlZkNoaWxkMihub2RlKTsKKyAgICAgICAg
ICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDMobm9kZSk7CisgICAgICAgICAgICAg
ICAgbm9kZS5zZXRSZWZDb3VudCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgIGNhc2UgU3RyaW5n
Q2hhckF0OgorICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKKyAgICAgICAgICAgIGlm
ICghIW5vZGUuY2hpbGQzKCkgJiYgbV9ncmFwaFtub2RlLmNoaWxkMygpXS5vcCgpID09IE5vcCkK
KyAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmNoaWxkMygpID0gRWRnZSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFZhbHVl
VG9JbnQzMjogeworICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlLmNsZWFyRmxhZ3MoTm9k
ZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5kZXJlZihtX2NvbXBpbGVJ
bmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgIGNhc2UgQml0QW5kOgorICAgICAgICBjYXNlIEJpdE9yOgorICAg
ICAgICBjYXNlIEJpdFhvcjoKKyAgICAgICAgY2FzZSBCaXRSU2hpZnQ6CisgICAgICAgIGNhc2Ug
Qml0TFNoaWZ0OgorICAgICAgICBjYXNlIEJpdFVSU2hpZnQ6IHsKKyAgICAgICAgICAgIGZpeElu
dEVkZ2Uobm9kZS5jaGlsZHJlbi5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhJbnRFZGdlKG5v
ZGUuY2hpbGRyZW4uY2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAg
ZGF0YUxvZygiXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICB2b2lkIGZpeEludEVkZ2Uo
RWRnZSYgZWRnZSkKKyAgICB7CisgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2VkZ2VdOwor
ICAgICAgICBpZiAobm9kZS5vcCgpICE9IFZhbHVlVG9JbnQzMikKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRT
cGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAg
ICBFZGdlIG9sZEVkZ2UgPSBlZGdlOworICAgICAgICBFZGdlIG5ld0VkZ2UgPSBub2RlLmNoaWxk
MSgpOworICAgICAgICAKKyAgICAgICAgbV9ncmFwaC5yZWYobmV3RWRnZSk7CisgICAgICAgIG1f
Z3JhcGguZGVyZWYob2xkRWRnZSk7CisgICAgICAgIAorICAgICAgICBlZGdlID0gbmV3RWRnZTsK
KyAgICB9CisgICAgCisgICAgTm9kZUluZGV4IG1fY29tcGlsZUluZGV4OworfTsKKyAgICAKK3Zv
aWQgcGVyZm9ybUZpeHVwKEdyYXBoJiBncmFwaCkKK3sKKyAgICBydW5QaGFzZTxGaXh1cFBoYXNl
PihncmFwaCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHRml4dXBQaGFzZV9oCisj
ZGVmaW5lIERGR0ZpeHVwUGhhc2VfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitj
bGFzcyBHcmFwaDsKKworLy8gRml4IHBvcnRpb25zIG9mIHRoZSBncmFwaCB0aGF0IGFyZSBpbmVm
ZmljaWVudCBnaXZlbiB0aGUgcHJlZGljdGlvbnMgdGhhdAorLy8gd2UgaGF2ZS4gVGhpcyBzaG91
bGQgcnVuIGFmdGVyIHByZWRpY3Rpb24gcHJvcGFnYXRpb24gYnV0IGJlZm9yZSBDU0UuCisKK3Zv
aWQgcGVyZm9ybUZpeHVwKEdyYXBoJik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkc6OlBo
YXNlCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0ZpeHVwUGhh
c2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDExMTc5NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw4ICs3NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRv
Um91bmRPZkRvdWJsZVZvdGluZygpOwogICAgICAgICAgICAgcHJvcGFnYXRlQmFja3dhcmQoKTsK
ICAgICAgICAgfSB3aGlsZSAobV9jaGFuZ2VkKTsKLSAgICAgICAgCi0gICAgICAgIGZpeHVwKCk7
CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTc3MywxMDkgKzc3MSw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBmaXh1cE5vZGUoTm9kZSYgbm9kZSkKLSAg
ICB7Ci0gICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wKCk7Ci0KLSNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2coIiAg
ICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKLSNlbmRpZgot
ICAgICAgICAKLSAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIEdldEJ5SWQ6IHsK
LSAgICAgICAgICAgIGlmICghaXNJbnQzMlByZWRpY3Rpb24obV9ncmFwaFttX2NvbXBpbGVJbmRl
eF0ucHJlZGljdGlvbigpKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlm
IChjb2RlQmxvY2soKS0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkgIT0gZ2xv
YmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGJvb2wgaXNBcnJheSA9IGlzQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGJvb2wgaXNTdHJpbmcgPSBp
c1N0cmluZ1ByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwot
ICAgICAgICAgICAgYm9vbCBpc0J5dGVBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hv
dWxkU3BlY3VsYXRlQnl0ZUFycmF5KCk7Ci0gICAgICAgICAgICBib29sIGlzSW50OEFycmF5ID0g
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKTsKLSAgICAg
ICAgICAgIGJvb2wgaXNJbnQxNkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRT
cGVjdWxhdGVJbnQxNkFycmF5KCk7Ci0gICAgICAgICAgICBib29sIGlzSW50MzJBcnJheSA9IG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpOwotICAgICAg
ICAgICAgYm9vbCBpc1VpbnQ4QXJyYXkgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZVVpbnQ4QXJyYXkoKTsKLSAgICAgICAgICAgIGJvb2wgaXNVaW50OENsYW1wZWRBcnJh
eSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDhDbGFtcGVkQXJy
YXkoKTsKLSAgICAgICAgICAgIGJvb2wgaXNVaW50MTZBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKTsKLSAgICAgICAgICAgIGJvb2wgaXNV
aW50MzJBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDMy
QXJyYXkoKTsKLSAgICAgICAgICAgIGJvb2wgaXNGbG9hdDMyQXJyYXkgPSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpOwotICAgICAgICAgICAgYm9v
bCBpc0Zsb2F0NjRBcnJheSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRl
RmxvYXQ2NEFycmF5KCk7Ci0gICAgICAgICAgICBpZiAoIWlzQXJyYXkgJiYgIWlzU3RyaW5nICYm
ICFpc0J5dGVBcnJheSAmJiAhaXNJbnQ4QXJyYXkgJiYgIWlzSW50MTZBcnJheSAmJiAhaXNJbnQz
MkFycmF5ICYmICFpc1VpbnQ4QXJyYXkgJiYgIWlzVWludDhDbGFtcGVkQXJyYXkgJiYgIWlzVWlu
dDE2QXJyYXkgJiYgIWlzVWludDMyQXJyYXkgJiYgIWlzRmxvYXQzMkFycmF5ICYmICFpc0Zsb2F0
NjRBcnJheSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAg
QCV1IC0+ICVzIiwgbV9jb21waWxlSW5kZXgsIGlzQXJyYXkgPyAiR2V0QXJyYXlMZW5ndGgiIDog
IkdldFN0cmluZ0xlbmd0aCIpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAoaXNBcnJheSkKLSAg
ICAgICAgICAgICAgICBub2RlLnNldE9wKEdldEFycmF5TGVuZ3RoKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKGlzU3RyaW5nKQotICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0U3RyaW5nTGVu
Z3RoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzQnl0ZUFycmF5KQotICAgICAgICAgICAgICAg
IG5vZGUuc2V0T3AoR2V0Qnl0ZUFycmF5TGVuZ3RoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlz
SW50OEFycmF5KQotICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0SW50OEFycmF5TGVuZ3Ro
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50MTZBcnJheSkKLSAgICAgICAgICAgICAgICBu
b2RlLnNldE9wKEdldEludDE2QXJyYXlMZW5ndGgpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNJ
bnQzMkFycmF5KQotICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0SW50MzJBcnJheUxlbmd0
aCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc1VpbnQ4QXJyYXkpCi0gICAgICAgICAgICAgICAg
bm9kZS5zZXRPcChHZXRVaW50OEFycmF5TGVuZ3RoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlz
VWludDhDbGFtcGVkQXJyYXkpCi0gICAgICAgICAgICAgICAgbm9kZS5zZXRPcChHZXRVaW50OENs
YW1wZWRBcnJheUxlbmd0aCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc1VpbnQxNkFycmF5KQot
ICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0VWludDE2QXJyYXlMZW5ndGgpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoaXNVaW50MzJBcnJheSkKLSAgICAgICAgICAgICAgICBub2RlLnNldE9w
KEdldFVpbnQzMkFycmF5TGVuZ3RoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzRmxvYXQzMkFy
cmF5KQotICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoR2V0RmxvYXQzMkFycmF5TGVuZ3RoKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5KQotICAgICAgICAgICAgICAgIG5v
ZGUuc2V0T3AoR2V0RmxvYXQ2NEFycmF5TGVuZ3RoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIC8vIE5vIGxvbmdl
ciBNdXN0R2VuZXJhdGUKLSAgICAgICAgICAgIEFTU0VSVChub2RlLmZsYWdzKCkgJiBOb2RlTXVz
dEdlbmVyYXRlKTsKLSAgICAgICAgICAgIG5vZGUuY2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRl
KTsKLSAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYobV9jb21waWxlSW5kZXgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gbV9ncmFw
aFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoIShiYXNlUHJl
ZGljdGlvbiAmIFByZWRpY3RJbnQzMikgJiYgYmFzZVByZWRpY3Rpb24pIHsKLSAgICAgICAgICAg
ICAgICBub2RlLnNldE9wQW5kRGVmYXVsdEZsYWdzKE5vcCk7Ci0gICAgICAgICAgICAgICAgbV9n
cmFwaC5jbGVhckFuZERlcmVmQ2hpbGQxKG5vZGUpOwotICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y2xlYXJBbmREZXJlZkNoaWxkMihub2RlKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFy
QW5kRGVyZWZDaGlsZDMobm9kZSk7Ci0gICAgICAgICAgICAgICAgbm9kZS5zZXRSZWZDb3VudCgw
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgR2V0QnlWYWw6Ci0gICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgotICAgICAgICBjYXNl
IFN0cmluZ0NoYXJDb2RlQXQ6IHsKLSAgICAgICAgICAgIGlmICghIW5vZGUuY2hpbGQzKCkgJiYg
bV9ncmFwaFtub2RlLmNoaWxkMygpXS5vcCgpID09IE5vcCkKLSAgICAgICAgICAgICAgICBub2Rl
LmNoaWxkcmVuLmNoaWxkMygpID0gRWRnZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2co
IlxuIik7Ci0jZW5kaWYKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBmaXh1cCgpCi0gICAgewotI2lm
IERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygi
UGVyZm9ybWluZyBGaXh1cFxuIik7Ci0jZW5kaWYKLSAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRl
eCA9IDA7IG1fY29tcGlsZUluZGV4IDwgbV9ncmFwaC5zaXplKCk7ICsrbV9jb21waWxlSW5kZXgp
Ci0gICAgICAgICAgICBmaXh1cE5vZGUobV9ncmFwaFttX2NvbXBpbGVJbmRleF0pOwotICAgIH0K
LSAgICAKICAgICBOb2RlSW5kZXggbV9jb21waWxlSW5kZXg7CiAgICAgYm9vbCBtX2NoYW5nZWQ7
CiAK
</data>
<flag name="review"
          id="137432"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>