<?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>136725</bug_id>
          
          <creation_ts>2014-09-10 16:40:43 -0700</creation_ts>
          <short_desc>Move JSScope out of JSFunction into separate JSCallee class</short_desc>
          <delta_ts>2014-09-11 19:58:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>136724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1034460</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-09-10 16:40:43 -0700</bug_when>
    <thetext>Split out the JSScope from JSFunction so that we can easily have a JSScope for Program and Eval CallFrames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034533</commentid>
    <comment_count>1</comment_count>
      <attachid>237934</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-09-10 23:22:51 -0700</bug_when>
    <thetext>Created attachment 237934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034616</commentid>
    <comment_count>2</comment_count>
      <attachid>237934</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-09-11 09:21:29 -0700</bug_when>
    <thetext>Comment on attachment 237934
Patch

You need to update the cake lists, but otherwise yay! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034637</commentid>
    <comment_count>3</comment_count>
      <attachid>237963</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-09-11 10:21:49 -0700</bug_when>
    <thetext>Created attachment 237963
Added speculative fix for EWS build failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034724</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-09-11 14:52:47 -0700</bug_when>
    <thetext>Committed r173541: &lt;http://trac.webkit.org/changeset/173541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034743</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-11 16:05:33 -0700</bug_when>
    <thetext>Probably best for JSCallee not to have a create function, since it doesn&apos;t make sense to create an object of type JSCallee.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034777</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-09-11 18:22:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Probably best for JSCallee not to have a create function, since it doesn&apos;t make sense to create an object of type JSCallee.

I thought we agreed that we&apos;d create a JSCallee for program and eval frames and put that object in the JSCallee slot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034780</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-11 18:48:28 -0700</bug_when>
    <thetext>&gt; I thought we agreed that we&apos;d create a JSCallee for program and eval frames and put that object in the JSCallee slot.

Do you plan to use the JSCallee type for eval and program? I assumed you would create a subclass for each, like we have for JSFunction.

Side note: These functions probably belong in JSFunction, since they are for functions only:

 51    JS_EXPORT_PRIVATE String name(ExecState*);
 52    JS_EXPORT_PRIVATE String displayName(ExecState*);
 53    const String calculatedDisplayName(ExecState*);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034797</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-09-11 19:36:42 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; I thought we agreed that we&apos;d create a JSCallee for program and eval frames and put that object in the JSCallee slot.
&gt; 
&gt; Do you plan to use the JSCallee type for eval and program? I assumed you would create a subclass for each, like we have for JSFunction.

We can create subclasses, but what would be in the subclass for program, eval (and global exec)?  If you want subclasses just to distinguish use I can do that, but I think it might be more confusing to have the subclasses.

&gt; Side note: These functions probably belong in JSFunction, since they are for functions only:
&gt; 
&gt;  51    JS_EXPORT_PRIVATE String name(ExecState*);
&gt;  52    JS_EXPORT_PRIVATE String displayName(ExecState*);
&gt;  53    const String calculatedDisplayName(ExecState*);

