<?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>215483</bug_id>
          
          <creation_ts>2020-08-13 17:31:52 -0700</creation_ts>
          <short_desc>Rework StructureTransitionTable::Hash::Key encoding</short_desc>
          <delta_ts>2020-08-13 18:57:21 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>214890</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1680173</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-13 17:31:52 -0700</bug_when>
    <thetext>It is necessary to store attribute change transitions in a transition table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680177</commentid>
    <comment_count>1</comment_count>
      <attachid>406560</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-13 18:17:26 -0700</bug_when>
    <thetext>Created attachment 406560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680185</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-13 18:56:48 -0700</bug_when>
    <thetext>Committed r265640: &lt;https://trac.webkit.org/changeset/265640&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406560.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680186</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-13 18:57:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/67034660&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406560</attachid>
            <date>2020-08-13 18:17:26 -0700</date>
            <delta_ts>2020-08-13 18:56:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215483-20200814041725.patch</filename>
            <type>text/plain</type>
            <size>40721</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY1NjM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDIwLTA4LTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBSZXdvcmsgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXkgZW5jb2Rp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQ4
MworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbXBsZW1lbnRzIG5ldyBlbmNvZGluZyBvZiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6
Okhhc2g6OktleQorICAgICAgICB0byBlbmFibGUgc3RvcmluZyBhdHRyaWJ1dGUgY2hhbmdlIHRy
YW5zaXRpb25zIGluIGEgdHJhbnNpdGlvbiB0YWJsZS4KKworICAgICAgICBTaW5jZSBQcm9wZXJ0
eU1hcEVudHJ5IGF0dHJpYnV0ZXMgYXJlIGFsd2F5cyB1aW50OF90LCB0aGUgcmVtYWluaW5nIDgg
Yml0cworICAgICAgICBhcmUgdXNlZCBmb3IgVHJhbnNpdGlvbktpbmQsIHdoaWNoIGFsc28gYWNj
b21tb2RhdGVzIG5vbi1wcm9wZXJ0eSB0cmFuc2l0aW9ucywKKyAgICAgICAgcmVtb3ZpbmcgYSBi
aXQgaGFja3kgdG9BdHRyaWJ1dGVzKCkgYW5kIHV0aWxpemF0aW9uIG9mIHVudXNlZCBwb2ludGVy
IGJpdHMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBpbnRyb2R1Y2VzIFRyYW5zaXRpb25L
aW5kOjpVbmtub3duIHdlIGNhbiB2YWxpZGF0ZSBhZ2FpbnN0LAorICAgICAgICBwcmV2ZW50aW5n
IGFkZGl0aW9uIHRyYW5zaXRpb24gZnJvbSBiZWluZyBhIGRlZmF1bHQsIHdoaWNoIGNvdWxkIGJl
IHVuc2FmZS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om5vdGlmeVByZXNlbmNl
T2ZJbmRleGVkQWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRp
YWxVbmRlY2lkZWQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbEludDMy
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxEb3VibGUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlSW5pdGlhbENvbnRpZ3VvdXMpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvSW50MzIpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Y29udmVydFVuZGVjaWRlZFRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNvbnZlcnRVbmRlY2lkZWRUb0NvbnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNvbnZlcnRJbnQzMlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJ
bnQzMlRvQ29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJU
b0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9D
b250aWd1b3VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5
U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRGcm9tQ29weU9uV3Jp
dGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRp
b24gY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZTo6Y29udGFpbnMgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGU6OmdldCBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6
YWRkKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVJbXBs
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlz
dGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZU5ld1By
b3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c2VhbFRyYW5zaXRp
b24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbik6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmg6CisgICAgICAgIChKU0M6
OmNoYW5nZXNJbmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpuZXdJbmRleGluZ1R5cGUpOgor
ICAgICAgICAoSlNDOjpwcmV2ZW50c0V4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpzZXRzRG9u
dERlbGV0ZU9uQWxsUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OnNldHNSZWFkT25seU9uTm9u
QWNjZXNzb3JQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlOjpIYXNoOjpLZXk6OktleSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZTo6SGFzaDo6S2V5OjphdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXk6OnRyYW5zaXRpb25LaW5kIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpoYXNoKToKKyAgICAg
ICAgKEpTQzo6dG9BdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXk6OmlzQWRkaXRpb24gY29uc3QpOiBEZWxldGVkLgor
CiAyMDIwLTA4LTEyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgdGhlIG5lZWQgZm9yIGRlZmluaW5nIFVTRV9ORVdfQlVJTERfU1lTVEVNCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAy
NjU2MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNzgsNyArMTA3OCw3IEBAIHZvaWQgSlNPYmplY3Q6Om5vdGlmeVBy
ZXNlbmNlT2ZJbmRleGVkQWMKICAgICBpZiAobWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKHZt
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJl
Ojpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIE5vblByb3BlcnR5VHJh
bnNpdGlvbjo6QWRkSW5kZXhlZEFjY2Vzc29ycykpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIFRyYW5zaXRp
b25LaW5kOjpBZGRJbmRleGVkQWNjZXNzb3JzKSk7CiAgICAgCiAgICAgaWYgKCFtYXlCZVByb3Rv
dHlwZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTEwLDcgKzExMTAsNyBAQCBCdXR0ZXJmbHkq
IEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsVW5kZWNpCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJm
bHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCk7CiAgICAgU3RydWN0
dXJlSUQgb2xkU3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOwogICAgIFN0cnVjdHVy
ZSogb2xkU3RydWN0dXJlID0gdm0uZ2V0U3RydWN0dXJlKG9sZFN0cnVjdHVyZUlEKTsKLSAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBvbGRTdHJ1Y3R1cmUsIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVVbmRlY2lk
ZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXRpb24odm0sIG9sZFN0cnVjdHVyZSwgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlVW5k
ZWNpZGVkKTsKICAgICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvbGRTdHJ1Y3R1
cmVJRCwgbmV3QnV0dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7
CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseTsKQEAgLTExMjQsNyArMTEyNCw3IEBAIENvbnRpZ3Vv
dXNKU1ZhbHVlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGkKICAgICAgICAgbmV3QnV0dGVyZmx5LT5j
b250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkp
OwogICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQoKTsK
ICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShvbGRTdHJ1Y3R1
cmVJRCk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0dXJlLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFs
bG9jYXRlSW50MzIpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpu
b25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIG9sZFN0cnVjdHVyZSwgVHJhbnNpdGlvbktpbmQ6OkFs
bG9jYXRlSW50MzIpOwogICAgIG51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkodm0sIG9sZFN0
cnVjdHVyZUlELCBuZXdCdXR0ZXJmbHkpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0
dXJlKTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKTsKQEAgLTEx
MzgsNyArMTEzOCw3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aWEK
ICAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuYXQodGhpcywgaSkgPSBQ
TmFOOwogICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQo
KTsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShvbGRTdHJ1
Y3R1cmVJRCk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0dXJlLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb246
OkFsbG9jYXRlRG91YmxlKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBvbGRTdHJ1Y3R1cmUsIFRyYW5zaXRpb25LaW5k
OjpBbGxvY2F0ZURvdWJsZSk7CiAgICAgbnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwg
b2xkU3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7CiAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdT
dHJ1Y3R1cmUpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsK
QEAgLTExNTIsNyArMTE1Miw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y3JlYXRl
SW5pdGkKICAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0
V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOwogICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVj
dHVyZUlEID0gdGhpcy0+c3RydWN0dXJlSUQoKTsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IHZtLmdldFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmVJRCk7Ci0gICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgb2xkU3RydWN0
dXJlLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlQ29udGlndW91cyk7CisgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgb2xkU3RydWN0dXJlLCBUcmFuc2l0aW9uS2luZDo6QWxsb2NhdGVDb250aWd1b3VzKTsKICAg
ICBudWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCBvbGRTdHJ1Y3R1cmVJRCwgbmV3QnV0
dGVyZmx5KTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgcmV0dXJu
IG5ld0J1dHRlcmZseS0+Y29udGlndW91cygpOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgQ29udGln
dW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZQogICAgIGZvciAodW5zaWduZWQgaSA9
IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspCiAgICAgICAgIGJ1dHRlcmZseS0+Y29u
dGlndW91cygpLmF0KHRoaXMsIGkpLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNWYWx1ZSgpKTsK
IAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24o
dm0sIHN0cnVjdHVyZSh2bSksIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVJbnQzMikp
OworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24o
dm0sIHN0cnVjdHVyZSh2bSksIFRyYW5zaXRpb25LaW5kOjpBbGxvY2F0ZUludDMyKSk7CiAgICAg
cmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKTsKIH0KIApAQCAtMTIxOSw3ICsx
MjE5LDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlYwogICAgIGZv
ciAodW5zaWduZWQgaSA9IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspCiAgICAgICAg
IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRoaXMsIGkpID0gUE5hTjsKICAgICAK
LSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUodm0pLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlRG91YmxlKSk7
CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKHZtKSwgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlRG91YmxlKSk7CiAgICAg
cmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiB9CiAKQEAgLTEyMzIsNyAr
MTIzMiw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y29udmVydFVuZGUKICAgICAg
ICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFy
cmllcihKU1ZhbHVlKCkpOwogCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUodm0pLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlQ29udGlndW91cykpOworICAg
IHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSh2bSksIFRyYW5zaXRpb25LaW5kOjpBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKICAgICBy
ZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKIH0KIApAQCAtMTI1OSw3ICsxMjU5LDcg
QEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydAogICAgIHJldHVybiBu
ZXdTdG9yYWdlOwogfQogCi1BcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVk
VG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbikK
K0FycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShW
TSYgdm0sIFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb24pCiB7CiAgICAgRGVmZXJHQyBkZWZlckdD
KHZtLmhlYXApOwogICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKQEAg
LTEzMDIsNyArMTMwMiw3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50
MzIKICAgICAgICAgKmN1cnJlbnRBc0RvdWJsZSA9IHYuYXNJbnQzMigpOwogICAgIH0KICAgICAK
LSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUodm0pLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlRG91YmxlKSk7
CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKHZtKSwgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlRG91YmxlKSk7CiAgICAg
cmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiB9CiAKQEAgLTEzMTAsMTEg
KzEzMTAsMTEgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50Mwogewog
ICAgIEFTU0VSVChoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkpOwogICAgIAotICAgIHNldFN0cnVj
dHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2
bSksIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVDb250aWd1b3VzKSk7CisgICAgc2V0
U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlKHZtKSwgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlQ29udGlndW91cykpOwogICAgIHJldHVy
biBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogfQogCi1BcnJheVN0b3JhZ2UqIEpTT2JqZWN0
Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlv
biB0cmFuc2l0aW9uKQorQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJh
eVN0b3JhZ2UoVk0mIHZtLCBUcmFuc2l0aW9uS2luZCB0cmFuc2l0aW9uKQogewogICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkp
KTsKQEAgLTEzNjEsMTEgKzEzNjEsMTEgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpj
b252ZXJ0RG91YgogICAgIH0KICAgICAKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAg
IHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSh2bSksIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVDb250aWd1b3VzKSk7
CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKHZtKSwgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlQ29udGlndW91cykpOwog
ICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogfQogCi1BcnJheVN0b3JhZ2Uq
IEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0
eVRyYW5zaXRpb24gdHJhbnNpdGlvbikKK0FycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRE
b3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0sIFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb24pCiB7
CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFTU0VSVChoYXNEb3VibGUoaW5k
ZXhpbmdUeXBlKCkpKTsKQEAgLTEzOTYsNyArMTM5Niw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmpl
Y3Q6OmNvbnZlcnREb3VibGVUb0EKICAgICByZXR1cm4gY29udmVydERvdWJsZVRvQXJyYXlTdG9y
YWdlKHZtLCBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKHZtKSk7CiB9CiAKLUFycmF5
U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mIHZt
LCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbikKK0FycmF5U3RvcmFnZSogSlNPYmpl
Y3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBUcmFuc2l0aW9uS2lu
ZCB0cmFuc2l0aW9uKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBBU1NF
UlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkpOwpAQCAtMTU0MCwxNyArMTU0MCwxNyBA
QCB2b2lkIEpTT2JqZWN0Ojpjb252ZXJ0RnJvbUNvcHlPbldyaXRlKFZNCiAgICAgZ2NTYWZlTWVt
Y3B5KG5ld0J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCksIG9sZEJ1dHRlcmZseS0+cHJvcGVy
dHlTdG9yYWdlKCksIG9sZEJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkgKiBzaXplb2YoSlNWYWx1
ZSkgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpKTsKIAogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7Ci0gICAgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24gPSAoWyZdICgpIHsKKyAg
ICBUcmFuc2l0aW9uS2luZCB0cmFuc2l0aW9uID0gKFsmXSAoKSB7CiAgICAgICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKLSAgICAgICAg
ICAgIHJldHVybiBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlSW50MzI7CisgICAgICAg
ICAgICByZXR1cm4gVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlSW50MzI7CiAgICAgICAgIGNhc2Ug
QXJyYXlXaXRoRG91YmxlOgotICAgICAgICAgICAgcmV0dXJuIE5vblByb3BlcnR5VHJhbnNpdGlv
bjo6QWxsb2NhdGVEb3VibGU7CisgICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbktpbmQ6OkFs
bG9jYXRlRG91YmxlOwogICAgICAgICBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZUNvbnRpZ3VvdXM7Cisg
ICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlQ29udGlndW91czsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZUNvbnRp
Z3VvdXM7CisgICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlQ29udGln
dW91czsKICAgICAgICAgfQogICAgIH0pKCk7CiAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBzdHJ1Y3R1cmVJRCgpOwpAQCAtMTc4NSwyNCArMTc4NSwyNCBAQCB2b2lkIEpTT2JqZWN0
Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBjb252ZXJ0VW5kZWNpZGVkVG9B
cnJheVN0b3JhZ2Uodm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVTbG93UHV0QXJy
YXlTdG9yYWdlKTsKKyAgICAgICAgY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKHZtLCBU
cmFuc2l0aW9uS2luZDo6QWxsb2NhdGVTbG93UHV0QXJyYXlTdG9yYWdlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgotICAgICAg
ICBjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZSh2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpB
bGxvY2F0ZVNsb3dQdXRBcnJheVN0b3JhZ2UpOworICAgICAgICBjb252ZXJ0SW50MzJUb0FycmF5
U3RvcmFnZSh2bSwgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlU2xvd1B1dEFycmF5U3RvcmFnZSk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdf
VFlQRVM6Ci0gICAgICAgIGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSwgTm9uUHJvcGVy
dHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVNsb3dQdXRBcnJheVN0b3JhZ2UpOworICAgICAgICBjb252
ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2Uodm0sIFRyYW5zaXRpb25LaW5kOjpBbGxvY2F0ZVNsb3dQ
dXRBcnJheVN0b3JhZ2UpOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBBTExf
Q09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgY29udmVydENvbnRpZ3VvdXNUb0Fy
cmF5U3RvcmFnZSh2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVNsb3dQdXRBcnJh
eVN0b3JhZ2UpOworICAgICAgICBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKHZtLCBU
cmFuc2l0aW9uS2luZDo6QWxsb2NhdGVTbG93UHV0QXJyYXlTdG9yYWdlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgIGNh
c2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiB7Ci0gICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSks
IE5vblByb3BlcnR5VHJhbnNpdGlvbjo6U3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgVHJhbnNpdGlvbktpbmQ6OlN3aXRjaFRvU2xvd1B1
dEFycmF5U3RvcmFnZSk7CiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzkwNCwxMiArMzkwNCwxMiBAQCBib29sIEpTT2Jq
ZWN0OjpuZWVkc1Nsb3dQdXRJbmRleGluZyhWTSYgCiAgICAgcmV0dXJuIGFueU9iamVjdEluQ2hh
aW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXModm0pIHx8IGdsb2JhbE9iamVjdCh2bSktPmlz
SGF2aW5nQUJhZFRpbWUoKTsKIH0KIAotTm9uUHJvcGVydHlUcmFuc2l0aW9uIEpTT2JqZWN0Ojpz
dWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKFZNJiB2bSkgY29uc3QKK1RyYW5zaXRpb25L
aW5kIEpTT2JqZWN0OjpzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKFZNJiB2bSkgY29u
c3QKIHsKICAgICBpZiAobmVlZHNTbG93UHV0SW5kZXhpbmcodm0pKQotICAgICAgICByZXR1cm4g
Tm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVNsb3dQdXRBcnJheVN0b3JhZ2U7CisgICAg
ICAgIHJldHVybiBUcmFuc2l0aW9uS2luZDo6QWxsb2NhdGVTbG93UHV0QXJyYXlTdG9yYWdlOwog
ICAgIAotICAgIHJldHVybiBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlQXJyYXlTdG9y
YWdlOworICAgIHJldHVybiBUcmFuc2l0aW9uS2luZDo6QWxsb2NhdGVBcnJheVN0b3JhZ2U7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAyNjU2MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsNiBAQCBleHRl
cm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlCiBleHRlcm4gSlNfRVhQT1JUX1BS
SVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VFbnVt
ZXJhYmlsaXR5RXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRl
cmFsIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJpbGl0eUVycm9yOwogCi1DT01Q
SUxFX0FTU0VSVChQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSA8IEZpcnN0SW50ZXJuYWxBdHRyaWJ1
dGUsIE5vbmVfaXNfYmVsb3dfRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSk7Ci1DT01QSUxFX0FTU0VS
VChQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgPCBGaXJzdEludGVybmFsQXR0cmlidXRlLCBS
ZWFkT25seV9pc19iZWxvd19GaXJzdEludGVybmFsQXR0cmlidXRlKTsKLUNPTVBJTEVfQVNTRVJU
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSA8IEZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUsIERv
bnRFbnVtX2lzX2JlbG93X0ZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUpOwotQ09NUElMRV9BU1NFUlQo
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgPCBGaXJzdEludGVybmFsQXR0cmlidXRlLCBE
b250RGVsZXRlX2lzX2JlbG93X0ZpcnN0SW50ZXJuYWxBdHRyaWJ1dGUpOwotQ09NUElMRV9BU1NF
UlQoUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIDwgRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSwg
QWNjZXNzb3JfaXNfYmVsb3dfRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSk7Ci0KIGNsYXNzIEpTRmlu
YWxPYmplY3Q7CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtODI0LDcgKzgxOCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIG5lZWRzU2xvd1B1dEluZGV4aW5nKFZNJikgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRp
b24oVk0mKSBjb25zdDsKKyAgICBUcmFuc2l0aW9uS2luZCBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VU
cmFuc2l0aW9uKFZNJikgY29uc3Q7CiBwdWJsaWM6CiAgICAgLy8gWW91IHNob3VsZCBvbmx5IGNh
bGwgaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkgd2hlbjoKICAgICAvLyAtIFBlcmZvcm1pbmcgdGhp
cyBjaGVjayBpbiBhIHdheSB0aGF0IGlzbid0IGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlv
biAKQEAgLTEwMzIsMTkgKzEwMjYsMTkgQEAgcHJvdGVjdGVkOgogICAgIENvbnRpZ3VvdXNKU1Zh
bHVlcyBjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMihWTSYpOwogICAgIENvbnRpZ3VvdXNEb3VibGVz
IGNvbnZlcnRVbmRlY2lkZWRUb0RvdWJsZShWTSYpOwogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBj
b252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3VzKFZNJik7Ci0gICAgQXJyYXlTdG9yYWdlKiBjb252
ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2UoVk0mLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24pOwor
ICAgIEFycmF5U3RvcmFnZSogY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJiwgVHJh
bnNpdGlvbktpbmQpOwogICAgIEFycmF5U3RvcmFnZSogY29udmVydFVuZGVjaWRlZFRvQXJyYXlT
dG9yYWdlKFZNJik7CiAgICAgICAgIAogICAgIENvbnRpZ3VvdXNEb3VibGVzIGNvbnZlcnRJbnQz
MlRvRG91YmxlKFZNJik7CiAgICAgQ29udGlndW91c0pTVmFsdWVzIGNvbnZlcnRJbnQzMlRvQ29u
dGlndW91cyhWTSYpOwotICAgIEFycmF5U3RvcmFnZSogY29udmVydEludDMyVG9BcnJheVN0b3Jh
Z2UoVk0mLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24pOworICAgIEFycmF5U3RvcmFnZSogY29udmVy
dEludDMyVG9BcnJheVN0b3JhZ2UoVk0mLCBUcmFuc2l0aW9uS2luZCk7CiAgICAgQXJyYXlTdG9y
YWdlKiBjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZShWTSYpOwogCiAgICAgQ29udGlndW91c0pT
VmFsdWVzIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoVk0mKTsKLSAgICBBcnJheVN0b3JhZ2Uq
IGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYsIE5vblByb3BlcnR5VHJhbnNpdGlvbik7
CisgICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mLCBUcmFu
c2l0aW9uS2luZCk7CiAgICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0RG91YmxlVG9BcnJheVN0b3Jh
Z2UoVk0mKTsKICAgICAgICAgCi0gICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0Q29udGlndW91c1Rv
QXJyYXlTdG9yYWdlKFZNJiwgTm9uUHJvcGVydHlUcmFuc2l0aW9uKTsKKyAgICBBcnJheVN0b3Jh
Z2UqIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mLCBUcmFuc2l0aW9uS2luZCk7
CiAgICAgQXJyYXlTdG9yYWdlKiBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKFZNJik7
CiAKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAJKHJldmlzaW9uIDI2NTYzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCBpbmxp
bmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNlCiAgICAgbV9kYXRhID0gYml0d2lz
ZV9jYXN0PGludHB0cl90PihpbXBsKSB8IFVzaW5nU2luZ2xlU2xvdEZsYWc7CiB9CiAKLWJvb2wg
U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpjb250YWlucyhVbmlxdWVkU3RyaW5nSW1wbCogcmVw
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGlzQWRkaXRpb24pIGNvbnN0Citib29sIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZTo6Y29udGFpbnMoVW5pcXVlZFN0cmluZ0ltcGwqIHJlcCwgdW5z
aWduZWQgYXR0cmlidXRlcywgVHJhbnNpdGlvbktpbmQgdHJhbnNpdGlvbktpbmQpIGNvbnN0CiB7
CiAgICAgaWYgKGlzVXNpbmdTaW5nbGVTbG90KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiB0cmFu
c2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigpOwotICAgICAgICByZXR1cm4gdHJhbnNpdGlvbiAm
JiB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPT0gcmVwICYmIHRyYW5zaXRp
b24tPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSA9PSBhdHRyaWJ1dGVzICYmIHRyYW5z
aXRpb24tPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSA9PSAhaXNBZGRpdGlvbjsKKyAg
ICAgICAgcmV0dXJuIHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVy
dHlOYW1lID09IHJlcCAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVz
KCkgPT0gYXR0cmlidXRlcyAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uS2luZCgpID09IHRyYW5z
aXRpb25LaW5kOwogICAgIH0KLSAgICByZXR1cm4gbWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6Okhhc2g6OktleShyZXAsIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKTsKKyAgICBy
ZXR1cm4gbWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleShyZXAs
IGF0dHJpYnV0ZXMsIHRyYW5zaXRpb25LaW5kKSk7CiB9CiAKLWlubGluZSBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6Z2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIGJvb2wgaXNBZGRpdGlvbikgY29uc3QKK2lubGluZSBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6Z2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb25LaW5kKSBjb25zdAog
ewogICAgIGlmIChpc1VzaW5nU2luZ2xlU2xvdCgpKSB7CiAgICAgICAgIFN0cnVjdHVyZSogdHJh
bnNpdGlvbiA9IHNpbmdsZVRyYW5zaXRpb24oKTsKLSAgICAgICAgcmV0dXJuICh0cmFuc2l0aW9u
ICYmIHRyYW5zaXRpb24tPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSA9PSByZXAgJiYgdHJhbnNp
dGlvbi0+dHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcygpID09IGF0dHJpYnV0ZXMgJiYgdHJh
bnNpdGlvbi0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpID09ICFpc0FkZGl0aW9uKSA/
IHRyYW5zaXRpb24gOiBudWxscHRyOworICAgICAgICByZXR1cm4gKHRyYW5zaXRpb24gJiYgdHJh
bnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lID09IHJlcCAmJiB0cmFuc2l0aW9uLT50
cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCkgPT0gYXR0cmlidXRlcyAmJiB0cmFuc2l0aW9u
LT50cmFuc2l0aW9uS2luZCgpID09IHRyYW5zaXRpb25LaW5kKSA/IHRyYW5zaXRpb24gOiBudWxs
cHRyOwogICAgIH0KLSAgICByZXR1cm4gbWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGU6Okhhc2g6OktleShyZXAsIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKTsKKyAgICByZXR1cm4g
bWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleShyZXAsIGF0dHJp
YnV0ZXMsIHRyYW5zaXRpb25LaW5kKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlOjphZGQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTExNCw3ICsxMTQsNyBA
QCB2b2lkIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6YWRkKFZNJiB2CiAgICAgfQogCiAgICAg
Ly8gQWRkIHRoZSBzdHJ1Y3R1cmUgdG8gdGhlIG1hcC4KLSAgICBtYXAoKS0+c2V0KFN0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6S2V5KHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVy
dHlOYW1lLmdldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSwg
IXN0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKSwgc3RydWN0dXJlKTsK
KyAgICBtYXAoKS0+c2V0KFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6S2V5KHN0cnVj
dHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRp
b25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSwgc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSwgc3Ry
dWN0dXJlKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0aXN0aWNzKCkKQEAgLTI0NCwx
MyArMjQ0LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmoKICAg
ICBzZXRIYXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJvdG8oZmFs
c2UpOwogICAgIHNldElzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbih0
cnVlKTsKICAgICBzZXRUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKDApOworICAgIHNldFRy
YW5zaXRpb25LaW5kKFRyYW5zaXRpb25LaW5kOjpVbmtub3duKTsKICAgICBzZXREaWRQcmV2ZW50
RXh0ZW5zaW9ucyhmYWxzZSk7CiAgICAgc2V0RGlkVHJhbnNpdGlvbihmYWxzZSk7CiAgICAgc2V0
U3RhdGljUHJvcGVydGllc1JlaWZpZWQoZmFsc2UpOwogICAgIHNldFRyYW5zaXRpb25XYXRjaHBv
aW50SXNMaWtlbHlUb0JlRmlyZWQoZmFsc2UpOwogICAgIHNldEhhc0JlZW5EaWN0aW9uYXJ5KGZh
bHNlKTsKICAgICBzZXRQcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZyhmYWxz
ZSk7Ci0gICAgc2V0SXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbihmYWxzZSk7CiAgICAgc2V0
VHJhbnNpdGlvbk9mZnNldCh2bSwgaW52YWxpZE9mZnNldCk7CiAgICAgc2V0TWF4T2Zmc2V0KHZt
LCBpbnZhbGlkT2Zmc2V0KTsKICAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIFN0cnVjdHVyZTo6U3Ry
dWN0dXJlKFZNJiB2bSkKICAgICBzZXRIYXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGlu
Z09yaWdpbmFsUHJvdG8oZmFsc2UpOwogICAgIHNldElzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93
ZWRGb3JFbnVtZXJhdGlvbih0cnVlKTsKICAgICBzZXRUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1
dGVzKDApOworICAgIHNldFRyYW5zaXRpb25LaW5kKFRyYW5zaXRpb25LaW5kOjpVbmtub3duKTsK
ICAgICBzZXREaWRQcmV2ZW50RXh0ZW5zaW9ucyhmYWxzZSk7CiAgICAgc2V0RGlkVHJhbnNpdGlv
bihmYWxzZSk7CiAgICAgc2V0U3RhdGljUHJvcGVydGllc1JlaWZpZWQoZmFsc2UpOwogICAgIHNl
dFRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmlyZWQoZmFsc2UpOwogICAgIHNldEhh
c0JlZW5EaWN0aW9uYXJ5KGZhbHNlKTsKICAgICBzZXRQcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxl
VHJhbnNpdGlvbmluZyhmYWxzZSk7Ci0gICAgc2V0SXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlv
bihmYWxzZSk7CiAgICAgc2V0VHJhbnNpdGlvbk9mZnNldCh2bSwgaW52YWxpZE9mZnNldCk7CiAg
ICAgc2V0TWF4T2Zmc2V0KHZtLCBpbnZhbGlkT2Zmc2V0KTsKICAKQEAgLTMyMCwxMiArMzIwLDEy
IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiAKICAgICBzZXRIYXNV
bmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJvdG8ocHJldmlvdXMtPmhh
c1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bygpKTsKICAgICBz
ZXRJc1F1aWNrUHJvcGVydHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24ocHJldmlvdXMtPmlz
UXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbigpKTsKICAgICBzZXRUcmFu
c2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKDApOworICAgIHNldFRyYW5zaXRpb25LaW5kKFRyYW5z
aXRpb25LaW5kOjpVbmtub3duKTsKICAgICBzZXREaWRQcmV2ZW50RXh0ZW5zaW9ucyhwcmV2aW91
cy0+ZGlkUHJldmVudEV4dGVuc2lvbnMoKSk7CiAgICAgc2V0RGlkVHJhbnNpdGlvbih0cnVlKTsK
ICAgICBzZXRTdGF0aWNQcm9wZXJ0aWVzUmVpZmllZChwcmV2aW91cy0+c3RhdGljUHJvcGVydGll
c1JlaWZpZWQoKSk7CiAgICAgc2V0SGFzQmVlbkRpY3Rpb25hcnkocHJldmlvdXMtPmhhc0JlZW5E
aWN0aW9uYXJ5KCkpOwogICAgIHNldFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9u
aW5nKGZhbHNlKTsKLSAgICBzZXRJc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKGZhbHNlKTsK
ICAgICBzZXRUcmFuc2l0aW9uT2Zmc2V0KHZtLCBpbnZhbGlkT2Zmc2V0KTsKICAgICBzZXRNYXhP
ZmZzZXQodm0sIGludmFsaWRPZmZzZXQpOwogIApAQCAtNDcyLDggKzQ3Miw3IEBAIFN0cnVjdHVy
ZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCi0g
ICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IHRydWU7Ci0gICAgaWYgKFN0cnVjdHVyZSog
ZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQodWlk
LCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkgeworICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5n
VHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHVpZCwgYXR0cmli
dXRlcywgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlk
YXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGlu
Z1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGlu
Z1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKTsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5n
VHJhbnNpdGlvbjsKQEAgLTU3MSw2ICs1NzAsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRk
TmV3UHJvcGVydHlUcmFuCiAgICAgdHJhbnNpdGlvbi0+bV9ibG9iLnNldEluZGV4aW5nTW9kZUlu
Y2x1ZGluZ0hpc3Rvcnkoc3RydWN0dXJlLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkg
JiB+Q29weU9uV3JpdGUpOwogICAgIHRyYW5zaXRpb24tPm1fdHJhbnNpdGlvblByb3BlcnR5TmFt
ZSA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uUHJv
cGVydHlBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRp
b25LaW5kKFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uKTsKICAgICB0cmFuc2l0aW9u
LT5zZXRQcm9wZXJ0eVRhYmxlKHZtLCBzdHJ1Y3R1cmUtPnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9u
ZUlmUGlubmVkKHZtKSk7CiAgICAgdHJhbnNpdGlvbi0+c2V0TWF4T2Zmc2V0KHZtLCBzdHJ1Y3R1
cmUtPm1heE9mZnNldCgpKTsKIApAQCAtNjA3LDkgKzYwNyw4IEBAIFN0cnVjdHVyZSogU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW4KICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAK
LSAgICBjb25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gZmFsc2U7CiAgICAgb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKLSAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1
Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0
ZXMsIGlzQWRkaXRpb24pKSB7CisgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9u
ID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBh
dHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbikpIHsKICAgICAgICAg
dmFsaWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4
aXN0aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4
aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwogICAgICAgICByZXR1cm4gZXhp
c3RpbmdUcmFuc2l0aW9uOwpAQCAtNjY3LDkgKzY2Niw5IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjpyZW1vdmVOZXdQcm9wZXJ0eVQKIAogICAgIHRyYW5zaXRpb24tPm1fYmxvYi5zZXRJbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5KHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlz
dG9yeSgpICYgfkNvcHlPbldyaXRlKTsKICAgICB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9w
ZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNp
dGlvbktpbmQoVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24pOwogICAgIHRyYW5zaXRp
b24tPnNldFByb3BlcnR5VGFibGUodm0sIHN0cnVjdHVyZS0+dGFrZVByb3BlcnR5VGFibGVPckNs
b25lSWZQaW5uZWQodm0pKTsKICAgICB0cmFuc2l0aW9uLT5zZXRNYXhPZmZzZXQodm0sIHN0cnVj
dHVyZS0+bWF4T2Zmc2V0KCkpOwotICAgIHRyYW5zaXRpb24tPnNldElzUHJvcGVydHlEZWxldGlv
blRyYW5zaXRpb24odHJ1ZSk7CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5yZW1vdmUodm0s
IHByb3BlcnR5TmFtZSk7CiAgICAgQVNTRVJUKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KTsKQEAg
LTc2MiwxNyArNzYxLDE3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjp0b1VuY2FjaGVhYmxlRGlj
dGkKIAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIG5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwg
c3RydWN0dXJlLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OlNlYWwpOworICAgIHJldHVybiBub25Q
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgVHJhbnNpdGlvbktpbmQ6OlNlYWwpOwog
fQogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpGcmVlemUpOworICAgIHJldHVybiBu
b25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgVHJhbnNpdGlvbktpbmQ6OkZyZWV6
ZSk7CiB9CiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRp
b24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1cm4gbm9uUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6UHJldmVu
dEV4dGVuc2lvbnMpOworICAgIHJldHVybiBub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgVHJhbnNpdGlvbktpbmQ6OlByZXZlbnRFeHRlbnNpb25zKTsKIH0KIAogUHJvcGVydHlU
YWJsZSogU3RydWN0dXJlOjp0YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZChWTSYgdm0p
CkBAIC03OTAsMTUgKzc4OSwxMyBAQCBQcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OnRha2VQcm9w
ZXJ0eVRhCiAgICAgcmV0dXJuIG1hdGVyaWFsaXplUHJvcGVydHlUYWJsZSh2bSwgc2V0UHJvcGVy
dHlUYWJsZSk7CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b25TbG93KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5vblByb3BlcnR5VHJhbnNpdGlv
biB0cmFuc2l0aW9uS2luZCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5z
aXRpb25TbG93KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRyYW5zaXRpb25LaW5kIHRy
YW5zaXRpb25LaW5kKQogewotICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSB0b0F0dHJpYnV0ZXMo
dHJhbnNpdGlvbktpbmQpOwogICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5ID0gbmV3SW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeSgpLCB0cmFuc2l0aW9uS2luZCk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBleGlzdGlu
Z1RyYW5zaXRpb247Ci0gICAgY29uc3RleHByIGJvb2wgaXNBZGRpdGlvbiA9IHRydWU7Ci0gICAg
aWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIChleGlzdGluZ1RyYW5zaXRpb24gPSBz
dHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChudWxscHRyLCBhdHRyaWJ1dGVzLCBpc0Fk
ZGl0aW9uKSkpIHsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlv
blByb3BlcnR5QXR0cmlidXRlcygpID09IGF0dHJpYnV0ZXMpOworICAgIGlmICghc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSAmJiAoZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3Ry
YW5zaXRpb25UYWJsZS5nZXQobnVsbHB0ciwgMCwgdHJhbnNpdGlvbktpbmQpKSkgeworICAgICAg
ICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uS2luZCgpID09IHRyYW5zaXRp
b25LaW5kKTsKICAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeSgpID09IGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpOwogICAg
ICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOwogICAgIH0KQEAgLTgwNiw3ICs4MDMsNyBA
QCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0CiAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwogICAgIAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0
ZSh2bSwgc3RydWN0dXJlKTsKLSAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uUHJvcGVydHlB
dHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25LaW5k
KHRyYW5zaXRpb25LaW5kKTsKICAgICB0cmFuc2l0aW9uLT5tX2Jsb2Iuc2V0SW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeShpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KTsKICAgICAKICAg
ICBpZiAocHJldmVudHNFeHRlbnNpb25zKHRyYW5zaXRpb25LaW5kKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyNjU2MzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDggKzIwMyw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
U3RydWN0dXJlKiBzZWFsVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSopOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGZyZWV6ZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1
cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24o
Vk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGF0aWMgU3RydWN0dXJlKiBub25Qcm9wZXJ0eVRyYW5z
aXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24pOwotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvblNsb3co
Vk0mLCBTdHJ1Y3R1cmUqLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24pOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIG5vblByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFRyYW5zaXRpb25L
aW5kKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBub25Qcm9wZXJ0
eVRyYW5zaXRpb25TbG93KFZNJiwgU3RydWN0dXJlKiwgVHJhbnNpdGlvbktpbmQpOwogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1NlYWxlZChWTSYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNGcm96ZW4oVk0mKTsKQEAgLTY5MSw3ICs2OTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXQjI3VwcGVyTmFtZSh0eXBlIG5ld1ZhbHVlKSBcCiAgICAge1wKICAgICAgICAgbV9i
aXRGaWVsZCAmPSB+KHNfIyNsb3dlck5hbWUjI01hc2sgPDwgb2Zmc2V0KTtcCi0gICAgICAgIG1f
Yml0RmllbGQgfD0gKG5ld1ZhbHVlICYgc18jI2xvd2VyTmFtZSMjTWFzaykgPDwgb2Zmc2V0O1wK
KyAgICAgICAgbV9iaXRGaWVsZCB8PSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG5ld1ZhbHVlKSAm
IHNfIyNsb3dlck5hbWUjI01hc2spIDw8IG9mZnNldDtcCiAgICAgfQogCiAgICAgREVGSU5FX0JJ
VEZJRUxEKERpY3Rpb25hcnlLaW5kLCBkaWN0aW9uYXJ5S2luZCwgRGljdGlvbmFyeUtpbmQsIDIs
IDApOwpAQCAtNjk5LDcgKzY5OSw4IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQklURklFTEQoYm9v
bCwgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcywgSGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcywg
MSwgMyk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8sIEhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzRXhjbHVkaW5nUHJvdG8sIDEsIDQpOwogICAgIERFRklORV9CSVRGSUVMRChib29sLCBp
c1F1aWNrUHJvcGVydHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24sIElzUXVpY2tQcm9wZXJ0
eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbiwgMSwgNSk7Ci0gICAgREVGSU5FX0JJVEZJRUxE
KHVuc2lnbmVkLCB0cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzLCBUcmFuc2l0aW9uUHJvcGVy
dHlBdHRyaWJ1dGVzLCAxNCwgNik7CisgICAgREVGSU5FX0JJVEZJRUxEKFRyYW5zaXRpb25Qcm9w
ZXJ0eUF0dHJpYnV0ZXMsIHRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMsIFRyYW5zaXRpb25Q
cm9wZXJ0eUF0dHJpYnV0ZXMsIDgsIDYpOworICAgIERFRklORV9CSVRGSUVMRChUcmFuc2l0aW9u
S2luZCwgdHJhbnNpdGlvbktpbmQsIFRyYW5zaXRpb25LaW5kLCA2LCAxNCk7CiAgICAgREVGSU5F
X0JJVEZJRUxEKGJvb2wsIGRpZFByZXZlbnRFeHRlbnNpb25zLCBEaWRQcmV2ZW50RXh0ZW5zaW9u
cywgMSwgMjApOwogICAgIERFRklORV9CSVRGSUVMRChib29sLCBkaWRUcmFuc2l0aW9uLCBEaWRU
cmFuc2l0aW9uLCAxLCAyMSk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIHN0YXRpY1Byb3Bl
cnRpZXNSZWlmaWVkLCBTdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCwgMSwgMjIpOwpAQCAtNzEwLDkg
KzcxMSwxMiBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc0JlZW5EaWN0
aW9uYXJ5LCBIYXNCZWVuRGljdGlvbmFyeSwgMSwgMjcpOwogICAgIERFRklORV9CSVRGSUVMRChi
b29sLCBwcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZywgUHJvdGVjdFByb3Bl
cnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcsIDEsIDI4KTsKICAgICBERUZJTkVfQklURklFTEQo
Ym9vbCwgaGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvLCBI
YXNVbmRlcnNjb3JlUHJvdG9Qcm9wZXJ0eUV4Y2x1ZGluZ09yaWdpbmFsUHJvdG8sIDEsIDI5KTsK
LSAgICBERUZJTkVfQklURklFTEQoYm9vbCwgaXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbiwg
SXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbiwgMSwgMzApOwogCiAgICAgc3RhdGljX2Fzc2Vy
dChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzIDw9IHNpemVvZihUcmFu
c2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKSAqIDgpOworICAgIHN0YXRpY19hc3NlcnQoc19iaXRX
aWR0aE9mVHJhbnNpdGlvbktpbmQgPD0gc2l6ZW9mKFRyYW5zaXRpb25LaW5kKSAqIDgpOworCisg
ICAgYm9vbCBpc1Byb3BlcnR5QWRkaXRpb25UcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJh
bnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBZGRpdGlvbjsgfQorICAg
IGJvb2wgaXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRyYW5z
aXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb247IH0KIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2
aXNpb24gMjY1NjM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsNyArNjA4LDcgQEAgQUxXQVlTX0lOTElO
RSBib29sIFN0cnVjdHVyZTo6c2hvdWxkQ29udgogICAgIHJldHVybiAhYU9iaiAmJiAhYk9iajsK
IH0KIAotaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24o
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5z
aXRpb25LaW5kKQoraW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5z
aXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVHJhbnNpdGlvbktpbmQgdHJhbnNp
dGlvbktpbmQpCiB7CiAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rv
cnkgPSBuZXdJbmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0
b3J5KCksIHRyYW5zaXRpb25LaW5kKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlzaW9u
IDI2NTYzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsMTYgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBTdHJ1Y3R1cmU7CiAKLXN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgRmlyc3RJbnRlcm5hbEF0dHJpYnV0ZSA9IDEgPDwgNjsgLy8gVXNlIGZvciB0
cmFuc2l0aW9ucyB0aGF0IGRvbid0IGhhdmUgdG8gZG8gd2l0aCBwcm9wZXJ0eSBhZGRpdGlvbnMu
Cit1c2luZyBUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzID0gdWludDhfdDsKIAotLy8gU3Vw
cG9ydCBmb3IgYXR0cmlidXRlcyB1c2VkIHRvIGluZGljYXRlIHRyYW5zaXRpb25zIG5vdCByZWxh
dGVkIHRvIHByb3BlcnRpZXMuCi0vLyBJZiBhbnkgb2YgdGhlc2UgYXJlIHVzZWQsIHRoZSBzdHJp
bmcgcG9ydGlvbiBvZiB0aGUga2V5IHNob3VsZCBiZSAwLgotZW51bSBjbGFzcyBOb25Qcm9wZXJ0
eVRyYW5zaXRpb24gOiB1bnNpZ25lZCB7CitlbnVtIGNsYXNzIFRyYW5zaXRpb25LaW5kIDogdWlu
dDhfdCB7CisgICAgVW5rbm93biwKKyAgICBQcm9wZXJ0eUFkZGl0aW9uLAorICAgIFByb3BlcnR5
RGVsZXRpb24sCisgICAgUHJvcGVydHlBdHRyaWJ1dGVDaGFuZ2UsCisKKyAgICAvLyBTdXBwb3J0
IGZvciB0cmFuc2l0aW9ucyBub3QgcmVsYXRlZCB0byBwcm9wZXJ0aWVzLgorICAgIC8vIElmIGFu
eSBvZiB0aGVzZSBhcmUgdXNlZCwgdGhlIHN0cmluZyBwb3J0aW9uIG9mIHRoZSBrZXkgc2hvdWxk
IGJlIDAuCiAgICAgQWxsb2NhdGVVbmRlY2lkZWQsCiAgICAgQWxsb2NhdGVJbnQzMiwKICAgICBB
bGxvY2F0ZURvdWJsZSwKQEAgLTUyLDg4ICs1Nyw4NCBAQCBlbnVtIGNsYXNzIE5vblByb3BlcnR5
VHJhbnNpdGlvbiA6IHVuc2lnCiAgICAgU2VhbCwKICAgICBGcmVlemUKIH07Ci11c2luZyBUcmFu
c2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzID0gdWludDE2X3Q7CiAKLWlubGluZSB1bnNpZ25lZCB0
b0F0dHJpYnV0ZXMoTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24pCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0cmFuc2l0aW9uKSArIEZpcnN0SW50ZXJuYWxBdHRy
aWJ1dGU7Ci19CitzdGF0aWMgY29uc3RleHByIGF1dG8gRmlyc3ROb25Qcm9wZXJ0eVRyYW5zaXRp
b25LaW5kID0gVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlVW5kZWNpZGVkOwogCi1pbmxpbmUgYm9v
bCBjaGFuZ2VzSW5kZXhpbmdUeXBlKE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uKQor
aW5saW5lIGJvb2wgY2hhbmdlc0luZGV4aW5nVHlwZShUcmFuc2l0aW9uS2luZCB0cmFuc2l0aW9u
KQogewogICAgIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgTm9uUHJvcGVydHlUcmFu
c2l0aW9uOjpBbGxvY2F0ZVVuZGVjaWRlZDoKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlv
bjo6QWxsb2NhdGVJbnQzMjoKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2Nh
dGVEb3VibGU6Ci0gICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlQ29udGln
dW91czoKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVBcnJheVN0b3Jh
Z2U6Ci0gICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlU2xvd1B1dEFycmF5
U3RvcmFnZToKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6U3dpdGNoVG9TbG93UHV0
QXJyYXlTdG9yYWdlOgotICAgIGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBZGRJbmRleGVk
QWNjZXNzb3JzOgorICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlVW5kZWNpZGVkOgor
ICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlSW50MzI6CisgICAgY2FzZSBUcmFuc2l0
aW9uS2luZDo6QWxsb2NhdGVEb3VibGU6CisgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6QWxsb2Nh
dGVDb250aWd1b3VzOgorICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlQXJyYXlTdG9y
YWdlOgorICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlU2xvd1B1dEFycmF5U3RvcmFn
ZToKKyAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6
CisgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6QWRkSW5kZXhlZEFjY2Vzc29yczoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IH0KIAotaW5saW5lIEluZGV4aW5nVHlwZSBuZXdJbmRleGluZ1R5cGUoSW5kZXhpbmdUeXBlIG9s
ZFR5cGUsIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uKQoraW5saW5lIEluZGV4aW5n
VHlwZSBuZXdJbmRleGluZ1R5cGUoSW5kZXhpbmdUeXBlIG9sZFR5cGUsIFRyYW5zaXRpb25LaW5k
IHRyYW5zaXRpb24pCiB7CiAgICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBOb25Q
cm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlVW5kZWNpZGVkOgorICAgIGNhc2UgVHJhbnNpdGlv
bktpbmQ6OkFsbG9jYXRlVW5kZWNpZGVkOgogICAgICAgICBBU1NFUlQoIWhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKG9sZFR5cGUpKTsKICAgICAgICAgcmV0dXJuIG9sZFR5cGUgfCBVbmRlY2lkZWRTaGFw
ZTsKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6QWxsb2NhdGVJbnQzMjoKKyAgICBj
YXNlIFRyYW5zaXRpb25LaW5kOjpBbGxvY2F0ZUludDMyOgogICAgICAgICBBU1NFUlQoIWhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpIHx8IGhhc1VuZGVjaWRlZChvbGRUeXBlKSB8fCBvbGRU
eXBlID09IENvcHlPbldyaXRlQXJyYXlXaXRoSW50MzIpOwogICAgICAgICByZXR1cm4gKG9sZFR5
cGUgJiB+SW5kZXhpbmdTaGFwZUFuZFdyaXRhYmlsaXR5TWFzaykgfCBJbnQzMlNoYXBlOwotICAg
IGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZURvdWJsZToKKyAgICBjYXNlIFRy
YW5zaXRpb25LaW5kOjpBbGxvY2F0ZURvdWJsZToKICAgICAgICAgQVNTRVJUKCFoYXNJbmRleGVk
UHJvcGVydGllcyhvbGRUeXBlKSB8fCBoYXNVbmRlY2lkZWQob2xkVHlwZSkgfHwgaGFzSW50MzIo
b2xkVHlwZSkgfHwgb2xkVHlwZSA9PSBDb3B5T25Xcml0ZUFycmF5V2l0aERvdWJsZSk7CiAgICAg
ICAgIHJldHVybiAob2xkVHlwZSAmIH5JbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8
IERvdWJsZVNoYXBlOwotICAgIGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZUNv
bnRpZ3VvdXM6CisgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6QWxsb2NhdGVDb250aWd1b3VzOgog
ICAgICAgICBBU1NFUlQoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpIHx8IGhhc1VuZGVj
aWRlZChvbGRUeXBlKSB8fCBoYXNJbnQzMihvbGRUeXBlKSB8fCBoYXNEb3VibGUob2xkVHlwZSkg
fHwgb2xkVHlwZSA9PSBDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpOwogICAgICAgICBy
ZXR1cm4gKG9sZFR5cGUgJiB+SW5kZXhpbmdTaGFwZUFuZFdyaXRhYmlsaXR5TWFzaykgfCBDb250
aWd1b3VzU2hhcGU7Ci0gICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRpb246OkFsbG9jYXRlQXJy
YXlTdG9yYWdlOgorICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OkFsbG9jYXRlQXJyYXlTdG9yYWdl
OgogICAgICAgICBBU1NFUlQoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpIHx8IGhhc1Vu
ZGVjaWRlZChvbGRUeXBlKSB8fCBoYXNJbnQzMihvbGRUeXBlKSB8fCBoYXNEb3VibGUob2xkVHlw
ZSkgfHwgaGFzQ29udGlndW91cyhvbGRUeXBlKSk7CiAgICAgICAgIHJldHVybiAob2xkVHlwZSAm
IH5JbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8IEFycmF5U3RvcmFnZVNoYXBlOwot
ICAgIGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpBbGxvY2F0ZVNsb3dQdXRBcnJheVN0b3Jh
Z2U6CisgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6QWxsb2NhdGVTbG93UHV0QXJyYXlTdG9yYWdl
OgogICAgICAgICBBU1NFUlQoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpIHx8IGhhc1Vu
ZGVjaWRlZChvbGRUeXBlKSB8fCBoYXNJbnQzMihvbGRUeXBlKSB8fCBoYXNEb3VibGUob2xkVHlw
ZSkgfHwgaGFzQ29udGlndW91cyhvbGRUeXBlKSk7CiAgICAgICAgIHJldHVybiAob2xkVHlwZSAm
IH5JbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8IFNsb3dQdXRBcnJheVN0b3JhZ2VT
aGFwZTsKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6U3dpdGNoVG9TbG93UHV0QXJy
YXlTdG9yYWdlOgorICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlN3aXRjaFRvU2xvd1B1dEFycmF5
U3RvcmFnZToKICAgICAgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShvbGRUeXBlKSk7CiAgICAg
ICAgIHJldHVybiAob2xkVHlwZSAmIH5JbmRleGluZ1NoYXBlQW5kV3JpdGFiaWxpdHlNYXNrKSB8
IFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZTsKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlv
bjo6QWRkSW5kZXhlZEFjY2Vzc29yczoKKyAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpBZGRJbmRl
eGVkQWNjZXNzb3JzOgogICAgICAgICByZXR1cm4gb2xkVHlwZSB8IE1heUhhdmVJbmRleGVkQWNj
ZXNzb3JzOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBvbGRUeXBlOwogICAgIH0KIH0K
IAotaW5saW5lIGJvb2wgcHJldmVudHNFeHRlbnNpb25zKE5vblByb3BlcnR5VHJhbnNpdGlvbiB0
cmFuc2l0aW9uKQoraW5saW5lIGJvb2wgcHJldmVudHNFeHRlbnNpb25zKFRyYW5zaXRpb25LaW5k
IHRyYW5zaXRpb24pCiB7CiAgICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBOb25Q
cm9wZXJ0eVRyYW5zaXRpb246OlByZXZlbnRFeHRlbnNpb25zOgotICAgIGNhc2UgTm9uUHJvcGVy
dHlUcmFuc2l0aW9uOjpTZWFsOgotICAgIGNhc2UgTm9uUHJvcGVydHlUcmFuc2l0aW9uOjpGcmVl
emU6CisgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6UHJldmVudEV4dGVuc2lvbnM6CisgICAgY2Fz
ZSBUcmFuc2l0aW9uS2luZDo6U2VhbDoKKyAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpGcmVlemU6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKLWlubGluZSBib29sIHNldHNEb250RGVsZXRlT25BbGxQcm9wZXJ0aWVz
KE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uKQoraW5saW5lIGJvb2wgc2V0c0RvbnRE
ZWxldGVPbkFsbFByb3BlcnRpZXMoVHJhbnNpdGlvbktpbmQgdHJhbnNpdGlvbikKIHsKICAgICBz
d2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6U2Vh
bDoKLSAgICBjYXNlIE5vblByb3BlcnR5VHJhbnNpdGlvbjo6RnJlZXplOgorICAgIGNhc2UgVHJh
bnNpdGlvbktpbmQ6OlNlYWw6CisgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6RnJlZXplOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogfQogCi1pbmxpbmUgYm9vbCBzZXRzUmVhZE9ubHlPbk5vbkFjY2Vzc29yUHJvcGVydGll
cyhOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbikKK2lubGluZSBib29sIHNldHNSZWFk
T25seU9uTm9uQWNjZXNzb3JQcm9wZXJ0aWVzKFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb24pCiB7
CiAgICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBOb25Qcm9wZXJ0eVRyYW5zaXRp
b246OkZyZWV6ZToKKyAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpGcmVlemU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0Niwy
NyArMTQ3LDI4IEBAIGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSB7CiAgICAgCiAjaWYg
Q1BVKEFERFJFU1M2NCkKICAgICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIC8vIExvZ2ljYWxseSwg
S2V5IGlzIGEgdHVwbGUgb2YgKDEpIFVuaXF1ZWRTdHJpbmdJbXBsKiwgKDIpIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIGFuZCAoMykgYm9vbCBpc0FkZGl0aW9uLgotICAgICAgICAvLyBXZSBlbmNvZGUg
KDIpIGFuZCAoMykgaW50byAoMSkncyBlbXB0eSBiaXRzIHNpbmNlIGEgcG9pbnRlciBpcyA0OGJp
dCBhbmQgbG93ZXIgMyBiaXRzIGFyZSB1c2FibGUgYmVjYXVzZSBvZiBhbGlnbm1lbnQuCisgICAg
ICAgIC8vIExvZ2ljYWxseSwgS2V5IGlzIGEgdHVwbGUgb2YgKDEpIFVuaXF1ZWRTdHJpbmdJbXBs
KiwgKDIpIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGFuZCAoMykgdHJhbnNpdGlvbktpbmQuCiAgICAg
ICAgIHN0cnVjdCBLZXkgewogICAgICAgICAgICAgZnJpZW5kIHN0cnVjdCBIYXNoOwogICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydChXVEZfT1NfQ09OU1RBTlRfRUZGRUNUSVZFX0FERFJFU1NfV0lE
VEggPD0gNDgpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgaXNBZGRp
dGlvbk1hc2sgPSAxVUxMOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qg
c3RyaW5nTWFzayA9ICgoMVVMTCA8PCA0OCkgLSAxKSAmICh+aXNBZGRpdGlvbk1hc2spOwogICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBhdHRyaWJ1dGVzU2hpZnQgPSA0ODsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdHJhbnNpdGlvbktpbmRTaGlm
dCA9IDU2OworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgc3RyaW5nTWFz
ayA9ICgxVUxMIDw8IGF0dHJpYnV0ZXNTaGlmdCkgLSAxOwogICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50cHRyX3QgaGFzaFRhYmxlRGVsZXRlZFZhbHVlID0gMHgyOwotICAgICAgICAg
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoVHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcykgKiA4
IDw9IDE2KTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFRyYW5zaXRpb25Qcm9w
ZXJ0eUF0dHJpYnV0ZXMpICogOCA8PSA4KTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKFRyYW5zaXRpb25LaW5kKSAqIDggPD0gOCk7CiAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0
KGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSA8IGFsaWdub2YoVW5pcXVlZFN0cmluZ0ltcGwpKTsKIAot
ICAgICAgICAgICAgLy8gSGlnaGVzdCAxNiBiaXRzIGFyZSBmb3IgVHJhbnNpdGlvblByb3BlcnR5
QXR0cmlidXRlcy4KLSAgICAgICAgICAgIC8vIExvd2VzdCAxIGJpdCBpcyBmb3IgaXNBZGRpdGlv
biBmbGFnLgorICAgICAgICAgICAgLy8gSGlnaGVzdCA4IGJpdHMgYXJlIGZvciBUcmFuc2l0aW9u
S2luZDsgbmV4dCA4IGJlbG9uZyB0byBUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzLgogICAg
ICAgICAgICAgLy8gUmVtYWluaW5nIGJpdHMgYXJlIGZvciBVbmlxdWVkU3RyaW5nSW1wbCouCi0g
ICAgICAgICAgICBLZXkoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIGJvb2wgaXNBZGRpdGlvbikKLSAgICAgICAgICAgICAgICA6IG1fZW5jb2RlZERhdGEoYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW1wbCkgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihhdHRy
aWJ1dGVzKSA8PCBhdHRyaWJ1dGVzU2hpZnQpIHwgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaXNB
ZGRpdGlvbikgJiBpc0FkZGl0aW9uTWFzaykpCisgICAgICAgICAgICBLZXkoVW5pcXVlZFN0cmlu
Z0ltcGwqIGltcGwsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kIHRyYW5zaXRp
b25LaW5kKQorICAgICAgICAgICAgICAgIDogbV9lbmNvZGVkRGF0YShiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihpbXBsKSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGF0dHJpYnV0ZXMpIDw8IGF0
dHJpYnV0ZXNTaGlmdCkgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih0cmFuc2l0aW9uS2luZCkg
PDwgdHJhbnNpdGlvbktpbmRTaGlmdCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGltcGwgPT0gdGhpcy0+aW1wbCgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXNB
ZGRpdGlvbiA9PSB0aGlzLT5pc0FkZGl0aW9uKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChh
dHRyaWJ1dGVzIDw9IFVJTlQ4X01BWCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0
ZXMgPT0gdGhpcy0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodHJhbnNp
dGlvbktpbmQgIT0gVHJhbnNpdGlvbktpbmQ6OlVua25vd24pOworICAgICAgICAgICAgICAgIEFT
U0VSVCh0cmFuc2l0aW9uS2luZCA9PSB0aGlzLT50cmFuc2l0aW9uS2luZCgpKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgS2V5KCkgPSBkZWZhdWx0OwpAQCAtMTc4LDggKzE4MCw4IEBA
IGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSB7CiAgICAgICAgICAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YSA9PSBoYXNo
VGFibGVEZWxldGVkVmFsdWU7IH0KIAogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlt
cGwoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5pcXVlZFN0cmluZ0ltcGwqPihtX2Vu
Y29kZWREYXRhICYgc3RyaW5nTWFzayk7IH0KLSAgICAgICAgICAgIGJvb2wgaXNBZGRpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZERhdGEgJiBpc0FkZGl0aW9uTWFzazsgfQotICAgICAg
ICAgICAgdW5zaWduZWQgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZERhdGEg
Pj4gYXR0cmlidXRlc1NoaWZ0OyB9CisgICAgICAgICAgICBUcmFuc2l0aW9uUHJvcGVydHlBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiAobV9lbmNvZGVkRGF0YSA+PiBhdHRy
aWJ1dGVzU2hpZnQpICYgVUlOVDhfTUFYOyB9CisgICAgICAgICAgICBUcmFuc2l0aW9uS2luZCB0
cmFuc2l0aW9uS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRyYW5zaXRpb25LaW5k
PihtX2VuY29kZWREYXRhID4+IHRyYW5zaXRpb25LaW5kU2hpZnQpOyB9CiAKICAgICAgICAgICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCiAgICAg
ICAgICAgICB7CkBAIC0yMTAsMTIgKzIxMiwxMiBAQCBjbGFzcyBTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGUgewogICAgIH07CiAjZWxzZQogICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgdXNpbmcg
S2V5ID0gc3RkOjp0dXBsZTxVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVkLCBib29sPjsKKyAg
ICAgICAgdXNpbmcgS2V5ID0gc3RkOjp0dXBsZTxVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVk
LCBUcmFuc2l0aW9uS2luZD47CiAgICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IEhhc2hUcmFpdHM8
S2V5PjsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYg
cCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFB0ckhhc2g8VW5pcXVlZFN0cmluZ0lt
cGwqPjo6aGFzaChzdGQ6OmdldDwwPihwKSkgKyBzdGQ6OmdldDwxPihwKTsKKyAgICAgICAgICAg
IHJldHVybiBQdHJIYXNoPFVuaXF1ZWRTdHJpbmdJbXBsKj46Omhhc2goc3RkOjpnZXQ8MD4ocCkp
ICsgc3RkOjpnZXQ8MT4ocCkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpnZXQ8Mj4ocCkp
OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBhLCBj
b25zdCBLZXkmIGIpCkBAIC0yNDksOCArMjUxLDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHZv
aWQgYWRkKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgYm9vbCBjb250YWlucyhVbmlxdWVkU3RyaW5n
SW1wbCosIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgaXNBZGRpdGlvbikgY29uc3Q7Ci0gICAg
U3RydWN0dXJlKiBnZXQoVW5pcXVlZFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBi
b29sIGlzQWRkaXRpb24pIGNvbnN0OworICAgIGJvb2wgY29udGFpbnMoVW5pcXVlZFN0cmluZ0lt
cGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZCkgY29uc3Q7CisgICAgU3Ry
dWN0dXJlKiBnZXQoVW5pcXVlZFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBUcmFu
c2l0aW9uS2luZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNpbmdsZVNs
b3RUcmFuc2l0aW9uV2Vha093bmVyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>