<?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>227785</bug_id>
          
          <creation_ts>2021-07-07 18:32:00 -0700</creation_ts>
          <short_desc>Continue to consult InlineAccess&apos;s Structure even after switching to a stub IC</short_desc>
          <delta_ts>2021-07-10 18:28:17 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775566</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-07 18:32:00 -0700</bug_when>
    <thetext>Only observed once. 

stress/class-subclassing-function.js.ftl-eager-no-cjit: test_script_17253: line 2: 37659 Segmentation fault: 11  ( &quot;$@&quot; ../../.vm/JavaScriptCore.framework/Helpers/jsc --useFTLJIT\=false --useFunctionDotArguments\=true --validateExceptionChecks\=true --useDollarVM\=true --maxPerThreadStackUsage\=1572864 --validateGraph\=true --validateBCE\=true --airForceIRCAllocator\=true --useFTLJIT\=true --useConcurrentJIT\=false --thresholdForJITAfterWarmUp\=100 --scribbleFreeCells\=true --thresholdForJITAfterWarmUp\=10 --thresholdForJITSoon\=10 --thresholdForOptimizeAfterWarmUp\=20 --thresholdForOptimizeAfterLongWarmUp\=20 --thresholdForOptimizeSoon\=20 --thresholdForFTLOptimizeAfterWarmUp\=20 --thresholdForFTLOptimizeSoon\=20 --thresholdForOMGOptimizeAfterWarmUp\=20 --thresholdForOMGOptimizeSoon\=20 --maximumEvalCacheableSourceLength\=150000 --useEagerCodeBlockJettisonTiming\=true --repatchBufferingCountdown\=0 --collectContinuously\=true --useGenerationalGC\=false --verifyGC\=true --forceOSRExitToLLInt\=true --useExecutableAllocationFuzz\=true --fireExecutableAllocationFuzzRandomly\=true class-subclassing-function.js )


Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000005


Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   ???                           	0x0000000104415b68 0 + 4366359400
1   ???                           	0x0000000104410008 0 + 4366336008
2   ???                           	0x0000000104410008 0 + 4366336008
3   ???                           	0x00000001044107e8 0 + 4366338024
4   com.apple.JavaScriptCore      	0x00000001031311a8 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 76 (JITCodeInlines.h:42) [inlined]
5   com.apple.JavaScriptCore      	0x00000001031311a8 JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::JSGlobalObject*, JSC::JSObject*) + 12052 (Interpreter.cpp:836)
6   com.apple.JavaScriptCore      	0x00000001033ff83c JSC::evaluate(JSC::JSGlobalObject*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 276 (Completion.cpp:137)
7   jsc                           	0x00000001006ebd20 runWithOptions(GlobalObject*, CommandLine&amp;, bool&amp;) + 1540 (jsc.cpp:3068) [inlined]
8   jsc                           	0x00000001006ebd20 jscmain(int, char**)::$_8::operator()(JSC::VM&amp;, GlobalObject*, bool&amp;) const + 1664 (jsc.cpp:3640) [inlined]
9   jsc                           	0x00000001006ebd20 int runJSC&lt;jscmain(int, char**)::$_8&gt;(CommandLine const&amp;, bool, jscmain(int, char**)::$_8 const&amp;) + 2292 (jsc.cpp:3462) [inlined]
10  jsc                           	0x00000001006ebd20 jscmain(int, char**) + 3152 (jsc.cpp:3633)
11  jsc                           	0x00000001006eb074 main + 44 (jsc.cpp:2856)
12  dyld                          	0x00000001009090fc start + 520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775899</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-08 19:25:26 -0700</bug_when>
    <thetext>We have an inline access that points to Structure S. However, S dies, and we don&apos;t clear it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775913</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-08 20:25:39 -0700</bug_when>
    <thetext>Seems like the cache type of the SSI is changed from &quot;get by id self&quot; somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776039</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-09 10:59:27 -0700</bug_when>
    <thetext>Found the bug:

1. Initialize SSI to be an inline self access loading from structure S.
2. We transition to being a PolymorphicAccess based SSI. But, we haven&apos;t generated code yet. We&apos;re buffered. So we are still running the inline access. But the SSI thinks it&apos;s a &quot;Stub&quot;.
3. S is collected
4. we continue to run (1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776059</commentid>
    <comment_count>4</comment_count>
      <attachid>433235</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-09 13:05:54 -0700</bug_when>
    <thetext>Created attachment 433235
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776065</commentid>
    <comment_count>5</comment_count>
      <attachid>433235</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-07-09 13:18:41 -0700</bug_when>
    <thetext>Comment on attachment 433235
patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Stop running inline access code once we switch to being a Stub IC

Doesn&apos;t that create a window of time when we&apos;re now taking slow path, when previously we would have had a fast path?

Have you measured perf carefully?

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        2. We transition to being a PolymorphicAccess based StructureStubInfo. But, we haven&apos;t
&gt; +        generated code yet. We&apos;re in the buffered state. So we are still running the inline access
&gt; +        from (1).  But the StructureStubInfo thinks it&apos;s a &quot;Stub&quot;.

This seems like a bad state to be in.  Can we make it so that PolymorphicAccess only starts buffering after it has generated some initial thing?

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        4. We continue to run code from (1), because when we finalize the IC during GC, it
&gt; +        doesn&apos;t think it&apos;s an inline access.

Why not fix the bug by having the GC still look at the InlineAccess IC when we are in this state?  Or maybe forever?  It can reset it if it ever becomes invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776087</commentid>
    <comment_count>6</comment_count>
      <attachid>433242</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-09 15:10:18 -0700</bug_when>
    <thetext>Created attachment 433242
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776166</commentid>
    <comment_count>7</comment_count>
      <attachid>433271</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-10 13:58:47 -0700</bug_when>
    <thetext>Created attachment 433271
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776170</commentid>
    <comment_count>8</comment_count>
      <attachid>433273</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-10 13:59:35 -0700</bug_when>
    <thetext>Created attachment 433273
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776171</commentid>
    <comment_count>9</comment_count>
      <attachid>433235</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-07-10 14:00:15 -0700</bug_when>
    <thetext>Comment on attachment 433235
patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt; +        doesn&apos;t think it&apos;s an inline access.
&gt; 
&gt; Why not fix the bug by having the GC still look at the InlineAccess IC when we are in this state?  Or maybe forever?  It can reset it if it ever becomes invalid.

This is the approach I went with in the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776174</commentid>
    <comment_count>10</comment_count>
      <attachid>433273</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-10 14:08:32 -0700</bug_when>
    <thetext>Comment on attachment 433273
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776197</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-10 18:27:48 -0700</bug_when>
    <thetext>Committed r279813 (239574@main): &lt;https://commits.webkit.org/239574@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433273.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776198</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-10 18:28:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/80425870&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433235</attachid>
            <date>2021-07-09 13:05:54 -0700</date>
            <delta_ts>2021-07-09 15:10:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>4103</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDIxLTA3LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFN0b3AgcnVubmluZyBpbmxpbmUgYWNjZXNzIGNvZGUgb25jZSB3ZSBzd2l0Y2ggdG8gYmVpbmcg
YSBTdHViIElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjc3ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGZpeGVzIGEgY3Jhc2ggaW46IHN0cmVzcy9jbGFzcy1zdWJjbGFzc2luZy1mdW5jdGlv
bi5qcworICAgICAgICAKKyAgICAgICAgVGhlIGJ1ZyBpcyB0aGlzOgorICAgICAgICAxLiBXZSBp
bml0aWFsaXplIGEgU3RydWN0dXJlU3R1YkluZm8gdG8gYmUgYW4gaW5saW5lIHNlbGYgYWNjZXNz
IGRvaW5nIGEgbG9hZCBiYXNlZCBvbiBzdHJ1Y3R1cmUgUy4KKyAgICAgICAgMi4gV2UgdHJhbnNp
dGlvbiB0byBiZWluZyBhIFBvbHltb3JwaGljQWNjZXNzIGJhc2VkIFN0cnVjdHVyZVN0dWJJbmZv
LiBCdXQsIHdlIGhhdmVuJ3QKKyAgICAgICAgZ2VuZXJhdGVkIGNvZGUgeWV0LiBXZSdyZSBpbiB0
aGUgYnVmZmVyZWQgc3RhdGUuIFNvIHdlIGFyZSBzdGlsbCBydW5uaW5nIHRoZSBpbmxpbmUgYWNj
ZXNzCisgICAgICAgIGZyb20gKDEpLiAgQnV0IHRoZSBTdHJ1Y3R1cmVTdHViSW5mbyB0aGlua3Mg
aXQncyBhICJTdHViIi4KKyAgICAgICAgMy4gUyBpcyBjb2xsZWN0ZWQKKyAgICAgICAgNC4gV2Ug
Y29udGludWUgdG8gcnVuIGNvZGUgZnJvbSAoMSksIGJlY2F1c2Ugd2hlbiB3ZSBmaW5hbGl6ZSB0
aGUgSUMgZHVyaW5nIEdDLCBpdAorICAgICAgICBkb2Vzbid0IHRoaW5rIGl0J3MgYW4gaW5saW5l
IGFjY2Vzcy4KKworICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXRJbmxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oOgorCiAyMDIxLTA3LTA4ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgQWlyIG9wY29kZSBhZGQvc3ViLWFuZC1zaGlmdCBmb3IgQVJN
NjQgYW5kIHNlbGVjdCB0aGlzIGluc3RydWN0aW9uIGluIEFpcgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCShyZXZp
c2lvbiAyNzk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDkgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbwogICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2Nh
Y2hlVHlwZSAhPSBDYWNoZVR5cGU6OlVuc2V0KQorICAgICAgICAgICAgICAgIHJlc2V0SW5saW5l
Q29kZShsb2NrZXIsIGNvZGVCbG9jayk7CisKICAgICAgICAgICAgIHNldENhY2hlVHlwZShsb2Nr
ZXIsIENhY2hlVHlwZTo6U3R1Yik7CiAgICAgICAgICAgICB1LnN0dWIgPSBhY2Nlc3MucmVsZWFz
ZSgpOwogICAgICAgICB9CkBAIC0yMzgsMTkgKzI0MSw4IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1
bHQgU3RydWN0dXJlU3R1YkluZm8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFN0cnVj
dHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIs
IENvZGVCbG9jayogY29kZUJsb2NrKQordm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXRJbmxp
bmVDb2RlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKLSAgICBjbGVhckJ1ZmZlcmVkU3RydWN0dXJlcygpOwotCi0gICAgaWYgKG1fY2FjaGVU
eXBlID09IENhY2hlVHlwZTo6VW5zZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChPcHRp
b25zOjp2ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIGZyb20g
R0MgZGVzdHJ1Y3RvciBjYWxscywgc28gd2UgZG9uJ3QgdHJ5IHRvIGRvIGEgZnVsbCBkdW1wCi0g
ICAgICAgIC8vIG9mIHRoZSBDb2RlQmxvY2suCi0gICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIHN0
cnVjdHVyZSBjYWNoZSAoa2luZCAiLCBzdGF0aWNfY2FzdDxpbnQ+KGFjY2Vzc1R5cGUpLCAiKSBp
biAiLCBSYXdQb2ludGVyKGNvZGVCbG9jayksICIuXG4iKTsKLSAgICB9Ci0KICAgICBzd2l0Y2gg
KGFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SWQ6CiAgICAgICAg
IHJlc2V0R2V0QnkoY29kZUJsb2NrLCAqdGhpcywgR2V0QnlLaW5kOjpUcnlCeUlkKTsKQEAgLTMw
MSw3ICsyOTMsMjMgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uYwog
ICAgICAgICByZXNldFNldFByaXZhdGVCcmFuZChjb2RlQmxvY2ssICp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorfQorCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBD
b25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQorewor
ICAgIGNsZWFyQnVmZmVyZWRTdHJ1Y3R1cmVzKCk7CisKKyAgICBpZiAobV9jYWNoZVR5cGUgPT0g
Q2FjaGVUeXBlOjpVbnNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSkgeworICAgICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBHQyBkZXN0
cnVjdG9yIGNhbGxzLCBzbyB3ZSBkb24ndCB0cnkgdG8gZG8gYSBmdWxsIGR1bXAKKyAgICAgICAg
Ly8gb2YgdGhlIENvZGVCbG9jay4KKyAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgc3RydWN0dXJl
IGNhY2hlIChraW5kICIsIHN0YXRpY19jYXN0PGludD4oYWNjZXNzVHlwZSksICIpIGluICIsIFJh
d1BvaW50ZXIoY29kZUJsb2NrKSwgIi5cbiIpOworICAgIH0KICAgICAKKyAgICByZXNldElubGlu
ZUNvZGUobG9ja2VyLCBjb2RlQmxvY2spOworCiAgICAgZGVyZWYoKTsKICAgICBzZXRDYWNoZVR5
cGUobG9ja2VyLCBDYWNoZVR5cGU6OlVuc2V0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAyNzk3
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNldENhY2hlVHlwZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ2FjaGVUeXBlKTsK
IAorICAgIHZvaWQgcmVzZXRJbmxpbmVDb2RlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2Um
LCBDb2RlQmxvY2sqKTsKKwogICAgIHZvaWQgY2xlYXJCdWZmZXJlZFN0cnVjdHVyZXMoKQogICAg
IHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyZWRTdHJ1Y3R1cmVzTG9jayB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433242</attachid>
            <date>2021-07-09 15:10:18 -0700</date>
            <delta_ts>2021-07-10 13:58:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>18479</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5Nzk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIxLTA3LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFN0b3AgcnVubmluZyBpbmxpbmUgYWNjZXNzIGNvZGUgb25jZSB3ZSBzd2l0Y2ggdG8gYmVpbmcg
YSBTdHViIElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjc3ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGZpeGVzIGEgY3Jhc2ggaW46IHN0cmVzcy9jbGFzcy1zdWJjbGFzc2luZy1m
dW5jdGlvbi5qcworICAgICAgICAKKyAgICAgICAgVGhlIGJ1ZyBpcyB0aGlzOgorICAgICAgICAx
LiBXZSBpbml0aWFsaXplIGEgU3RydWN0dXJlU3R1YkluZm8gdG8gYmUgYW4gaW5saW5lIHNlbGYg
YWNjZXNzIGRvaW5nIGEgbG9hZCBiYXNlZCBvbiBzdHJ1Y3R1cmUgUy4KKyAgICAgICAgMi4gV2Ug
dHJhbnNpdGlvbiB0byBiZWluZyBhIFBvbHltb3JwaGljQWNjZXNzIGJhc2VkIFN0cnVjdHVyZVN0
dWJJbmZvLiBCdXQsIHdlIGhhdmVuJ3QKKyAgICAgICAgZ2VuZXJhdGVkIGNvZGUgeWV0LiBXZSdy
ZSBpbiB0aGUgYnVmZmVyZWQgc3RhdGUuIFNvIHdlIGFyZSBzdGlsbCBydW5uaW5nIHRoZSBpbmxp
bmUgYWNjZXNzCisgICAgICAgIGZyb20gKDEpLiAgQnV0IHRoZSBTdHJ1Y3R1cmVTdHViSW5mbyB0
aGlua3MgaXQncyBhICJTdHViIi4KKyAgICAgICAgMy4gUyBpcyBjb2xsZWN0ZWQKKyAgICAgICAg
NC4gV2UgY29udGludWUgdG8gcnVuIGNvZGUgZnJvbSAoMSksIGJlY2F1c2Ugd2hlbiB3ZSBmaW5h
bGl6ZSB0aGUgSUMgZHVyaW5nIEdDLCBpdAorICAgICAgICBkb2Vzbid0IHRoaW5rIGl0J3MgYW4g
aW5saW5lIGFjY2Vzcy4KKyAgICAgICAgCisgICAgICAgIFRoZSBmaXggaXMgdG8gYWx3YXlzIHRy
YWNrIHRoZSBzdHJ1Y3R1cmUgUyB0aGF0IHdlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBpbmxp
bmUKKyAgICAgICAgYWNjZXNzLCBhbmQgdG8gb25seSBzdG9wIHRyYWNraW5nIGl0IG9uY2Ugd2Un
dmUgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBTdHViLgorCisgICAgICAgICogYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHVi
SW5mbyk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zIGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeVN0YXR1czo6Y29tcHV0ZUZv
clN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0lu
QnlTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
aW5pdEdldEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRQ
dXRCeUlkUmVwbGFjZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0SW5C
eUlkU2VsZik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vha1JlZmVyZW5jZXMpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAqIGJ5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisKIDIwMjEtMDctMDggIFlpamlhIEh1YW5nICA8
eWlqaWFfaHVhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBBaXIgb3Bjb2RlIGFkZC9zdWIt
YW5kLXNoaWZ0IGZvciBBUk02NCBhbmQgc2VsZWN0IHRoaXMgaW5zdHJ1Y3Rpb24gaW4gQWlyCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShy
ZXZpc2lvbiAyNzk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSwxNSArMTU1LDE1IEBAIFJlZlB0cjxBY2Nl
c3NDYXNlPiBBY2Nlc3NDYXNlOjpmcm9tU3RydWMKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmNhY2hl
VHlwZSgpKSB7CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgogICAgICAgICBSRUxF
QVNFX0FTU0VSVChzdHViSW5mby5oYXNDb25zdGFudElkZW50aWZpZXIpOwotICAgICAgICByZXR1
cm4gUHJveHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgTG9hZCwgaWRlbnRpZmll
ciwgc3R1YkluZm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9i
amVjdFN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBQcm94eWFibGVBY2Nlc3NDYXNl
OjpjcmVhdGUodm0sIG93bmVyLCBMb2FkLCBpZGVudGlmaWVyLCBzdHViSW5mby51LmJ5SWRTZWxm
Lm9mZnNldCwgc3R1YkluZm8uaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5nZXQoKSk7CiAKICAg
ICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHN0dWJJbmZvLmhhc0NvbnN0YW50SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBBY2Nlc3ND
YXNlOjpjcmVhdGUodm0sIG93bmVyLCBSZXBsYWNlLCBpZGVudGlmaWVyLCBzdHViSW5mby51LmJ5
SWRTZWxmLm9mZnNldCwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdl
dCgpKTsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIFJlcGxh
Y2UsIGlkZW50aWZpZXIsIHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby5pbmxp
bmVBY2Nlc3NCYXNlU3RydWN0dXJlLmdldCgpKTsKIAogICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5
SWRTZWxmOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHViSW5mby5oYXNDb25zdGFudElkZW50
aWZpZXIpOwotICAgICAgICByZXR1cm4gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgSW5I
aXQsIGlkZW50aWZpZXIsIHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby51LmJ5
SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICByZXR1cm4gQWNjZXNz
Q2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgSW5IaXQsIGlkZW50aWZpZXIsIHN0dWJJbmZvLnUuYnlJ
ZFNlbGYub2Zmc2V0LCBzdHViSW5mby5pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLmdldCgpKTsK
IAogICAgIGNhc2UgQ2FjaGVUeXBlOjpBcnJheUxlbmd0aDoKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3R1YkluZm8uaGFzQ29uc3RhbnRJZGVudGlmaWVyKTsKQEAgLTc1OCwxNiArNzU4LDE0IEBA
IGJvb2wgQWNjZXNzQ2FzZTo6dmlzaXRXZWFrKFZNJiB2bSkgY29uc3QKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4KLWJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlvbnMo
VmlzaXRvciYgdmlzaXRvcikgY29uc3QKK3ZvaWQgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNp
dGlvbnMoVmlzaXRvciYgdmlzaXRvcikgY29uc3QKIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7
Ci0KICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgIHJlc3VsdCAmPSBtX3N0cnVjdHVyZS0+
bWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgICAgIG1fc3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2
aXNpdG9yKTsKIAogICAgIGlmIChtX3BvbHlQcm90b0FjY2Vzc0NoYWluKSB7CiAgICAgICAgIGZv
ciAoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgOiBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLT5jaGFp
bigpKQotICAgICAgICAgICAgcmVzdWx0ICY9IHZpc2l0b3Iudm0oKS5nZXRTdHJ1Y3R1cmUoc3Ry
dWN0dXJlSUQpLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICAgICAgICAgIHZpc2l0b3Iudm0o
KS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKICAgICB9
CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewpAQCAtNzc1LDE4ICs3NzMsMTQgQEAgYm9vbCBBY2Nl
c3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaQogICAgIGNhc2UgRGVsZXRlOgogICAgICAg
ICBpZiAodmlzaXRvci5pc01hcmtlZChtX3N0cnVjdHVyZS0+cHJldmlvdXNJRCgpKSkKICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdGVtcGxhdGUgYm9vbCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhBYnN0
cmFjdFNsb3RWaXNpdG9yJikgY29uc3Q7Ci10ZW1wbGF0ZSBib29sIEFjY2Vzc0Nhc2U6OnByb3Bh
Z2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJikgY29uc3Q7Cit0ZW1wbGF0ZSB2b2lkIEFjY2Vz
c0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKEFic3RyYWN0U2xvdFZpc2l0b3ImKSBjb25zdDsK
K3RlbXBsYXRlIHZvaWQgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0
b3ImKSBjb25zdDsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCShyZXZpc2lvbiAyNzk3MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgcHJpdmF0ZToKIAogICAgIERFQ0xBUkVfVklTSVRf
QUdHUkVHQVRFX1dJVEhfTU9ESUZJRVIoY29uc3QpOwogICAgIGJvb2wgdmlzaXRXZWFrKFZNJikg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFu
c2l0aW9ucyhWaXNpdG9yJikgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4g
dm9pZCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNpdG9yJikgY29uc3Q7CiAKICAgICAvLyBGSVhN
RTogVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIG9mIGhvdyBBY2Nlc3NDYXNlIHB1dHMgcG9zdC1n
ZW5lcmF0aW9uIHRoaW5ncyBpbnRvIGl0c2VsZi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU2CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMyw3ICsyMTMsNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJCiAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1cyhOb0luZm9ybWF0aW9uKTsKICAgICAgICAg
CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOiB7Ci0gICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gc3R1YkluZm8tPnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQo
KTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby0+aW5saW5lQWNjZXNz
QmFzZVN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+dGFrZXNTbG93UGF0
aEluREZHRm9ySW1wdXJlUHJvcGVydHkoKSkKICAgICAgICAgICAgIHJldHVybiBHZXRCeVN0YXR1
cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOwogICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBzdHViSW5mby0+aWRlbnRpZmllcigpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcAkocmV2aXNp
b24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgSW5CeVN0YXR1cyBJbkJ5U3Rh
dHVzOjpjb21wdXRlRm9yU3R1YkluZgogICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhOb0luZm9y
bWF0aW9uKTsKIAogICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOiB7Ci0gICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8tPnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVj
dHVyZS5nZXQoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby0+aW5s
aW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5nZXQoKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+dGFr
ZXNTbG93UGF0aEluREZHRm9ySW1wdXJlUHJvcGVydHkoKSkKICAgICAgICAgICAgIHJldHVybiBJ
bkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBzdHViSW5mby0+aWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lv
biAyNzk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzEsMTYgKzM3MSwxNCBAQCBib29sIFBvbHlt
b3JwaGljQWNjZXNzOjp2aXNpdFdlYWsoVk0mIHZtCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+Ci1ib29sIFBvbHltb3JwaGljQWNjZXNzOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNp
dG9yJiB2aXNpdG9yKSBjb25zdAordm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6cHJvcGFnYXRlVHJh
bnNpdGlvbnMoVmlzaXRvciYgdmlzaXRvcikgY29uc3QKIHsKLSAgICBib29sIHJlc3VsdCA9IHRy
dWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQotICAgICAgICBy
ZXN1bHQgJj0gYXQoaSkucHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgYXQoaSkucHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7CiB9
CiAKLXRlbXBsYXRlIGJvb2wgUG9seW1vcnBoaWNBY2Nlc3M6OnByb3BhZ2F0ZVRyYW5zaXRpb25z
KEFic3RyYWN0U2xvdFZpc2l0b3ImKSBjb25zdDsKLXRlbXBsYXRlIGJvb2wgUG9seW1vcnBoaWNB
Y2Nlc3M6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFNsb3RWaXNpdG9yJikgY29uc3Q7Cit0ZW1wbGF0
ZSB2b2lkIFBvbHltb3JwaGljQWNjZXNzOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhBYnN0cmFjdFNs
b3RWaXNpdG9yJikgY29uc3Q7Cit0ZW1wbGF0ZSB2b2lkIFBvbHltb3JwaGljQWNjZXNzOjpwcm9w
YWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYpIGNvbnN0OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWaXNpdG9yPgogdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRBZ2dyZWdhdGVJbXBsKFZp
c2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAkocmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVGhpcyByZXR1cm5zIHRy
dWUgaWYgaXQgaGFzIG1hcmtlZCBldmVyeXRoaW5nIGl0IHdpbGwgZXZlciBtYXJrZWQuIFRoaXMg
Y2FuIGJlIHVzZWQgYXMgYW4KICAgICAvLyBvcHRpbWl6YXRpb24gdG8gdGhlbiBhdm9pZCBjYWxs
aW5nIHRoaXMgbWV0aG9kIGFnYWluIGR1cmluZyB0aGUgZml4cG9pbnQuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhWaXNpdG9yJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBwcm9wYWdhdGVUcmFuc2l0
aW9ucyhWaXNpdG9yJikgY29uc3Q7CiAKICAgICB2b2lkIGFib3V0VG9EaWUoKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAko
cmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTAgKzE0NywxMCBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgIAogICAgIGNhc2UgQ2Fj
aGVUeXBlOjpQdXRCeUlkUmVwbGFjZTogewogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PQotICAgICAgICAgICAgc3R1YkluZm8tPnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+
Z2V0Q29uY3VycmVudGx5KHVpZCk7CisgICAgICAgICAgICBzdHViSW5mby0+aW5saW5lQWNjZXNz
QmFzZVN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCk7CiAgICAgICAgIGlmIChpc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIHJldHVybiBQdXRCeUlkVmFyaWFudDo6cmVw
bGFjZSgKLSAgICAgICAgICAgICAgICBzdHViSW5mby0+dS5ieUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5pbmxpbmVB
Y2Nlc3NCYXNlU3RydWN0dXJlLmdldCgpLCBvZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSkpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcAkocmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTUgKzU5
LDE0IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjp+U3RydWN0dXJlU3R1YkluZm8oKQogewogfQogCi12
b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBiYXNl
T2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlkU2VsZihj
b25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChoYXND
b25zdGFudElkZW50aWZpZXIpOwogICAgIHNldENhY2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6
R2V0QnlJZFNlbGYpOwogICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgY29kZUJs
b2NrLT52bSgpLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAgICAgCi0gICAgdS5ieUlk
U2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLnNldCgKLSAgICAgICAgY29kZUJsb2NrLT52bSgpLCBj
b2RlQmxvY2ssIGJhc2VPYmplY3RTdHJ1Y3R1cmUpOworICAgIHRoaXMtPmlubGluZUFjY2Vzc0Jh
c2VTdHJ1Y3R1cmUuc2V0KGNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBpbmxpbmVBY2Nlc3NC
YXNlU3RydWN0dXJlKTsKICAgICB1LmJ5SWRTZWxmLm9mZnNldCA9IG9mZnNldDsKIH0KIApAQCAt
ODEsMjUgKzgwLDIzIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRTdHJpbmdMZW5ndGgK
ICAgICBzZXRDYWNoZVR5cGUobG9ja2VyLCBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0aCk7CiB9CiAK
LXZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUq
IGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRS
ZXBsYWNlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZSogaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgc2V0
Q2FjaGVUeXBlKGxvY2tlciwgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZSk7CiAgICAgbV9pZGVu
dGlmaWVyID0gaWRlbnRpZmllcjsKICAgICBjb2RlQmxvY2stPnZtKCkuaGVhcC53cml0ZUJhcnJp
ZXIoY29kZUJsb2NrKTsKIAotICAgIHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQo
Ci0gICAgICAgIGNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0U3RydWN0dXJl
KTsKKyAgICB0aGlzLT5pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLnNldChjb2RlQmxvY2stPnZt
KCksIGNvZGVCbG9jaywgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk7CiAgICAgdS5ieUlkU2Vs
Zi5vZmZzZXQgPSBvZmZzZXQ7CiB9CiAKLXZvaWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRJbkJ5
SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2Nr
ZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1
Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIHNldENhY2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6SW5CeUlkU2VsZik7
CiAgICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICBjb2RlQmxvY2stPnZtKCkuaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKIAotICAgIHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0
cnVjdHVyZS5zZXQoCi0gICAgICAgIGNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBiYXNlT2Jq
ZWN0U3RydWN0dXJlKTsKKyAgICB0aGlzLT5pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLnNldChj
b2RlQmxvY2stPnZtKCksIGNvZGVCbG9jaywgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk7CiAg
ICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBvZmZzZXQ7CiB9CiAKQEAgLTIyOCw2ICsyMjUsMTUgQEAg
QWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbwogICAgICAgICAKICAgICAg
ICAgaWYgKCFyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisKKyAgICAgICAgLy8gV2hlbiB3ZSBmaXJzdCB0cmFuc2l0aW9uIHRvIGJlY29taW5n
IGEgU3R1Yiwgd2UgbWlnaHQgc3RpbGwgYmUgcnVubmluZyB0aGUgaW5saW5lCisgICAgICAgIC8v
IGFjY2VzcyBjb2RlLiBUaGF0J3MgYmVjYXVzZSB3aGVuIHdlIGZpcnN0IHRyYW5zaXRpb24gdG8g
YmVjb21pbmcgYSBTdHViLCB3ZSBtYXkKKyAgICAgICAgLy8gYmUgYnVmZmVyZWQsIGFuZCB3ZSBo
YXZlIG5vdCB5ZXQgZ2VuZXJhdGVkIGFueSBjb2RlLiBPbmNlIHRoZSBTdHViIGZpbmFsbHkgZ2Vu
ZXJhdGVzCisgICAgICAgIC8vIGNvZGUsIHdlJ3JlIG5vIGxvbmdlciBydW5uaW5nIHRoZSBpbmxp
bmUgYWNjZXNzIGNvZGUsIHNvIHdlIGNhbiB0aGVuIGNsZWFyIG91dAorICAgICAgICAvLyBpbmxp
bmVBY2Nlc3NCYXNlU3RydWN0dXJlLiBUaGUgcmVhc29uIHdlIGRvbid0IGNsZWFyIGlubGluZUFj
Y2Vzc0Jhc2VTdHJ1Y3R1cmUgd2hpbGUKKyAgICAgICAgLy8gd2UncmUgYnVmZmVyZWQgaXMgYmVj
YXVzZSB3ZSByZWx5IG9uIGl0IHRvIHJlc2V0IGR1cmluZyBHQyBpZiBpbmxpbmVBY2Nlc3NCYXNl
U3RydWN0dXJlCisgICAgICAgIC8vIGlzIGNvbGxlY3RlZC4KKyAgICAgICAgaW5saW5lQWNjZXNz
QmFzZVN0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgd2UgZ2VuZXJh
dGVkIHNvbWUgY29kZSB0aGVuIHdlIGRvbid0IHdhbnQgdG8gYXR0ZW1wdCB0byByZXBhdGNoIGlu
IHRoZSBmdXR1cmUgdW50aWwgd2UKICAgICAgICAgLy8gZ2F0aGVyIGVub3VnaCBjYXNlcy4KQEAg
LTI0MSw2ICsyNDcsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZv
CiB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJC
YXNlJiBsb2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIGNsZWFyQnVmZmVyZWRT
dHJ1Y3R1cmVzKCk7CisgICAgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5jbGVhcigpOwogCiAg
ICAgaWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6VW5zZXQpCiAgICAgICAgIHJldHVybjsK
QEAgLTM0Niw0NyArMzUzLDMxIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vha1Jl
ZmVyZW4KICAgICAgICAgICAgIH0pOwogICAgIH0KIAotICAgIHN3aXRjaCAobV9jYWNoZVR5cGUp
IHsKLSAgICBjYXNlIENhY2hlVHlwZTo6R2V0QnlJZFNlbGY6Ci0gICAgY2FzZSBDYWNoZVR5cGU6
OlB1dEJ5SWRSZXBsYWNlOgotICAgIGNhc2UgQ2FjaGVUeXBlOjpJbkJ5SWRTZWxmOgotICAgICAg
ICBpZiAodm0uaGVhcC5pc01hcmtlZCh1LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0
KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENhY2hl
VHlwZTo6U3R1YjoKLSAgICAgICAgaWYgKHUuc3R1Yi0+dmlzaXRXZWFrKHZtKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKKyAgICBib29sIGlzVmFs
aWQgPSB0cnVlOworICAgIGlmIChpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlKQorICAgICAgICBp
c1ZhbGlkICY9IHZtLmhlYXAuaXNNYXJrZWQoaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5nZXQo
KSk7CisgICAgaWYgKG1fY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikKKyAgICAgICAgaXNW
YWxpZCAmPSB1LnN0dWItPnZpc2l0V2Vhayh2bSk7CisKKyAgICBpZiAoaXNWYWxpZCkKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIHJlc2V0KGxvY2tlciwgY29kZUJsb2NrKTsKICAgICBy
ZXNldEJ5R0MgPSB0cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotYm9vbCBT
dHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYgdmlzaXRvcikK
K3ZvaWQgU3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgc3dpdGNoIChtX2NhY2hlVHlwZSkgewotICAgIGNhc2UgQ2FjaGVUeXBl
OjpVbnNldDoKLSAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6Ci0gICAgY2FzZSBDYWNo
ZVR5cGU6OlN0cmluZ0xlbmd0aDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBDYWNo
ZVR5cGU6OkdldEJ5SWRTZWxmOgotICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToK
LSAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKLSAgICAgICAgcmV0dXJuIHUuYnlJZFNl
bGYuYmFzZU9iamVjdFN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Ci0gICAgY2FzZSBD
YWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgIHJldHVybiB1LnN0dWItPnByb3BhZ2F0ZVRyYW5zaXRp
b25zKHZpc2l0b3IpOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiB0cnVlOworICAgIGlmIChpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJl
KQorICAgICAgICBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9y
KTsKKworICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIpCisgICAgICAgIHUu
c3R1Yi0+cHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7CiB9CiAKLXRlbXBsYXRlIGJvb2wg
U3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKEFic3RyYWN0U2xvdFZpc2l0
b3ImKTsKLXRlbXBsYXRlIGJvb2wgU3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRp
b25zKFNsb3RWaXNpdG9yJik7Cit0ZW1wbGF0ZSB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9w
YWdhdGVUcmFuc2l0aW9ucyhBYnN0cmFjdFNsb3RWaXNpdG9yJik7Cit0ZW1wbGF0ZSB2b2lkIFN0
cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYpOwogCiBT
dHViSW5mb1N1bW1hcnkgU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoVk0mIHZtKSBjb25zdAog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMSArODQs
MTEgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZVN0dWJJbmZvKEFjY2Vzc1R5cGUsIENvZGVPcmln
aW4pOwogICAgIH5TdHJ1Y3R1cmVTdHViSW5mbygpOwogCi0gICAgdm9pZCBpbml0R2V0QnlJZFNl
bGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSog
YmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIp
OworICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2Um
LCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGluaXRBcnJheUxlbmd0
aChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJik7CiAgICAgdm9pZCBpbml0U3RyaW5nTGVu
Z3RoKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmKTsKLSAgICB2b2lkIGluaXRQdXRCeUlk
UmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0
dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRp
Zmllcik7Ci0gICAgdm9pZCBpbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJC
YXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0
eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgdm9pZCBpbml0UHV0QnlJZFJlcGxh
Y2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSog
aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50
aWZpZXIpOworICAgIHZvaWQgaW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
QmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSwg
UHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIpOwogCiAgICAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBhZGRBY2Nlc3NDYXNlKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYs
IEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgRUNNQU1vZGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFJlZlB0cjxBY2Nlc3NDYXNlPik7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2Um
LCBDb2RlQmxvY2sqKTsKICAgICAKICAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiBpdCBoYXMg
bWFya2VkIGV2ZXJ5dGhpbmcgdGhhdCBpdCB3aWxsIGV2ZXIgbWFyay4KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWaXNpdG9yPiBib29sIHByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2b2lkIHByb3BhZ2F0ZVRyYW5zaXRpb25zKFZp
c2l0b3ImKTsKICAgICAgICAgCiAgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkoVk0mKSBjb25z
dDsKICAgICAKQEAgLTMyNiwxMSArMzI2LDExIEBAIHB1YmxpYzoKICAgICBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW47CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+IGJhc2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgICAgIH0gYnlJZFNlbGY7CiAgICAgICAgIFBv
bHltb3JwaGljQWNjZXNzKiBzdHViOwogICAgIH0gdTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlOwogcHJpdmF0ZToKICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICAvLyBSZXByZXNlbnRzIHRob3NlIHN0cnVjdHVy
ZXMgdGhhdCBhbHJlYWR5IGhhdmUgYnVmZmVyZWQgQWNjZXNzQ2FzZXMgaW4gdGhlIFBvbHltb3Jw
aGljQWNjZXNzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433271</attachid>
            <date>2021-07-10 13:58:47 -0700</date>
            <delta_ts>2021-07-10 13:59:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>18495</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5Nzk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIxLTA3LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENvbnRpbnVlIHRvIGNvbnN1bHQgSW5saW5lQWNjZXNzJ3MgU3RydWN0dXJlIGV2ZW4gYWZ0ZXIg
dG8gc3dpdGNoaW5nIHRvIGEgc3R1YiBJQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI3Nzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGNyYXNoIGluOiBzdHJlc3MvY2xh
c3Mtc3ViY2xhc3NpbmctZnVuY3Rpb24uanMKKyAgICAgICAgCisgICAgICAgIFRoZSBidWcgaXMg
dGhpczoKKyAgICAgICAgMS4gV2UgaW5pdGlhbGl6ZSBhIFN0cnVjdHVyZVN0dWJJbmZvIHRvIGJl
IGFuIGlubGluZSBzZWxmIGFjY2VzcyBkb2luZyBhIGxvYWQgYmFzZWQgb24gc3RydWN0dXJlIFMu
CisgICAgICAgIDIuIFdlIHRyYW5zaXRpb24gdG8gYmVpbmcgYSBQb2x5bW9ycGhpY0FjY2VzcyBi
YXNlZCBTdHJ1Y3R1cmVTdHViSW5mby4gQnV0LCB3ZSBoYXZlbid0CisgICAgICAgIGdlbmVyYXRl
ZCBjb2RlIHlldC4gV2UncmUgaW4gdGhlIGJ1ZmZlcmVkIHN0YXRlLiBTbyB3ZSBhcmUgc3RpbGwg
cnVubmluZyB0aGUgaW5saW5lIGFjY2VzcworICAgICAgICBmcm9tICgxKS4gIEJ1dCB0aGUgU3Ry
dWN0dXJlU3R1YkluZm8gdGhpbmtzIGl0J3MgYSAiU3R1YiIuCisgICAgICAgIDMuIFMgaXMgY29s
bGVjdGVkCisgICAgICAgIDQuIFdlIGNvbnRpbnVlIHRvIHJ1biBjb2RlIGZyb20gKDEpLCBiZWNh
dXNlIHdoZW4gd2UgZmluYWxpemUgdGhlIElDIGR1cmluZyBHQywgaXQKKyAgICAgICAgZG9lc24n
dCB0aGluayBpdCdzIGFuIGlubGluZSBhY2Nlc3MuCisgICAgICAgIAorICAgICAgICBUaGUgZml4
IGlzIHRvIGFsd2F5cyB0cmFjayB0aGUgc3RydWN0dXJlIFMgdGhhdCB3ZSB1c2VkIHdoZW4gZ2Vu
ZXJhdGluZyB0aGUgaW5saW5lCisgICAgICAgIGFjY2VzcywgYW5kIHRvIG9ubHkgc3RvcCB0cmFj
a2luZyBpdCBvbmNlIHdlJ3ZlIGdlbmVyYXRlZCBjb2RlIGZvciB0aGUgU3R1Yi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpm
cm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdh
dGVUcmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAg
ICAgKiBieXRlY29kZS9JbkJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW5CeVN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAqIGJ5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNB
Y2Nlc3M6OnByb3BhZ2F0ZVRyYW5zaXRpb25zIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OmluaXRHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVN0dWJJbmZvOjppbml0UHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
dHViSW5mbzo6aW5pdEluQnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5m
bzo6YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNl
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdFdlYWtSZWZlcmVuY2Vz
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25z
KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorCiAyMDIxLTA3LTA4
ICBZaWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgQWly
IG9wY29kZSBhZGQvc3ViLWFuZC1zaGlmdCBmb3IgQVJNNjQgYW5kIHNlbGVjdCB0aGlzIGluc3Ry
dWN0aW9uIGluIEFpcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTUgKzE1NSwx
NSBAQCBSZWZQdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjCiAgICAgc3dpdGNo
IChzdHViSW5mby5jYWNoZVR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2Vs
ZjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8uaGFzQ29uc3RhbnRJZGVudGlmaWVy
KTsKLSAgICAgICAgcmV0dXJuIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIs
IExvYWQsIGlkZW50aWZpZXIsIHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby51
LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICByZXR1cm4gUHJv
eHlhYmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgTG9hZCwgaWRlbnRpZmllciwgc3R1
YkluZm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1
cmUuZ2V0KCkpOwogCiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzdHViSW5mby5oYXNDb25zdGFudElkZW50aWZpZXIpOwotICAgICAg
ICByZXR1cm4gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgUmVwbGFjZSwgaWRlbnRpZmll
ciwgc3R1YkluZm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9i
amVjdFN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBBY2Nlc3NDYXNlOjpjcmVhdGUo
dm0sIG93bmVyLCBSZXBsYWNlLCBpZGVudGlmaWVyLCBzdHViSW5mby51LmJ5SWRTZWxmLm9mZnNl
dCwgc3R1YkluZm8uaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5nZXQoKSk7CiAKICAgICBjYXNl
IENhY2hlVHlwZTo6SW5CeUlkU2VsZjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8u
aGFzQ29uc3RhbnRJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0
ZSh2bSwgb3duZXIsIEluSGl0LCBpZGVudGlmaWVyLCBzdHViSW5mby51LmJ5SWRTZWxmLm9mZnNl
dCwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIEluSGl0LCBpZGVudGlmaWVy
LCBzdHViSW5mby51LmJ5SWRTZWxmLm9mZnNldCwgc3R1YkluZm8uaW5saW5lQWNjZXNzQmFzZVN0
cnVjdHVyZS5nZXQoKSk7CiAKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvLmhhc0NvbnN0YW50SWRlbnRpZmllcik7CkBAIC03
NTgsMTYgKzc1OCwxNCBAQCBib29sIEFjY2Vzc0Nhc2U6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci1ib29sIEFjY2Vzc0Nhc2U6OnByb3Bh
Z2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0Cit2b2lkIEFjY2Vzc0Nhc2U6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiB7Ci0gICAgYm9v
bCByZXN1bHQgPSB0cnVlOwotCiAgICAgaWYgKG1fc3RydWN0dXJlKQotICAgICAgICByZXN1bHQg
Jj0gbV9zdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgICAgICBtX3N0cnVjdHVy
ZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICBpZiAobV9wb2x5UHJvdG9BY2Nlc3NDaGFp
bikgewogICAgICAgICBmb3IgKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEIDogbV9wb2x5UHJvdG9B
Y2Nlc3NDaGFpbi0+Y2hhaW4oKSkKLSAgICAgICAgICAgIHJlc3VsdCAmPSB2aXNpdG9yLnZtKCku
Z2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgICAg
ICAgICB2aXNpdG9yLnZtKCkuZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKS0+bWFya0lmQ2hlYXAo
dmlzaXRvcik7CiAgICAgfQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKQEAgLTc3NSwxOCArNzcz
LDE0IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoVmkKICAgICBjYXNl
IERlbGV0ZToKICAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQobV9zdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc3RydWN0
dXJlLmdldCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMoQWJzdHJhY3RTbG90VmlzaXRvciYpIGNvbnN0OwotdGVtcGxhdGUgYm9vbCBB
Y2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYpIGNvbnN0OwordGVt
cGxhdGUgdm9pZCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhBYnN0cmFjdFNsb3RW
aXNpdG9yJikgY29uc3Q7Cit0ZW1wbGF0ZSB2b2lkIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5z
aXRpb25zKFNsb3RWaXNpdG9yJikgY29uc3Q7CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAko
cmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHByaXZhdGU6CiAKICAg
ICBERUNMQVJFX1ZJU0lUX0FHR1JFR0FURV9XSVRIX01PRElGSUVSKGNvbnN0KTsKICAgICBib29s
IHZpc2l0V2VhayhWTSYpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJv
b2wgcHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFZpc2l0b3I+IHZvaWQgcHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNjZXNz
Q2FzZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCShyZXZpc2lvbiAy
Nzk3MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSQogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1h
dGlvbik7CiAgICAgICAgIAogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjogewotICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1Yklu
Zm8tPmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPnRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVyZVByb3BlcnR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gR2V0QnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsK
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3R1YkluZm8tPmlkZW50
aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0
YXR1cy5jcHAJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbkJ5U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIElu
QnlTdGF0dXMgSW5CeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmYKICAgICAgICAgcmV0dXJuIElu
QnlTdGF0dXMoTm9JbmZvcm1hdGlvbik7CiAKICAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2Vs
ZjogewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmJ5SWRTZWxm
LmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gc3R1YkluZm8tPmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgIGlm
IChzdHJ1Y3R1cmUtPnRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVyZVByb3BlcnR5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3R1YkluZm8tPmlkZW50aWZpZXIoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAkocmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE2ICszNzEs
MTQgQEAgYm9vbCBQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRXZWFrKFZNJiB2bQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotYm9vbCBQb2x5bW9ycGhpY0FjY2Vzczo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMoVmlzaXRvciYgdmlzaXRvcikgY29uc3QKK3ZvaWQgUG9seW1vcnBoaWNBY2Nl
c3M6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiB7Ci0gICAg
Ym9vbCByZXN1bHQgPSB0cnVlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7
ICsraSkKLSAgICAgICAgcmVzdWx0ICY9IGF0KGkpLnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0
b3IpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGF0KGkpLnByb3BhZ2F0ZVRyYW5zaXRp
b25zKHZpc2l0b3IpOwogfQogCi10ZW1wbGF0ZSBib29sIFBvbHltb3JwaGljQWNjZXNzOjpwcm9w
YWdhdGVUcmFuc2l0aW9ucyhBYnN0cmFjdFNsb3RWaXNpdG9yJikgY29uc3Q7Ci10ZW1wbGF0ZSBi
b29sIFBvbHltb3JwaGljQWNjZXNzOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYp
IGNvbnN0OwordGVtcGxhdGUgdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6cHJvcGFnYXRlVHJhbnNp
dGlvbnMoQWJzdHJhY3RTbG90VmlzaXRvciYpIGNvbnN0OwordGVtcGxhdGUgdm9pZCBQb2x5bW9y
cGhpY0FjY2Vzczo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImKSBjb25zdDsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0
QWdncmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgJKHJldmlzaW9uIDI3OTcz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIAogICAgIC8v
IFRoaXMgcmV0dXJucyB0cnVlIGlmIGl0IGhhcyBtYXJrZWQgZXZlcnl0aGluZyBpdCB3aWxsIGV2
ZXIgbWFya2VkLiBUaGlzIGNhbiBiZSB1c2VkIGFzIGFuCiAgICAgLy8gb3B0aW1pemF0aW9uIHRv
IHRoZW4gYXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBhZ2FpbiBkdXJpbmcgdGhlIGZpeHBvaW50
LgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wgcHJvcGFnYXRlVHJhbnNpdGlv
bnMoVmlzaXRvciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQg
cHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OwogCiAgICAgdm9pZCBhYm91dFRv
RGllKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDEwICsx
NDcsMTAgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAg
ICAKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6IHsKICAgICAgICAgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0ID0KLSAgICAgICAgICAgIHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJhc2VP
YmplY3RTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOworICAgICAgICAgICAgc3R1Yklu
Zm8tPmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAg
ICAgICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0
QnlJZFZhcmlhbnQ6OnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8tPnUuYnlJZFNl
bGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBz
dHViSW5mby0+aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5nZXQoKSwgb2Zmc2V0KTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1h
cnkpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDE1ICs1OSwxNCBAQCBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJ
bmZvKCkKIHsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEdldEJ5SWRTZWxmKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpp
bml0R2V0QnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
ICAgICBBU1NFUlQoaGFzQ29uc3RhbnRJZGVudGlmaWVyKTsKICAgICBzZXRDYWNoZVR5cGUobG9j
a2VyLCBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmKTsKICAgICBtX2lkZW50aWZpZXIgPSBpZGVudGlm
aWVyOwogICAgIGNvZGVCbG9jay0+dm0oKS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwog
ICAgIAotICAgIHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoCi0gICAgICAgIGNv
ZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICB0aGlz
LT5pbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLnNldChjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9j
aywgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk7CiAgICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBv
ZmZzZXQ7CiB9CiAKQEAgLTgxLDI1ICs4MCwyMyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpp
bml0U3RyaW5nTGVuZ3RoCiAgICAgc2V0Q2FjaGVUeXBlKGxvY2tlciwgQ2FjaGVUeXBlOjpTdHJp
bmdMZW5ndGgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0UHV0QnlJZFJlcGxh
Y2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU3RydWN0dXJlU3R1Yklu
Zm86OmluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2Nr
ZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1
Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewogICAgIHNldENhY2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxh
Y2UpOwogICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgY29kZUJsb2NrLT52bSgp
LmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAKLSAgICB1LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuc2V0KAotICAgICAgICBjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9jaywgYmFz
ZU9iamVjdFN0cnVjdHVyZSk7CisgICAgdGhpcy0+aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5z
ZXQoY29kZUJsb2NrLT52bSgpLCBjb2RlQmxvY2ssIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUp
OwogICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OwogfQogCi12b2lkIFN0cnVjdHVyZVN0
dWJJbmZvOjppbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2Nr
ZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUs
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKQor
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBpbmxp
bmVBY2Nlc3NCYXNlU3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIENhY2hlYWJsZUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBzZXRDYWNoZVR5cGUobG9ja2VyLCBDYWNoZVR5
cGU6OkluQnlJZFNlbGYpOwogICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgY29k
ZUJsb2NrLT52bSgpLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAKLSAgICB1LmJ5SWRT
ZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KAotICAgICAgICBjb2RlQmxvY2stPnZtKCksIGNv
ZGVCbG9jaywgYmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgdGhpcy0+aW5saW5lQWNjZXNzQmFz
ZVN0cnVjdHVyZS5zZXQoY29kZUJsb2NrLT52bSgpLCBjb2RlQmxvY2ssIGlubGluZUFjY2Vzc0Jh
c2VTdHJ1Y3R1cmUpOwogICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OwogfQogCkBAIC0y
MjgsNiArMjI1LDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm8K
ICAgICAgICAgCiAgICAgICAgIGlmICghcmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIC8vIFdoZW4gd2UgZmlyc3QgdHJhbnNp
dGlvbiB0byBiZWNvbWluZyBhIFN0dWIsIHdlIG1pZ2h0IHN0aWxsIGJlIHJ1bm5pbmcgdGhlIGlu
bGluZQorICAgICAgICAvLyBhY2Nlc3MgY29kZS4gVGhhdCdzIGJlY2F1c2Ugd2hlbiB3ZSBmaXJz
dCB0cmFuc2l0aW9uIHRvIGJlY29taW5nIGEgU3R1Yiwgd2UgbWF5CisgICAgICAgIC8vIGJlIGJ1
ZmZlcmVkLCBhbmQgd2UgaGF2ZSBub3QgeWV0IGdlbmVyYXRlZCBhbnkgY29kZS4gT25jZSB0aGUg
U3R1YiBmaW5hbGx5IGdlbmVyYXRlcworICAgICAgICAvLyBjb2RlLCB3ZSdyZSBubyBsb25nZXIg
cnVubmluZyB0aGUgaW5saW5lIGFjY2VzcyBjb2RlLCBzbyB3ZSBjYW4gdGhlbiBjbGVhciBvdXQK
KyAgICAgICAgLy8gaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS4gVGhlIHJlYXNvbiB3ZSBkb24n
dCBjbGVhciBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlIHdoaWxlCisgICAgICAgIC8vIHdlJ3Jl
IGJ1ZmZlcmVkIGlzIGJlY2F1c2Ugd2UgcmVseSBvbiBpdCB0byByZXNldCBkdXJpbmcgR0MgaWYg
aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZQorICAgICAgICAvLyBpcyBjb2xsZWN0ZWQuCisgICAg
ICAgIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgCiAgICAgICAg
IC8vIElmIHdlIGdlbmVyYXRlZCBzb21lIGNvZGUgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGF0dGVt
cHQgdG8gcmVwYXRjaCBpbiB0aGUgZnV0dXJlIHVudGlsIHdlCiAgICAgICAgIC8vIGdhdGhlciBl
bm91Z2ggY2FzZXMuCkBAIC0yNDEsNiArMjQ3LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBT
dHJ1Y3R1cmVTdHViSW5mbwogdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAg
ICBjbGVhckJ1ZmZlcmVkU3RydWN0dXJlcygpOworICAgIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1
cmUuY2xlYXIoKTsKIAogICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KQog
ICAgICAgICByZXR1cm47CkBAIC0zNDYsNDcgKzM1MywzMSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJ
bmZvOjp2aXNpdFdlYWtSZWZlcmVuCiAgICAgICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKG1fY2FjaGVUeXBlKSB7Ci0gICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgotICAg
IGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKLSAgICBjYXNlIENhY2hlVHlwZTo6SW5C
eUlkU2VsZjoKLSAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQodS5ieUlkU2VsZi5iYXNlT2Jq
ZWN0U3RydWN0dXJlLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgIGlmICh1LnN0dWItPnZpc2l0V2Vh
ayh2bSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
CisgICAgYm9vbCBpc1ZhbGlkID0gdHJ1ZTsKKyAgICBpZiAoaW5saW5lQWNjZXNzQmFzZVN0cnVj
dHVyZSkKKyAgICAgICAgaXNWYWxpZCAmPSB2bS5oZWFwLmlzTWFya2VkKGlubGluZUFjY2Vzc0Jh
c2VTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0
dWIpCisgICAgICAgIGlzVmFsaWQgJj0gdS5zdHViLT52aXNpdFdlYWsodm0pOworCisgICAgaWYg
KGlzVmFsaWQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICByZXNldChsb2NrZXIsIGNv
ZGVCbG9jayk7CiAgICAgcmVzZXRCeUdDID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VmlzaXRvcj4KLWJvb2wgU3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZp
c2l0b3ImIHZpc2l0b3IpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0
aW9ucyhWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHN3aXRjaCAobV9jYWNoZVR5cGUpIHsKLSAg
ICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Ci0gICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3Ro
OgotICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKLSAgICBjYXNlIENhY2hlVHlwZTo6
UHV0QnlJZFJlcGxhY2U6Ci0gICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6Ci0gICAgICAg
IHJldHVybiB1LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0
b3IpOwotICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOgotICAgICAgICByZXR1cm4gdS5zdHViLT5w
cm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaW5saW5lQWNj
ZXNzQmFzZVN0cnVjdHVyZSkKKyAgICAgICAgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS0+bWFy
a0lmQ2hlYXAodmlzaXRvcik7CisKKyAgICBpZiAobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpT
dHViKQorICAgICAgICB1LnN0dWItPnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwogfQog
Ci10ZW1wbGF0ZSBib29sIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhB
YnN0cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSBib29sIFN0cnVjdHVyZVN0dWJJbmZvOjpw
cm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBTdHJ1Y3R1
cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoQWJzdHJhY3RTbG90VmlzaXRvciYpOwor
dGVtcGxhdGUgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xv
dFZpc2l0b3ImKTsKIAogU3R1YkluZm9TdW1tYXJ5IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5
KFZNJiB2bSkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAyNzk3MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtODQsMTEgKzg0LDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nl
c3NUeXBlLCBDb2RlT3JpZ2luKTsKICAgICB+U3RydWN0dXJlU3R1YkluZm8oKTsKIAotICAgIHZv
aWQgaW5pdEdldEJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNo
ZWFibGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGluaXRHZXRCeUlkU2VsZihjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBpbmxpbmVBY2Nlc3NCYXNl
U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBpbml0QXJyYXlMZW5ndGgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYpOwogICAgIHZv
aWQgaW5pdFN0cmluZ0xlbmd0aChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJik7Ci0gICAg
dm9pZCBpbml0UHV0QnlJZFJlcGxhY2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENv
ZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQs
IENhY2hlYWJsZUlkZW50aWZpZXIpOwotICAgIHZvaWQgaW5pdEluQnlJZFNlbGYoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0
cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIHZvaWQg
aW5pdFB1dEJ5SWRSZXBsYWNlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0
LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vz
c0Jhc2VTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAog
ICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25j
dXJyZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBD
YWNoZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2FzZT4pOwogCkBAIC0xMDQsNyArMTA0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKik7CiAgICAgCiAgICAgLy8gVGhpcyByZXR1cm5z
IHRydWUgaWYgaXQgaGFzIG1hcmtlZCBldmVyeXRoaW5nIHRoYXQgaXQgd2lsbCBldmVyIG1hcmsu
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9u
cyhWaXNpdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBwcm9wYWdh
dGVUcmFuc2l0aW9ucyhWaXNpdG9yJik7CiAgICAgICAgIAogICAgIFN0dWJJbmZvU3VtbWFyeSBz
dW1tYXJ5KFZNJikgY29uc3Q7CiAgICAgCkBAIC0zMjYsMTEgKzMyNiwxMSBAQCBwdWJsaWM6CiAg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0
dXJlOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgICAgICB9IGJ5SWRT
ZWxmOwogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1YjsKICAgICB9IHU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZTsKIHByaXZhdGU6
CiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgLy8gUmVwcmVzZW50
cyB0aG9zZSBzdHJ1Y3R1cmVzIHRoYXQgYWxyZWFkeSBoYXZlIGJ1ZmZlcmVkIEFjY2Vzc0Nhc2Vz
IGluIHRoZSBQb2x5bW9ycGhpY0FjY2Vzcy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433273</attachid>
            <date>2021-07-10 13:59:35 -0700</date>
            <delta_ts>2021-07-10 18:27:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>18492</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5Nzk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIxLTA3LTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENvbnRpbnVlIHRvIGNvbnN1bHQgSW5saW5lQWNjZXNzJ3MgU3RydWN0dXJlIGV2ZW4gYWZ0ZXIg
c3dpdGNoaW5nIHRvIGEgc3R1YiBJQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3Nzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGNyYXNoIGluOiBzdHJlc3MvY2xhc3Mt
c3ViY2xhc3NpbmctZnVuY3Rpb24uanMKKyAgICAgICAgCisgICAgICAgIFRoZSBidWcgaXMgdGhp
czoKKyAgICAgICAgMS4gV2UgaW5pdGlhbGl6ZSBhIFN0cnVjdHVyZVN0dWJJbmZvIHRvIGJlIGFu
IGlubGluZSBzZWxmIGFjY2VzcyBkb2luZyBhIGxvYWQgYmFzZWQgb24gc3RydWN0dXJlIFMuCisg
ICAgICAgIDIuIFdlIHRyYW5zaXRpb24gdG8gYmVpbmcgYSBQb2x5bW9ycGhpY0FjY2VzcyBiYXNl
ZCBTdHJ1Y3R1cmVTdHViSW5mby4gQnV0LCB3ZSBoYXZlbid0CisgICAgICAgIGdlbmVyYXRlZCBj
b2RlIHlldC4gV2UncmUgaW4gdGhlIGJ1ZmZlcmVkIHN0YXRlLiBTbyB3ZSBhcmUgc3RpbGwgcnVu
bmluZyB0aGUgaW5saW5lIGFjY2VzcworICAgICAgICBmcm9tICgxKS4gIEJ1dCB0aGUgU3RydWN0
dXJlU3R1YkluZm8gdGhpbmtzIGl0J3MgYSAiU3R1YiIuCisgICAgICAgIDMuIFMgaXMgY29sbGVj
dGVkCisgICAgICAgIDQuIFdlIGNvbnRpbnVlIHRvIHJ1biBjb2RlIGZyb20gKDEpLCBiZWNhdXNl
IHdoZW4gd2UgZmluYWxpemUgdGhlIElDIGR1cmluZyBHQywgaXQKKyAgICAgICAgZG9lc24ndCB0
aGluayBpdCdzIGFuIGlubGluZSBhY2Nlc3MuCisgICAgICAgIAorICAgICAgICBUaGUgZml4IGlz
IHRvIGFsd2F5cyB0cmFjayB0aGUgc3RydWN0dXJlIFMgdGhhdCB3ZSB1c2VkIHdoZW4gZ2VuZXJh
dGluZyB0aGUgaW5saW5lCisgICAgICAgIGFjY2VzcywgYW5kIHRvIG9ubHkgc3RvcCB0cmFja2lu
ZyBpdCBvbmNlIHdlJ3ZlIGdlbmVyYXRlZCBjb2RlIGZvciB0aGUgU3R1Yi4KKworICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpmcm9t
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpwcm9wYWdhdGVU
cmFuc2l0aW9ucyBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAg
KiBieXRlY29kZS9JbkJ5U3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW5CeVN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nl
c3M6OnByb3BhZ2F0ZVRyYW5zaXRpb25zIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU3R1YkluZm86OmluaXRHZXRCeUlkU2VsZik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0
dWJJbmZvOjppbml0UHV0QnlJZFJlcGxhY2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6aW5pdEluQnlJZFNlbGYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
YWRkQWNjZXNzQ2FzZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp2aXNpdFdlYWtSZWZlcmVuY2VzKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorCiAyMDIxLTA3LTA4ICBZ
aWppYSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgQWlyIG9w
Y29kZSBhZGQvc3ViLWFuZC1zaGlmdCBmb3IgQVJNNjQgYW5kIHNlbGVjdCB0aGlzIGluc3RydWN0
aW9uIGluIEFpcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAkocmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTUgKzE1NSwxNSBA
QCBSZWZQdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjCiAgICAgc3dpdGNoIChz
dHViSW5mby5jYWNoZVR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8uaGFzQ29uc3RhbnRJZGVudGlmaWVyKTsK
LSAgICAgICAgcmV0dXJuIFByb3h5YWJsZUFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIExv
YWQsIGlkZW50aWZpZXIsIHN0dWJJbmZvLnUuYnlJZFNlbGYub2Zmc2V0LCBzdHViSW5mby51LmJ5
SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICByZXR1cm4gUHJveHlh
YmxlQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgTG9hZCwgaWRlbnRpZmllciwgc3R1Yklu
Zm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUu
Z2V0KCkpOwogCiAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgogICAgICAgICBS
RUxFQVNFX0FTU0VSVChzdHViSW5mby5oYXNDb25zdGFudElkZW50aWZpZXIpOwotICAgICAgICBy
ZXR1cm4gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBvd25lciwgUmVwbGFjZSwgaWRlbnRpZmllciwg
c3R1YkluZm8udS5ieUlkU2VsZi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVj
dFN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBBY2Nlc3NDYXNlOjpjcmVhdGUodm0s
IG93bmVyLCBSZXBsYWNlLCBpZGVudGlmaWVyLCBzdHViSW5mby51LmJ5SWRTZWxmLm9mZnNldCwg
c3R1YkluZm8uaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5nZXQoKSk7CiAKICAgICBjYXNlIENh
Y2hlVHlwZTo6SW5CeUlkU2VsZjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8uaGFz
Q29uc3RhbnRJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2
bSwgb3duZXIsIEluSGl0LCBpZGVudGlmaWVyLCBzdHViSW5mby51LmJ5SWRTZWxmLm9mZnNldCwg
c3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgb3duZXIsIEluSGl0LCBpZGVudGlmaWVyLCBz
dHViSW5mby51LmJ5SWRTZWxmLm9mZnNldCwgc3R1YkluZm8uaW5saW5lQWNjZXNzQmFzZVN0cnVj
dHVyZS5nZXQoKSk7CiAKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvLmhhc0NvbnN0YW50SWRlbnRpZmllcik7CkBAIC03NTgs
MTYgKzc1OCwxNCBAQCBib29sIEFjY2Vzc0Nhc2U6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci1ib29sIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0Cit2b2lkIEFjY2Vzc0Nhc2U6OnBy
b3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiB7Ci0gICAgYm9vbCBy
ZXN1bHQgPSB0cnVlOwotCiAgICAgaWYgKG1fc3RydWN0dXJlKQotICAgICAgICByZXN1bHQgJj0g
bV9zdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgICAgICBtX3N0cnVjdHVyZS0+
bWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICBpZiAobV9wb2x5UHJvdG9BY2Nlc3NDaGFpbikg
ewogICAgICAgICBmb3IgKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEIDogbV9wb2x5UHJvdG9BY2Nl
c3NDaGFpbi0+Y2hhaW4oKSkKLSAgICAgICAgICAgIHJlc3VsdCAmPSB2aXNpdG9yLnZtKCkuZ2V0
U3RydWN0dXJlKHN0cnVjdHVyZUlEKS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgICAgICAg
ICB2aXNpdG9yLnZtKCkuZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKS0+bWFya0lmQ2hlYXAodmlz
aXRvcik7CiAgICAgfQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKQEAgLTc3NSwxOCArNzczLDE0
IEBAIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoVmkKICAgICBjYXNlIERl
bGV0ZToKICAgICAgICAgaWYgKHZpc2l0b3IuaXNNYXJrZWQobV9zdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKSkpCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG1fc3RydWN0dXJl
LmdldCgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIGJvb2wgQWNjZXNzQ2FzZTo6cHJvcGFnYXRlVHJh
bnNpdGlvbnMoQWJzdHJhY3RTbG90VmlzaXRvciYpIGNvbnN0OwotdGVtcGxhdGUgYm9vbCBBY2Nl
c3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYpIGNvbnN0OwordGVtcGxh
dGUgdm9pZCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhBYnN0cmFjdFNsb3RWaXNp
dG9yJikgY29uc3Q7Cit0ZW1wbGF0ZSB2b2lkIEFjY2Vzc0Nhc2U6OnByb3BhZ2F0ZVRyYW5zaXRp
b25zKFNsb3RWaXNpdG9yJikgY29uc3Q7CiAKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAkocmV2
aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHByaXZhdGU6CiAKICAgICBE
RUNMQVJFX1ZJU0lUX0FHR1JFR0FURV9XSVRIX01PRElGSUVSKGNvbnN0KTsKICAgICBib29sIHZp
c2l0V2VhayhWTSYpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wg
cHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+IHZvaWQgcHJvcGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0Owog
CiAgICAgLy8gRklYTUU6IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBvZiBob3cgQWNjZXNzQ2Fz
ZSBwdXRzIHBvc3QtZ2VuZXJhdGlvbiB0aGluZ3MgaW50byBpdHNlbGYuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQ1NgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCShyZXZpc2lvbiAyNzk3
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDcgQEAgR2V0QnlTdGF0dXMgR2V0QnlTdGF0dXM6
OmNvbXB1dGVGb3JTdHViSQogICAgICAgICByZXR1cm4gR2V0QnlTdGF0dXMoTm9JbmZvcm1hdGlv
bik7CiAgICAgICAgIAogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjogewotICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8t
PmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUt
PnRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVyZVByb3BlcnR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gR2V0QnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKICAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3R1YkluZm8tPmlkZW50aWZp
ZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1
cy5jcHAJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbkJ5U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIEluQnlT
dGF0dXMgSW5CeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmYKICAgICAgICAgcmV0dXJuIEluQnlT
dGF0dXMoTm9JbmZvcm1hdGlvbik7CiAKICAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjog
ewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJh
c2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
c3R1YkluZm8tPmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPnRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVyZVByb3BlcnR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyID0gc3R1YkluZm8tPmlkZW50aWZpZXIoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcAkocmV2aXNpb24gMjc5NzMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE2ICszNzEsMTQg
QEAgYm9vbCBQb2x5bW9ycGhpY0FjY2Vzczo6dmlzaXRXZWFrKFZNJiB2bQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPgotYm9vbCBQb2x5bW9ycGhpY0FjY2Vzczo6cHJvcGFnYXRlVHJh
bnNpdGlvbnMoVmlzaXRvciYgdmlzaXRvcikgY29uc3QKK3ZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6
OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiB7Ci0gICAgYm9v
bCByZXN1bHQgPSB0cnVlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsr
aSkKLSAgICAgICAgcmVzdWx0ICY9IGF0KGkpLnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3Ip
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGF0KGkpLnByb3BhZ2F0ZVRyYW5zaXRpb25z
KHZpc2l0b3IpOwogfQogCi10ZW1wbGF0ZSBib29sIFBvbHltb3JwaGljQWNjZXNzOjpwcm9wYWdh
dGVUcmFuc2l0aW9ucyhBYnN0cmFjdFNsb3RWaXNpdG9yJikgY29uc3Q7Ci10ZW1wbGF0ZSBib29s
IFBvbHltb3JwaGljQWNjZXNzOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYpIGNv
bnN0OwordGVtcGxhdGUgdm9pZCBQb2x5bW9ycGhpY0FjY2Vzczo6cHJvcGFnYXRlVHJhbnNpdGlv
bnMoQWJzdHJhY3RTbG90VmlzaXRvciYpIGNvbnN0OwordGVtcGxhdGUgdm9pZCBQb2x5bW9ycGhp
Y0FjY2Vzczo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZpc2l0b3ImKSBjb25zdDsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0QWdn
cmVnYXRlSW1wbChWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgJKHJldmlzaW9uIDI3OTczMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIAogICAgIC8vIFRo
aXMgcmV0dXJucyB0cnVlIGlmIGl0IGhhcyBtYXJrZWQgZXZlcnl0aGluZyBpdCB3aWxsIGV2ZXIg
bWFya2VkLiBUaGlzIGNhbiBiZSB1c2VkIGFzIGFuCiAgICAgLy8gb3B0aW1pemF0aW9uIHRvIHRo
ZW4gYXZvaWQgY2FsbGluZyB0aGlzIG1ldGhvZCBhZ2FpbiBkdXJpbmcgdGhlIGZpeHBvaW50Lgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IGJvb2wgcHJvcGFnYXRlVHJhbnNpdGlvbnMo
VmlzaXRvciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgcHJv
cGFnYXRlVHJhbnNpdGlvbnMoVmlzaXRvciYpIGNvbnN0OwogCiAgICAgdm9pZCBhYm91dFRvRGll
KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHAJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDEwICsxNDcs
MTAgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICAK
ICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6IHsKICAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0KLSAgICAgICAgICAgIHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOworICAgICAgICAgICAgc3R1YkluZm8t
PmlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAgICAg
ICBpZiAoaXNWYWxpZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFZhcmlhbnQ6OnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8tPnUuYnlJZFNlbGYu
YmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBzdHVi
SW5mby0+aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5nZXQoKSwgb2Zmc2V0KTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkp
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJKHJldmlzaW9uIDI3OTczMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDE1ICs1OSwxNCBAQCBTdHJ1Y3R1cmVTdHViSW5mbzo6flN0cnVjdHVyZVN0dWJJbmZv
KCkKIHsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEdldEJ5SWRTZWxmKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0
cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0
R2V0QnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoaGFzQ29uc3RhbnRJZGVudGlmaWVyKTsKICAgICBzZXRDYWNoZVR5cGUobG9ja2Vy
LCBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmKTsKICAgICBtX2lkZW50aWZpZXIgPSBpZGVudGlmaWVy
OwogICAgIGNvZGVCbG9jay0+dm0oKS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOwogICAg
IAotICAgIHUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5zZXQoCi0gICAgICAgIGNvZGVC
bG9jay0+dm0oKSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICB0aGlzLT5p
bmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlLnNldChjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9jaywg
aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZSk7CiAgICAgdS5ieUlkU2VsZi5vZmZzZXQgPSBvZmZz
ZXQ7CiB9CiAKQEAgLTgxLDI1ICs4MCwyMyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0
U3RyaW5nTGVuZ3RoCiAgICAgc2V0Q2FjaGVUeXBlKGxvY2tlciwgQ2FjaGVUeXBlOjpTdHJpbmdM
ZW5ndGgpOwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0UHV0QnlJZFJlcGxhY2Uo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86
OmluaXRQdXRCeUlkUmVwbGFjZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIs
IENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
KQogewogICAgIHNldENhY2hlVHlwZShsb2NrZXIsIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2Up
OwogICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgY29kZUJsb2NrLT52bSgpLmhl
YXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAKLSAgICB1LmJ5SWRTZWxmLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuc2V0KAotICAgICAgICBjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9jaywgYmFzZU9i
amVjdFN0cnVjdHVyZSk7CisgICAgdGhpcy0+aW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS5zZXQo
Y29kZUJsb2NrLT52bSgpLCBjb2RlQmxvY2ssIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUpOwog
ICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OwogfQogCi12b2lkIFN0cnVjdHVyZVN0dWJJ
bmZvOjppbml0SW5CeUlkU2VsZihjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIs
IENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9p
ZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBpbmxpbmVB
Y2Nlc3NCYXNlU3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBzZXRDYWNoZVR5cGUobG9ja2VyLCBDYWNoZVR5cGU6
OkluQnlJZFNlbGYpOwogICAgIG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgY29kZUJs
b2NrLT52bSgpLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CiAKLSAgICB1LmJ5SWRTZWxm
LmJhc2VPYmplY3RTdHJ1Y3R1cmUuc2V0KAotICAgICAgICBjb2RlQmxvY2stPnZtKCksIGNvZGVC
bG9jaywgYmFzZU9iamVjdFN0cnVjdHVyZSk7CisgICAgdGhpcy0+aW5saW5lQWNjZXNzQmFzZVN0
cnVjdHVyZS5zZXQoY29kZUJsb2NrLT52bSgpLCBjb2RlQmxvY2ssIGlubGluZUFjY2Vzc0Jhc2VT
dHJ1Y3R1cmUpOwogICAgIHUuYnlJZFNlbGYub2Zmc2V0ID0gb2Zmc2V0OwogfQogCkBAIC0yMjgs
NiArMjI1LDE1IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm8KICAg
ICAgICAgCiAgICAgICAgIGlmICghcmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworCisgICAgICAgIC8vIFdoZW4gd2UgZmlyc3QgdHJhbnNpdGlv
biB0byBiZWNvbWluZyBhIFN0dWIsIHdlIG1pZ2h0IHN0aWxsIGJlIHJ1bm5pbmcgdGhlIGlubGlu
ZQorICAgICAgICAvLyBhY2Nlc3MgY29kZS4gVGhhdCdzIGJlY2F1c2Ugd2hlbiB3ZSBmaXJzdCB0
cmFuc2l0aW9uIHRvIGJlY29taW5nIGEgU3R1Yiwgd2UgbWF5CisgICAgICAgIC8vIGJlIGJ1ZmZl
cmVkLCBhbmQgd2UgaGF2ZSBub3QgeWV0IGdlbmVyYXRlZCBhbnkgY29kZS4gT25jZSB0aGUgU3R1
YiBmaW5hbGx5IGdlbmVyYXRlcworICAgICAgICAvLyBjb2RlLCB3ZSdyZSBubyBsb25nZXIgcnVu
bmluZyB0aGUgaW5saW5lIGFjY2VzcyBjb2RlLCBzbyB3ZSBjYW4gdGhlbiBjbGVhciBvdXQKKyAg
ICAgICAgLy8gaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS4gVGhlIHJlYXNvbiB3ZSBkb24ndCBj
bGVhciBpbmxpbmVBY2Nlc3NCYXNlU3RydWN0dXJlIHdoaWxlCisgICAgICAgIC8vIHdlJ3JlIGJ1
ZmZlcmVkIGlzIGJlY2F1c2Ugd2UgcmVseSBvbiBpdCB0byByZXNldCBkdXJpbmcgR0MgaWYgaW5s
aW5lQWNjZXNzQmFzZVN0cnVjdHVyZQorICAgICAgICAvLyBpcyBjb2xsZWN0ZWQuCisgICAgICAg
IGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgCiAgICAgICAgIC8v
IElmIHdlIGdlbmVyYXRlZCBzb21lIGNvZGUgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGF0dGVtcHQg
dG8gcmVwYXRjaCBpbiB0aGUgZnV0dXJlIHVudGlsIHdlCiAgICAgICAgIC8vIGdhdGhlciBlbm91
Z2ggY2FzZXMuCkBAIC0yNDEsNiArMjQ3LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1
Y3R1cmVTdHViSW5mbwogdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBj
bGVhckJ1ZmZlcmVkU3RydWN0dXJlcygpOworICAgIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUu
Y2xlYXIoKTsKIAogICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KQogICAg
ICAgICByZXR1cm47CkBAIC0zNDYsNDcgKzM1MywzMSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZv
Ojp2aXNpdFdlYWtSZWZlcmVuCiAgICAgICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzd2l0Y2gg
KG1fY2FjaGVUeXBlKSB7Ci0gICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgotICAgIGNh
c2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKLSAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlk
U2VsZjoKLSAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQodS5ieUlkU2VsZi5iYXNlT2JqZWN0
U3RydWN0dXJlLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6Ci0gICAgICAgIGlmICh1LnN0dWItPnZpc2l0V2Vhayh2
bSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Cisg
ICAgYm9vbCBpc1ZhbGlkID0gdHJ1ZTsKKyAgICBpZiAoaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVy
ZSkKKyAgICAgICAgaXNWYWxpZCAmPSB2bS5oZWFwLmlzTWFya2VkKGlubGluZUFjY2Vzc0Jhc2VT
dHJ1Y3R1cmUuZ2V0KCkpOworICAgIGlmIChtX2NhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlN0dWIp
CisgICAgICAgIGlzVmFsaWQgJj0gdS5zdHViLT52aXNpdFdlYWsodm0pOworCisgICAgaWYgKGlz
VmFsaWQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICByZXNldChsb2NrZXIsIGNvZGVC
bG9jayk7CiAgICAgcmVzZXRCeUdDID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlz
aXRvcj4KLWJvb2wgU3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXRpb25zKFZpc2l0
b3ImIHZpc2l0b3IpCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9u
cyhWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHN3aXRjaCAobV9jYWNoZVR5cGUpIHsKLSAgICBj
YXNlIENhY2hlVHlwZTo6VW5zZXQ6Ci0gICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3RoOgot
ICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKLSAgICBjYXNlIENhY2hlVHlwZTo6UHV0
QnlJZFJlcGxhY2U6Ci0gICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6Ci0gICAgICAgIHJl
dHVybiB1LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3Ip
OwotICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOgotICAgICAgICByZXR1cm4gdS5zdHViLT5wcm9w
YWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaW5saW5lQWNjZXNz
QmFzZVN0cnVjdHVyZSkKKyAgICAgICAgaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZS0+bWFya0lm
Q2hlYXAodmlzaXRvcik7CisKKyAgICBpZiAobV9jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpTdHVi
KQorICAgICAgICB1LnN0dWItPnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwogfQogCi10
ZW1wbGF0ZSBib29sIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhBYnN0
cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSBib29sIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9w
YWdhdGVUcmFuc2l0aW9ucyhTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVt
cGxhdGUgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoU2xvdFZp
c2l0b3ImKTsKIAogU3R1YkluZm9TdW1tYXJ5IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KFZN
JiB2bSkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAyNzk3MzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtODQsMTEgKzg0LDExIEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyhBY2Nlc3NU
eXBlLCBDb2RlT3JpZ2luKTsKICAgICB+U3RydWN0dXJlU3R1YkluZm8oKTsKIAotICAgIHZvaWQg
aW5pdEdldEJ5SWRTZWxmKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFi
bGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGluaXRHZXRCeUlkU2VsZihjb25zdCBDb25jdXJyZW50
SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBpbmxpbmVBY2Nlc3NCYXNlU3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCwgQ2FjaGVhYmxlSWRlbnRpZmllcik7CiAgICAgdm9pZCBp
bml0QXJyYXlMZW5ndGgoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYpOwogICAgIHZvaWQg
aW5pdFN0cmluZ0xlbmd0aChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJik7Ci0gICAgdm9p
ZCBpbml0UHV0QnlJZFJlcGxhY2UoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYsIENvZGVC
bG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQsIENh
Y2hlYWJsZUlkZW50aWZpZXIpOwotICAgIHZvaWQgaW5pdEluQnlJZFNlbGYoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVj
dHVyZSwgUHJvcGVydHlPZmZzZXQsIENhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIHZvaWQgaW5p
dFB1dEJ5SWRSZXBsYWNlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jhc2VTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBD
YWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIGluaXRJbkJ5SWRTZWxmKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlckJhc2UmLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGlubGluZUFjY2Vzc0Jh
c2VTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0LCBDYWNoZWFibGVJZGVudGlmaWVyKTsKIAogICAg
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgYWRkQWNjZXNzQ2FzZShjb25zdCBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXImLCBKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEVDTUFNb2RlLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBSZWZQdHI8QWNjZXNzQ2FzZT4pOwogCkBAIC0xMDQsNyArMTA0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXJCYXNlJiwgQ29kZUJsb2NrKik7CiAgICAgCiAgICAgLy8gVGhpcyByZXR1cm5zIHRy
dWUgaWYgaXQgaGFzIG1hcmtlZCBldmVyeXRoaW5nIHRoYXQgaXQgd2lsbCBldmVyIG1hcmsuCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gYm9vbCBwcm9wYWdhdGVUcmFuc2l0aW9ucyhW
aXNpdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBwcm9wYWdhdGVU
cmFuc2l0aW9ucyhWaXNpdG9yJik7CiAgICAgICAgIAogICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1t
YXJ5KFZNJikgY29uc3Q7CiAgICAgCkBAIC0zMjYsMTEgKzMyNiwxMSBAQCBwdWJsaWM6CiAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luOwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKLSAg
ICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0dXJl
OwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgICAgICB9IGJ5SWRTZWxm
OwogICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1YjsKICAgICB9IHU7CisgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gaW5saW5lQWNjZXNzQmFzZVN0cnVjdHVyZTsKIHByaXZhdGU6CiAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgLy8gUmVwcmVzZW50cyB0
aG9zZSBzdHJ1Y3R1cmVzIHRoYXQgYWxyZWFkeSBoYXZlIGJ1ZmZlcmVkIEFjY2Vzc0Nhc2VzIGlu
IHRoZSBQb2x5bW9ycGhpY0FjY2Vzcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>