I&apos;ll remove these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1034802</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-11 19:58:35 -0700</bug_when>
    <thetext>Actually, I guess if we&apos;re only going to access scope, and not executable, it might be fine not to have subclasses.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237934</attachid>
            <date>2014-09-10 23:22:51 -0700</date>
            <delta_ts>2014-09-11 10:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>136725.patch</filename>
            <type>text/plain</type>
            <size>26046</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTczNTA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDE0LTA5LTEwICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgSlNTY29wZSBvdXQgb2YgSlNGdW5jdGlvbiBpbnRvIHNlcGFyYXRlIEpTQ2FsbGVl
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzY3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
cmVhdGVkIG5ldyBKU0NhbGxlZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGEgSlNTY29wZSouICBDaGFu
Z2VkIEpTRnVuY3Rpb24gdG8gaW5oZXJpdCBmcm9tCisgICAgICAgIEpTQ2FsbGVlLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEJ1aWxkIGNoYW5nZXMuICBBZGRl
ZCBKU0NhbGxlZS5jcHAgYW5kIEpTQ2FsbGVlLmguCisKKyAgICAgICAgKiBydW50aW1lL0pTQ2Fs
bGVlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpKU0NhbGxlZTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpKU0Nh
bGxlZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkpTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6
OmdldE93blByb3BlcnR5U2xvdCk6IFBhc3MgdGhyb3VnaCB3cmFwcGVyIGZ1bmN0aW9uLgorICAg
ICAgICAoSlNDOjpKU0NhbGxlZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKTogUGFzcyB0
aHJvdWdoIHdyYXBwZXIgZnVuY3Rpb24uCisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpwdXQpOiBQ
YXNzIHRocm91Z2ggd3JhcHBlciBmdW5jdGlvbi4KKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6OmRl
bGV0ZVByb3BlcnR5KTogUGFzcyB0aHJvdWdoIHdyYXBwZXIgZnVuY3Rpb24uCisgICAgICAgIChK
U0M6OkpTQ2FsbGVlOjpkZWZpbmVPd25Qcm9wZXJ0eSk6IFBhc3MgdGhyb3VnaCB3cmFwcGVyIGZ1
bmN0aW9uLgorCisgICAgICAgICogcnVudGltZS9KU0NhbGxlZS5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNDYWxsZWU6OnNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6OnNjb3BlVW5j
aGVja2VkKToKKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6OnNldFNjb3BlKToKKyAgICAgICAgKEpT
Qzo6SlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpv
ZmZzZXRPZlNjb3BlQ2hhaW4pOgorCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OmFkZE5hbWVTY29wZUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6c2NvcGVVbmNoZWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpzZXRTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAgICAg
Q2hhbmdlZCB0byByZWZlcmVuY2UgSlNDYWxsZWUgYW5kIGl0cyBtZXRob2RzLgorCisgICAgICAg
ICogcnVudGltZS9KU1R5cGUuaDogQWRkZWQgSlNDYWxsZWUgYXMgYSBUeXBlRW51bS4KKwogMjAx
NC0wOS0xMCAgU2FhbSBCYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogTW9kaWZ5IHRoZSB0eXBlIHByb2ZpbGVyIHJ1bnRpbWUgcHJvdG9jb2wg
dG8gdHJhbnNmZXIgc29tZSBjb21wdXRhdGlvbiBpbnRvIHRoZSBXZWJJbnNwZWN0b3IKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3MzUwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDM4
LDExICs0MzgsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5j
cHAKICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisgICAgcnVudGltZS9KU0NhbGxlZS5jcHAK
ICAgICBydW50aW1lL0pTQ2VsbC5jcHAKICAgICBydW50aW1lL0pTQ29uc29sZS5jcHAKICAgICBy
dW50aW1lL0pTRGF0YVZpZXcuY3BwCiAgICAgcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKyAgICBydW50aW1lL0pTRW52aXJvbm1lbnRS
ZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAg
LTQ3MSw3ICs0NzMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUv
SlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcAogICAgIHJ1bnRpbWUvSlNUeXBlZEFycmF5UHJv
dG90eXBlcy5jcHAKICAgICBydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCi0gICAgcnVudGltZS9K
U0Vudmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNXZWFrTWFwLmNwcAogICAgIHJ1
bnRpbWUvSlNXaXRoU2NvcGUuY3BwCiAgICAgcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3MzUw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcxMSw2ICs3MTEsNyBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAv
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ2VsbC5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ29uc29sZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZpZXcuY3BwIiAvPgpAQCAtMTQ2Nyw2ICsx
NDY4LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ2FsbGVlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ2VsbC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NvbnNvbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRhVmlldy5oIiAvPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTczNTA3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNiArNjMzLDkg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3VuZEZ1bmN0aW9uLmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDYWxsZWUuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU0NlbGwuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjU4OCw2ICsyNTkxLDkgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTQ2FsbGVlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTQ2VsbC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MzUw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY5LDYgKzExNjksOSBAQAogCQk2NTUz
QTMzMTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFG
MUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi87IH07CiAJCTY1
NTNBMzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMzMDE3QTFG
MUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oICovOyB9OwogCQk2NTVF
QjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAv
KiBOb2Rlc0NvZGVnZW4uY3BwICovOyB9OworCQk2NTdDRjQ1ODE5QkY2NjYyMDA0QUNCRjIgLyog
SlNDYWxsZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLzsgfTsKKwkJNjU3
Q0Y0NTkxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlND
YWxsZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk2NTdDRjQ1QTE5QzExMzkwMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0NGNDU3MTlCRjY2NjIwMDRBQ0JGMiAv
KiBKU0NhbGxlZS5oICovOyB9OwogCQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRy
eVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU4RDNBNTUxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUMwMjg1MDE3MTc5NUUyMDAz
NTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlz
YXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUMwMjg1QTE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKQEAg
LTI3OTgsNiArMjgwMSw4IEBACiAJCTY1NjBBNENGMDRCM0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91
bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1l
d29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZy
YW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJNjU2MjFFNkIwODlFODU5
NzAwNzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9wZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYz
NSAvKiBQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpT
Q2FsbGVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBN
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRyeVJlY29yZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk1FbnRy
eVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlv
bklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJNjU5ODdGMkMxNjdGRTg0QjAw
M0MyRjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBwYXRoID0gZGZnL0RG
R09TUkV4aXRDb21waWxhdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ0OTgsNiArNDUwMyw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJy
YXlJdGVyYXRvci5oICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5k
RnVuY3Rpb24uY3BwICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5k
RnVuY3Rpb24uaCAqLywKKwkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUu
Y3BwICovLAorCQkJCTY1N0NGNDU3MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oICovLAog
CQkJCUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0NlbGwuY3BwICovLAogCQkJCUJDMTE2
N0Q4MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCAqLywKIAkJCQkwRjk3NDk2RjE2ODdBREUy
MDBBNEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICovLApAQCAtNTUyOCw2ICs1NTM1LDcgQEAKIAkJ
CQk1NTQwNzcxODE4REE1OEFEMDBFRkY3RjIgLyogSlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTQwNzcxQjE4REE1OEFEMDBFRkY3RjIgLyogSlNBcmd1bWVudHNJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3MjIxOERBNThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU3Q0Y0NUExOUMxMTM5MDAwNEFDQkYyIC8q
IEpTQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzc0ODE4REE1OEFEMDBFRkY3RjIg
LyogSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzc0
QTE4REE1OEFEMDBFRkY3RjIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1NDA3NzU5MThEQTU4QUQwMEVGRjdGMiAvKiBKU01hcEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKQEAgLTYyMjEsNiArNjIyOSw3IEBACiAJCQkJMEYyRDRERTkxOTgzMkRBQzAw
N0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRDE3RDcwRThB
RDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RkE5
RTkyMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCTY1N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0MTkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJh
Y2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUIwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTQ2FsbGJhY2tPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ5MCw2ICs3NDk5LDcg
QEAKIAkJCQkxNDQwRjg5MjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0QUJERjYwMEE0MzdGRUYwMEVDQ0EwMSAvKiBKU0NhbGxi
YWNrT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5
QiAvKiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NTdDRjQ1ODE5QkY2NjYy
MDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDExMDdF
QzM3NjAwNDI3QTQ4IC8qIEpTQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENjEw
N0VDMzc2MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQw
RkNFNDBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDYWxsZWUu
aCIKKworI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTQ2FsbGVlOjpzX2luZm8gPSB7ICJDYWxsZWUiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGVlKSB9OworCitKU0NhbGxlZSogSlNDYWxsZWU6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlND
YWxsZWUqIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsZWU+KHZt
LmhlYXApKSBKU0NhbGxlZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9u
U3RydWN0dXJlKCkpOworICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0
dXJuIGZ1bmN0aW9uOworfQorCit2b2lkIEpTQ2FsbGVlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBzdGF0aWNfY2FzdDxKU0NhbGxlZSo+KGNlbGwpLT5KU0NhbGxlZTo6fkpTQ2FsbGVl
KCk7Cit9CisKK0pTQ2FsbGVlOjpKU0NhbGxlZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQorICAgICwgbV9zY29wZSh2bSwgdGhpcywgZ2xvYmFsT2JqZWN0KQoreworfQorCitKU0NhbGxl
ZTo6SlNDYWxsZWUoVk0mIHZtLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7CisgICAgc2V0U2NvcGUodm0sIHNjb3BlKTsK
K30KKwordm9pZCBKU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisK
K3ZvaWQgSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0NhbGxlZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxlZSo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2NvcGUpOworfQorCitib29sIEpTQ2FsbGVl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7Cit9CisKK3ZvaWQgSlNDYWxsZWU6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9w
ZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBCYXNlOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30K
Kwordm9pZCBKU0NhbGxlZTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworfQorCitib29sIEpTQ2FsbGVlOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4g
QmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lKTsKK30KKworYm9v
bCBKU0NhbGxlZTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCit7CisgICAgcmV0dXJuIEJhc2U6
OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
LCB0aHJvd0V4Y2VwdGlvbik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSlNDYWxsZWVfaAorI2RlZmluZSBKU0NhbGxlZV9oCisKKyNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU2NvcGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworCisKK2NsYXNzIEpTQ2FsbGVlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKKyAg
ICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklU
OworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOworICAgIGZyaWVuZCBjbGFzcyBW
TTsKKworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0NhbGxlZSogY3JlYXRlKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKKworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgZGlzcGxheU5hbWUoRXhlY1N0YXRlKik7CisgICAgY29uc3QgU3RyaW5n
IGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKKworICAgIEpTU2NvcGUqIHNjb3Bl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Njb3BlLmdldCgpOworICAgIH0KKworICAgIC8v
IFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgZm9yIGhvc3QgZnVuY3Rpb25zLCBpbiB3aGljaCBj
YXNlIGl0CisgICAgLy8gd2lsbCByZXR1cm4gYW4gYXJiaXRyYXJ5IHZhbHVlLiBUaGlzIHNob3Vs
ZCBvbmx5IGJlIHVzZWQgZm9yCisgICAgLy8gb3B0aW1pemVkIHBhdGhzIGluIHdoaWNoIHRoZSBy
ZXR1cm4gdmFsdWUgZG9lcyBub3QgbWF0dGVyIGZvcgorICAgIC8vIGhvc3QgZnVuY3Rpb25zLCBh
bmQgY2hlY2tpbmcgd2hldGhlciB0aGUgZnVuY3Rpb24gaXMgYSBob3N0CisgICAgLy8gZnVuY3Rp
b24gaXMgZGVlbWVkIHRvbyBleHBlbnNpdmUuCisgICAgSlNTY29wZSogc2NvcGVVbmNoZWNrZWQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2NvcGUuZ2V0KCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRTY29wZShWTSYgdm0sIEpTU2NvcGUqIHNjb3BlKQorICAgIHsKKyAgICAgICAgbV9zY29w
ZS5zZXQodm0sIHRoaXMsIHNjb3BlKTsKKyAgICB9CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQ2FsbGVlVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlm
Zl90IG9mZnNldE9mU2NvcGVDaGFpbigpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTQ2FsbGVlLCBtX3Njb3BlKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBjb25z
dCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlND
YWxsZWUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIEpTQ2FsbGVlKFZN
JiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OworICAgIHVzaW5nIEJhc2U6OmZpbmlzaENyZWF0aW9uOworCisgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHN0YXRpYyBib29sIGRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKKyAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNTY29wZT4gbV9zY29wZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDYWxsZWVfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE3MzUw
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw5ICs4NSw4IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCiB9CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAg
ICwgbV9leGVjdXRhYmxlKCkKLSAgICAsIG1fc2NvcGUodm0sIHRoaXMsIGdsb2JhbE9iamVjdCkK
ICAgICAvLyBXZSBpbml0aWFsaXplIGJsaW5kIHNvIHRoYXQgY2hhbmdlcyB0byB0aGUgcHJvdG90
eXBlIGFmdGVyIGZ1bmN0aW9uIGNyZWF0aW9uIGJ1dCBiZWZvcmUKICAgICAvLyB0aGUgb3B0aW1p
emVyIGtpY2tzIGluIGRvbid0IGRpc2FibGUgb3B0aW1pemF0aW9ucy4gT25jZSB0aGUgb3B0aW1p
emVyIGtpY2tzIGluLCB0aGUKICAgICAvLyB3YXRjaHBvaW50IHdpbGwgc3RhcnQgd2F0Y2hpbmcg
YW5kIGFueSBjaGFuZ2VzIHdpbGwgYm90aCBmb3JjZSBkZW9wdGltaXphdGlvbiBhbmQgZGlzYWJs
ZQpAQCAtMTE3LDcgKzExNiw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6YWRkTmFtZVNjb3BlSWZOZWVk
ZWQoVk0KICAgICAgICAgcmV0dXJuOwogICAgIGlmICghZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFt
aWMoZXhlY3V0YWJsZS0+dXNlc0V2YWwoKSwgZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9zY29wZS5zZXQodm0sIHRoaXMsIEpTTmFtZVNjb3BlOjpj
cmVhdGUodm0sIG1fc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBleGVjdXRhYmxlLT5uYW1lKCksIHRo
aXMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSwgbV9zY29wZS5nZXQoKSkpOworICAgIHNldFNjb3Bl
KHZtLCBKU05hbWVTY29wZTo6Y3JlYXRlKHZtLCBzY29wZSgpLT5nbG9iYWxPYmplY3QoKSwgZXhl
Y3V0YWJsZS0+bmFtZSgpLCB0aGlzLCBSZWFkT25seSB8IERvbnREZWxldGUsIHNjb3BlKCkpKTsK
IH0KIAogSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpAQCAtMTgwLDcgKzE3OSw2IEBAIHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGMKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAot
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9leGVjdXRhYmxlKTsKICAgICB0aGlzT2JqZWN0LT5tX2FsbG9j
YXRpb25Qcm9maWxlLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTczNTA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw3IEBACiAjZGVmaW5lIEpTRnVuY3Rpb25faAogCiAjaW5jbHVkZSAiSW50
ZXJuYWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5j
bHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCkBAIC00OSwxNCAr
NDksMTQgQEAgSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2RlZEpTVmFsdWUgSlNDX0hPUwogCiBKU19F
WFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKENhbGxGcmFtZSos
IEpTT2JqZWN0Kik7CiAgICAgCi1jbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKK2NsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CiAg
ICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7CiAgICAgZnJpZW5kIGNsYXNzIFZNOwog
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHR5
cGVkZWYgSlNDYWxsZWUgQmFzZTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1
bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRp
dmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVj
dG9yKTsKIApAQCAtNzYsMjUgKzc2LDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3RhdGUqKTsKICAgICBjb25zdCBTdHJpbmcgY2FsY3Vs
YXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSopOwogCi0gICAgSlNTY29wZSogc2NvcGUoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKLSAgICAgICAg
cmV0dXJuIG1fc2NvcGUuZ2V0KCk7Ci0gICAgfQotICAgIC8vIFRoaXMgbWV0aG9kIG1heSBiZSBj
YWxsZWQgZm9yIGhvc3QgZnVuY3RpbnMsIGluIHdoaWNoIGNhc2UgaXQKLSAgICAvLyB3aWxsIHJl
dHVybiBhbiBhcmJpdHJhcnkgdmFsdWUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IKLSAg
ICAvLyBvcHRpbWl6ZWQgcGF0aHMgaW4gd2hpY2ggdGhlIHJldHVybiB2YWx1ZSBkb2VzIG5vdCBt
YXR0ZXIgZm9yCi0gICAgLy8gaG9zdCBmdW5jdGlvbnMsIGFuZCBjaGVja2luZyB3aGV0aGVyIHRo
ZSBmdW5jdGlvbiBpcyBhIGhvc3QKLSAgICAvLyBmdW5jdGlvbiBpcyBkZWVtZWQgdG9vIGV4cGVu
c2l2ZS4KLSAgICBKU1Njb3BlKiBzY29wZVVuY2hlY2tlZCgpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9zY29wZS5nZXQoKTsKLSAgICB9Ci0gICAgdm9pZCBzZXRTY29wZShWTSYgdm0sIEpTU2Nv
cGUqIHNjb3BlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbk5vbklubGlu
ZSgpKTsKLSAgICAgICAgbV9zY29wZS5zZXQodm0sIHRoaXMsIHNjb3BlKTsKLSAgICB9CiAgICAg
dm9pZCBhZGROYW1lU2NvcGVJZk5lZWRlZChWTSYpOwogCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUuZ2V0KCk7IH0KQEAgLTExOSwx
MSArMTAwLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRD
YWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogCi0gICAgc3RhdGljIGlubGluZSBwdHJkaWZm
X3Qgb2Zmc2V0T2ZTY29wZUNoYWluKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSk7Ci0gICAgfQotCiAgICAgc3RhdGljIGlubGluZSBw
dHJkaWZmX3Qgb2Zmc2V0T2ZFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9leGVjdXRhYmxlKTsKQEAgLTE4Miw3ICsxNTgsNiBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICBXcml0
ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKLSAgICBXcml0ZUJhcnJpZXI8
SlNTY29wZT4gbV9zY29wZTsKICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBtX2FsbG9jYXRp
b25Qcm9maWxlOwogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hbGxvY2F0aW9uUHJvZmlsZVdh
dGNocG9pbnQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAxNzM1MDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw5ICszMiw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogaW5saW5lIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNj
b3BlKQotICAgIDogQmFzZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblN0cnVj
dHVyZSgpKQorICAgIDogQmFzZSh2bSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+ZnVu
Y3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1fZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJs
ZSkKLSAgICAsIG1fc2NvcGUodm0sIHRoaXMsIHNjb3BlKQogICAgICwgbV9hbGxvY2F0aW9uUHJv
ZmlsZVdhdGNocG9pbnQoQ2xlYXJXYXRjaHBvaW50KSAvLyBTZWUgY29tbWVudCBpbiBKU0Z1bmN0
aW9uLmNwcCBjb25jZXJuaW5nIHRoZSByZWFzb24gZm9yIHVzaW5nIENsZWFyV2F0Y2hwb2ludCBh
cyBvcHBvc2VkIHRvIElzV2F0Y2hlZC4KIHsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAxNzM1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBlbnVt
IEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIFRoZSBPYmplY3RUeXBlIHZhbHVlIG11c3QgY29t
ZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QuCiAgICAg
T2JqZWN0VHlwZSwKICAgICBGaW5hbE9iamVjdFR5cGUsCisgICAgSlNDYWxsZWVUeXBlLAogICAg
IEpTRnVuY3Rpb25UeXBlLAogICAgIE5hbWVJbnN0YW5jZVR5cGUsCiAgICAgTnVtYmVyT2JqZWN0
VHlwZSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MzUwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA5LTEwICBN
aWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgSlNTY29w
ZSBvdXQgb2YgSlNGdW5jdGlvbiBpbnRvIHNlcGFyYXRlIEpTQ2FsbGVlIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGVkIG5ldyBKU0Nh
bGxlZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGEgSlNTY29wZSouICBDaGFuZ2VkIEpTRnVuY3Rpb24g
dG8gaW5oZXJpdCBmcm9tCisgICAgICAgIEpTQ2FsbGVlLgorCisgICAgICAgICogRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9KU0NhbGxlZS5oOiBOZXcgZm9yd2FyZGluZyBoZWFkZXIuCisKIDIw
MTQtMDktMTAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBVc2UgQVNTRVJUIGluc3RlYWQgb2YgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDYWxs
ZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0pTQ2FsbGVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBA
CisjaWZuZGVmIFdlYkNvcmVfRldEX0pTQ2FsbGVlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlND
YWxsZWVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ2FsbGVlLmg+CisjZW5kaWYK
</data>
<flag name="review"
          id="262697"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237963</attachid>
            <date>2014-09-11 10:21:49 -0700</date>
            <delta_ts>2014-09-11 10:21:49 -0700</delta_ts>
            <desc>Added speculative fix for EWS build failures</desc>
            <filename>136725-2.patch</filename>
            <type>text/plain</type>
            <size>26073</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTczNTA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDE0LTA5LTEwICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgSlNTY29wZSBvdXQgb2YgSlNGdW5jdGlvbiBpbnRvIHNlcGFyYXRlIEpTQ2FsbGVl
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzY3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKworICAgICAgICBDcmVh
dGVkIG5ldyBKU0NhbGxlZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGEgSlNTY29wZSouICBDaGFuZ2Vk
IEpTRnVuY3Rpb24gdG8gaW5oZXJpdCBmcm9tCisgICAgICAgIEpTQ2FsbGVlLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEJ1aWxkIGNoYW5nZXMuICBBZGRlZCBK
U0NhbGxlZS5jcHAgYW5kIEpTQ2FsbGVlLmguCisKKyAgICAgICAgKiBydW50aW1lL0pTQ2FsbGVl
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0NhbGxlZTo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpKU0NhbGxl
ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6Omdl
dE93blByb3BlcnR5U2xvdCk6IFBhc3MgdGhyb3VnaCB3cmFwcGVyIGZ1bmN0aW9uLgorICAgICAg
ICAoSlNDOjpKU0NhbGxlZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKTogUGFzcyB0aHJv
dWdoIHdyYXBwZXIgZnVuY3Rpb24uCisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpwdXQpOiBQYXNz
IHRocm91Z2ggd3JhcHBlciBmdW5jdGlvbi4KKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6OmRlbGV0
ZVByb3BlcnR5KTogUGFzcyB0aHJvdWdoIHdyYXBwZXIgZnVuY3Rpb24uCisgICAgICAgIChKU0M6
OkpTQ2FsbGVlOjpkZWZpbmVPd25Qcm9wZXJ0eSk6IFBhc3MgdGhyb3VnaCB3cmFwcGVyIGZ1bmN0
aW9uLgorCisgICAgICAgICogcnVudGltZS9KU0NhbGxlZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6SlNDYWxsZWU6OnNjb3BlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6OnNjb3BlVW5jaGVj
a2VkKToKKyAgICAgICAgKEpTQzo6SlNDYWxsZWU6OnNldFNjb3BlKToKKyAgICAgICAgKEpTQzo6
SlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjpvZmZz
ZXRPZlNjb3BlQ2hhaW4pOgorCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmFkZE5hbWVTY29wZUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OnNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6c2NvcGVVbmNoZWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpzZXRTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAgICAgQ2hh
bmdlZCB0byByZWZlcmVuY2UgSlNDYWxsZWUgYW5kIGl0cyBtZXRob2RzLgorCisgICAgICAgICog
cnVudGltZS9KU1R5cGUuaDogQWRkZWQgSlNDYWxsZWUgYXMgYSBUeXBlRW51bS4KKwogMjAxNC0w
OS0xMCAgU2FhbSBCYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogTW9kaWZ5IHRoZSB0eXBlIHByb2ZpbGVyIHJ1bnRpbWUgcHJvdG9jb2wgdG8g
dHJhbnNmZXIgc29tZSBjb21wdXRhdGlvbiBpbnRvIHRoZSBXZWJJbnNwZWN0b3IKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE3MzUwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDEx
ICs0MzgsMTMgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAK
ICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKICAg
ICBydW50aW1lL0pTQ2VsbC5jcHAKICAgICBydW50aW1lL0pTQ29uc29sZS5jcHAKICAgICBydW50
aW1lL0pTRGF0YVZpZXcuY3BwCiAgICAgcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKyAgICBydW50aW1lL0pTRW52aXJvbm1lbnRSZWNv
cmQuY3BwCiAgICAgcnVudGltZS9KU0Z1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCiAgICAgcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTQ3
MSw3ICs0NzMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNU
eXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcAogICAgIHJ1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90
eXBlcy5jcHAKICAgICBydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCi0gICAgcnVudGltZS9KU0Vu
dmlyb25tZW50UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNXZWFrTWFwLmNwcAogICAgIHJ1bnRp
bWUvSlNXaXRoU2NvcGUuY3BwCiAgICAgcnVudGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3MzUwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcxMSw2ICs3MTEsNyBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQm91bmRGdW5jdGlvbi5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NhbGxlZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ2VsbC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ29uc29sZS5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTRGF0YVZpZXcuY3BwIiAvPgpAQCAtMTQ2Nyw2ICsxNDY4
LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDSW5saW5lcy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NKU1ZhbHVlLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ2FsbGVlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ2VsbC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0NvbnNvbGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNEYXRhVmlldy5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTczNTA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNiArNjMzLDkgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3VuZEZ1bmN0aW9uLmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNDYWxsZWUuY3BwIj4KKyAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU0NlbGwuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjU4OCw2ICsyNTkxLDkgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNCb3VuZEZ1bmN0aW9uLmgiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTQ2FsbGVlLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTQ2VsbC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MzUwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY5LDYgKzExNjksOSBAQAogCQk2NTUzQTMz
MTE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMyRjE3QTFGMUVF
MDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgKi87IH07CiAJCTY1NTNB
MzMyMTdBMUYxRUUwMDhDRjZGMyAvKiBDb21tb25TbG93UGF0aHNFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUzQTMzMDE3QTFGMUVF
MDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oICovOyB9OwogCQk2NTVFQjI5
QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVCMjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBO
b2Rlc0NvZGVnZW4uY3BwICovOyB9OworCQk2NTdDRjQ1ODE5QkY2NjYyMDA0QUNCRjIgLyogSlND
YWxsZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLzsgfTsKKwkJNjU3Q0Y0
NTkxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxs
ZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2
NTdDRjQ1QTE5QzExMzkwMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0NGNDU3MTlCRjY2NjIwMDRBQ0JGMiAvKiBK
U0NhbGxlZS5oICovOyB9OwogCQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRyeVJl
Y29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4
RDNBNTUxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFF
MzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NEYxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNz
ZW1ibGVyLmNwcCAqLzsgfTsKIAkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9w
Y29kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUMwMjg1QTE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCAqLzsgfTsKQEAgLTI3
OTgsNiArMjgwMSw4IEBACiAJCTY1NjBBNENGMDRCM0IzRTcwMDhBRTk1MiAvKiBDb3JlRm91bmRh
dGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvcmVGb3VuZGF0aW9uLmZyYW1ld29y
azsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVGb3VuZGF0aW9uLmZyYW1l
d29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJNjU2MjFFNkIwODlFODU5NzAw
NzYwRjM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9wZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1NjIxRTZDMDg5RTg1OTcwMDc2MEYzNSAv
KiBQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgfTsKKwkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2Fs
bGVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk1FbnRyeVJl
Y29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklk
ZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJNjU5ODdGMkMxNjdGRTg0QjAwM0My
RjhEIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOyBwYXRoID0gZGZnL0RGR09T
UkV4aXRDb21waWxhdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0
OTgsNiArNDUwMyw4IEBACiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJ
dGVyYXRvci5oICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVu
Y3Rpb24uY3BwICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVu
Y3Rpb24uaCAqLywKKwkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3Bw
ICovLAorCQkJCTY1N0NGNDU3MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oICovLAogCQkJ
CUJDN0Y4RkJBMEUxOUQxRUYwMDg2MzJDMCAvKiBKU0NlbGwuY3BwICovLAogCQkJCUJDMTE2N0Q4
MEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCAqLywKIAkJCQkwRjk3NDk2RjE2ODdBREUyMDBB
NEZGNkEgLyogSlNDZWxsSW5saW5lcy5oICovLApAQCAtNTUyOCw2ICs1NTM1LDcgQEAKIAkJCQk1
NTQwNzcxODE4REE1OEFEMDBFRkY3RjIgLyogSlNBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NTQwNzcxQjE4REE1OEFEMDBFRkY3RjIgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTU0MDc3MjIxOERBNThBRDAwRUZGN0YyIC8qIEpTQXJyYXlJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU3Q0Y0NUExOUMxMTM5MDAwNEFDQkYyIC8qIEpT
Q2FsbGVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzc0ODE4REE1OEFEMDBFRkY3RjIgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTQwNzc0QTE4
REE1OEFEMDBFRkY3RjIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU1NDA3NzU5MThEQTU4QUQwMEVGRjdGMiAvKiBKU01hcEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTYyMjEsNiArNjIyOSw3IEBACiAJCQkJMEYyRDRERTkxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRDE3RDcwRThBRDRB
OTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RkE5RTky
MTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTY1N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MTkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tG
dW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MUIwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTQ2FsbGJhY2tPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ5MCw2ICs3NDk5LDcgQEAK
IAkJCQkxNDQwRjg5MjBBNTA4QjEwMDAwNUYwNjEgLyogSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0QUJERjYwMEE0MzdGRUYwMEVDQ0EwMSAvKiBKU0NhbGxiYWNr
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDgwMUE4MTg4MEQ2QTgwMDI2QzM5QiAv
KiBKU0NCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NTdDRjQ1ODE5QkY2NjYyMDA0
QUNCRjIgLyogSlNDYWxsZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDExMDdFQzM3
NjAwNDI3QTQ4IC8qIEpTQ2VsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENjEwN0VD
Mzc2MDA0MjdBNDggLyogSlNDSlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRkNF
NDBBNTFFNDZCMDAwNUYwNjEgLyogSlNDbGFzc1JlZi5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDYWxsZWUuaCIK
KworI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CisjaW5jbHVkZSAiU3RhY2tWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGVlOjpzX2luZm8g
PSB7ICJDYWxsZWUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2Fs
bGVlKSB9OworCitKU0NhbGxlZSogSlNDYWxsZWU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNDYWxsZWUqIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNDYWxsZWU+KHZtLmhlYXApKSBKU0NhbGxlZSh2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIGZ1bmN0aW9u
LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCit2b2lkIEpT
Q2FsbGVlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU0NhbGxl
ZSo+KGNlbGwpLT5KU0NhbGxlZTo6fkpTQ2FsbGVlKCk7Cit9CisKK0pTQ2FsbGVlOjpKU0NhbGxl
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9zY29wZSh2bSwgdGhpcywg
Z2xvYmFsT2JqZWN0KQoreworfQorCitKU0NhbGxlZTo6SlNDYWxsZWUoVk0mIHZtLCBKU1Njb3Bl
KiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
Cit7CisgICAgc2V0U2NvcGUodm0sIHNjb3BlKTsKK30KKwordm9pZCBKU0NhbGxlZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Cit9CisKK3ZvaWQgSlNDYWxsZWU6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0NhbGxlZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxlZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fc2NvcGUpOworfQorCitib29sIEpTQ2FsbGVlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xv
dChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNDYWxsZWU6
OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSkKK3sKKyAgICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKwordm9pZCBKU0NhbGxlZTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgQmFzZTo6cHV0KGNlbGws
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworfQorCitib29sIEpTQ2FsbGVlOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkoY2VsbCwg
ZXhlYywgcHJvcGVydHlOYW1lKTsKK30KKworYm9vbCBKU0NhbGxlZTo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dF
eGNlcHRpb24pCit7CisgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YWxsZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nh
bGxlZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNDYWxsZWVfaAorI2RlZmlu
ZSBKU0NhbGxlZV9oCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1
ZGUgIkpTU2NvcGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCisKK2NsYXNzIEpTQ2FsbGVlIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZy
aWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOworICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJ
VENvbXBpbGVyOworICAgIGZyaWVuZCBjbGFzcyBWTTsKKworcHVibGljOgorICAgIHR5cGVkZWYg
SlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBKU0NhbGxlZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKworICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFt
ZShFeGVjU3RhdGUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZGlzcGxheU5hbWUo
RXhlY1N0YXRlKik7CisgICAgY29uc3QgU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShFeGVj
U3RhdGUqKTsKKworICAgIEpTU2NvcGUqIHNjb3BlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3Njb3BlLmdldCgpOworICAgIH0KKworICAgIC8vIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQg
Zm9yIGhvc3QgZnVuY3Rpb25zLCBpbiB3aGljaCBjYXNlIGl0CisgICAgLy8gd2lsbCByZXR1cm4g
YW4gYXJiaXRyYXJ5IHZhbHVlLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yCisgICAgLy8g
b3B0aW1pemVkIHBhdGhzIGluIHdoaWNoIHRoZSByZXR1cm4gdmFsdWUgZG9lcyBub3QgbWF0dGVy
IGZvcgorICAgIC8vIGhvc3QgZnVuY3Rpb25zLCBhbmQgY2hlY2tpbmcgd2hldGhlciB0aGUgZnVu
Y3Rpb24gaXMgYSBob3N0CisgICAgLy8gZnVuY3Rpb24gaXMgZGVlbWVkIHRvbyBleHBlbnNpdmUu
CisgICAgSlNTY29wZSogc2NvcGVVbmNoZWNrZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
c2NvcGUuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRTY29wZShWTSYgdm0sIEpTU2NvcGUq
IHNjb3BlKQorICAgIHsKKyAgICAgICAgbV9zY29wZS5zZXQodm0sIHRoaXMsIHNjb3BlKTsKKyAg
ICB9CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpIAorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEpTQ2FsbGVlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9mZnNldE9mU2NvcGVDaGFpbigpCisg
ICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2FsbGVlLCBtX3Njb3BlKTsK
KyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdz
OworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNDYWxsZWUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOworICAgIEpTQ2FsbGVlKFZNJiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwor
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHVzaW5nIEJhc2U6OmZpbmlzaENy
ZWF0aW9uOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSA9IEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKKyAgICBXcml0ZUJh
cnJpZXI8SlNTY29wZT4gbV9zY29wZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gSlNDYWxsZWVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE3MzUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4NSw4IEBA
IHZvaWQgSlNGdW5jdGlvbjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB9CiAKIEpTRnVuY3Rpb246
OkpTRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKCkKLSAgICAsIG1f
c2NvcGUodm0sIHRoaXMsIGdsb2JhbE9iamVjdCkKICAgICAvLyBXZSBpbml0aWFsaXplIGJsaW5k
IHNvIHRoYXQgY2hhbmdlcyB0byB0aGUgcHJvdG90eXBlIGFmdGVyIGZ1bmN0aW9uIGNyZWF0aW9u
IGJ1dCBiZWZvcmUKICAgICAvLyB0aGUgb3B0aW1pemVyIGtpY2tzIGluIGRvbid0IGRpc2FibGUg
b3B0aW1pemF0aW9ucy4gT25jZSB0aGUgb3B0aW1pemVyIGtpY2tzIGluLCB0aGUKICAgICAvLyB3
YXRjaHBvaW50IHdpbGwgc3RhcnQgd2F0Y2hpbmcgYW5kIGFueSBjaGFuZ2VzIHdpbGwgYm90aCBm
b3JjZSBkZW9wdGltaXphdGlvbiBhbmQgZGlzYWJsZQpAQCAtMTE3LDcgKzExNiw3IEBAIHZvaWQg
SlNGdW5jdGlvbjo6YWRkTmFtZVNjb3BlSWZOZWVkZWQoVk0KICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoZXhlY3V0YWJsZS0+dXNlc0V2YWwoKSwg
ZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zY29w
ZS5zZXQodm0sIHRoaXMsIEpTTmFtZVNjb3BlOjpjcmVhdGUodm0sIG1fc2NvcGUtPmdsb2JhbE9i
amVjdCgpLCBleGVjdXRhYmxlLT5uYW1lKCksIHRoaXMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSwg
bV9zY29wZS5nZXQoKSkpOworICAgIHNldFNjb3BlKHZtLCBKU05hbWVTY29wZTo6Y3JlYXRlKHZt
LCBzY29wZSgpLT5nbG9iYWxPYmplY3QoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCB0aGlzLCBSZWFk
T25seSB8IERvbnREZWxldGUsIHNjb3BlKCkpKTsKIH0KIAogSlNGdW5jdGlvbiogSlNGdW5jdGlv
bjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtMTgwLDcgKzE3OSw2IEBA
IHZvaWQgSlNGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGMKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3Njb3BlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9leGVjdXRh
YmxlKTsKICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlLnZpc2l0QWdncmVnYXRl
KHZpc2l0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAkocmV2aXNpb24gMTczNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjZGVmaW5l
IEpTRnVuY3Rpb25faAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDYWxsZWUuaCIKICNpbmNsdWRl
ICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNs
dWRlICJXYXRjaHBvaW50LmgiCkBAIC00OSwxNCArNDksMTQgQEAgSlNfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPUwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZ2V0Q2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKENhbGxGcmFtZSosIEpTT2JqZWN0Kik7CiAgICAgCi1jbGFzcyBK
U0Z1bmN0aW9uIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK2NsYXNzIEpTRnVuY3Rp
b24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5k
IGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CiAgICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29t
cGlsZXI7CiAgICAgZnJpZW5kIGNsYXNzIFZNOwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Rl
c3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlNDYWxsZWUgQmFzZTsKIAogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3Rv
ciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKIApAQCAtNzYsMjUgKzc2LDYgQEAg
cHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBkaXNwbGF5TmFtZShFeGVjU3Rh
dGUqKTsKICAgICBjb25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEV4ZWNTdGF0ZSop
OwogCi0gICAgSlNTY29wZSogc2NvcGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpKTsKLSAgICAgICAgcmV0dXJuIG1fc2NvcGUuZ2V0KCk7Ci0gICAg
fQotICAgIC8vIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgZm9yIGhvc3QgZnVuY3RpbnMsIGlu
IHdoaWNoIGNhc2UgaXQKLSAgICAvLyB3aWxsIHJldHVybiBhbiBhcmJpdHJhcnkgdmFsdWUuIFRo
aXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IKLSAgICAvLyBvcHRpbWl6ZWQgcGF0aHMgaW4gd2hp
Y2ggdGhlIHJldHVybiB2YWx1ZSBkb2VzIG5vdCBtYXR0ZXIgZm9yCi0gICAgLy8gaG9zdCBmdW5j
dGlvbnMsIGFuZCBjaGVja2luZyB3aGV0aGVyIHRoZSBmdW5jdGlvbiBpcyBhIGhvc3QKLSAgICAv
LyBmdW5jdGlvbiBpcyBkZWVtZWQgdG9vIGV4cGVuc2l2ZS4KLSAgICBKU1Njb3BlKiBzY29wZVVu
Y2hlY2tlZCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zY29wZS5nZXQoKTsKLSAgICB9Ci0g
ICAgdm9pZCBzZXRTY29wZShWTSYgdm0sIEpTU2NvcGUqIHNjb3BlKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKCFpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsKLSAgICAgICAgbV9zY29wZS5zZXQo
dm0sIHRoaXMsIHNjb3BlKTsKLSAgICB9CiAgICAgdm9pZCBhZGROYW1lU2NvcGVJZk5lZWRlZChW
TSYpOwogCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2V4ZWN1dGFibGUuZ2V0KCk7IH0KQEAgLTExOSwxMSArMTAwLDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYpOwogICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OwogCi0gICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZUNoYWluKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9zY29wZSk7
Ci0gICAgfQotCiAgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZFeGVjdXRhYmxl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNGdW5jdGlvbiwgbV9l
eGVjdXRhYmxlKTsKQEAgLTE4Miw3ICsxNTgsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1f
ZXhlY3V0YWJsZTsKLSAgICBXcml0ZUJhcnJpZXI8SlNTY29wZT4gbV9zY29wZTsKICAgICBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSBtX2FsbG9jYXRpb25Qcm9maWxlOwogICAgIElubGluZVdhdGNo
cG9pbnRTZXQgbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZp
c2lvbiAxNzM1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw4IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogaW5saW5lIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQotICAgIDogQmFzZSh2bSwgc2NvcGUt
Pmdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblN0cnVjdHVyZSgpKQorICAgIDogQmFzZSh2bSwgc2Nv
cGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1f
ZXhlY3V0YWJsZSh2bSwgdGhpcywgZXhlY3V0YWJsZSkKLSAgICAsIG1fc2NvcGUodm0sIHRoaXMs
IHNjb3BlKQogICAgICwgbV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQoQ2xlYXJXYXRjaHBv
aW50KSAvLyBTZWUgY29tbWVudCBpbiBKU0Z1bmN0aW9uLmNwcCBjb25jZXJuaW5nIHRoZSByZWFz
b24gZm9yIHVzaW5nIENsZWFyV2F0Y2hwb2ludCBhcyBvcHBvc2VkIHRvIElzV2F0Y2hlZC4KIHsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAx
NzM1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8v
IFRoZSBPYmplY3RUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlz
IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QuCiAgICAgT2JqZWN0VHlwZSwKICAgICBGaW5hbE9iamVj
dFR5cGUsCisgICAgSlNDYWxsZWVUeXBlLAogICAgIEpTRnVuY3Rpb25UeXBlLAogICAgIE5hbWVJ
bnN0YW5jZVR5cGUsCiAgICAgTnVtYmVyT2JqZWN0VHlwZSwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE3MzUwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE0LTA5LTEwICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIE1vdmUgSlNTY29wZSBvdXQgb2YgSlNGdW5jdGlvbiBpbnRvIHNl
cGFyYXRlIEpTQ2FsbGVlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzY3MjUKKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4K
KworICAgICAgICBDcmVhdGVkIG5ldyBKU0NhbGxlZSBjbGFzcyB0aGF0IGNvbnRhaW5zIGEgSlNT
Y29wZSouICBDaGFuZ2VkIEpTRnVuY3Rpb24gdG8gaW5oZXJpdCBmcm9tCisgICAgICAgIEpTQ2Fs
bGVlLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9KU0NhbGxlZS5oOiBO
ZXcgZm9yd2FyZGluZyBoZWFkZXIuCisKIDIwMTQtMDktMTAgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVc2UgQVNTRVJUIGluc3RlYWQgb2YgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSlNDYWxsZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ2FsbGVlLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0pTQ2FsbGVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0pTQ2FsbGVl
X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSlNDYWxsZWVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ2FsbGVlLmg+CisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>