<?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>27956</bug_id>
          
          <creation_ts>2009-08-03 15:11:42 -0700</creation_ts>
          <short_desc>AX: roleValue should be cached for performance</short_desc>
          <delta_ts>2009-08-06 18:57:04 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136800</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 15:11:42 -0700</bug_when>
    <thetext>a lot of calls to roleValue can be made in the course of an AX object&apos;s lifetime. i think it would be beneficial to cache that value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136801</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 15:13:10 -0700</bug_when>
    <thetext>my initial testing shows a 5.1% speedup by caching the role value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136803</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 15:32:06 -0700</bug_when>
    <thetext>testing was done by navigating a web page and totaling the time spent in copyAttributeValue. Of course roleValue is called in other places, so this speedup will be felt in other places as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136804</commentid>
    <comment_count>3</comment_count>
      <attachid>34009</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 15:32:20 -0700</bug_when>
    <thetext>Created attachment 34009
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136808</commentid>
    <comment_count>4</comment_count>
      <attachid>34009</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-03 15:41:47 -0700</bug_when>
    <thetext>Comment on attachment 34009
patch

&gt; Index: WebCore/accessibility/AccessibilityImageMapLink.cpp
&gt; ===================================================================
&gt; --- WebCore/accessibility/AccessibilityImageMapLink.cpp	(revision 46732)
&gt; +++ WebCore/accessibility/AccessibilityImageMapLink.cpp	(working copy)
&gt; @@ -43,9 +43,10 @@ namespace WebCore {
&gt;  using namespace HTMLNames;
&gt;  
&gt;  AccessibilityImageMapLink::AccessibilityImageMapLink()
&gt; -    : m_areaElement(0), 
&gt; -      m_mapElement(0)
&gt; +    : m_areaElement(0)
&gt; +    , m_mapElement(0)
&gt;  {
&gt; +    m_role = WebCoreLinkRole;
&gt;  }

Initialization of this form should happen in the initialization list rather than via assignment in the constructor body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136810</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 15:42:54 -0700</bug_when>
    <thetext>m_role is a protected variable in AccessibilityObject. When i tried to initialize it in the constructor list, it wouldn&apos;t compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136812</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 15:49:07 -0700</bug_when>
    <thetext>specifically
/Volumes/data/WebKit/WebCore/accessibility/AccessibilityImageMapLink.cpp:48: error: class ‘WebCore::AccessibilityImageMapLink’ does not have any field named ‘m_role’</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136827</commentid>
    <comment_count>7</comment_count>
      <attachid>34009</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 16:09:06 -0700</bug_when>
    <thetext>Comment on attachment 34009
patch

obsoleting this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136839</commentid>
    <comment_count>8</comment_count>
      <attachid>34018</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-03 16:43:27 -0700</bug_when>
    <thetext>Created attachment 34018
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137009</commentid>
    <comment_count>9</comment_count>
      <attachid>34018</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 08:59:45 -0700</bug_when>
    <thetext>Comment on attachment 34018
patch

setRoleValue would normally take an argument.  Maybe initializeRoleValues() or determineRoleValues()?   Do determineRoleValue() and determineAriaRole() need to be separate, or can they just be both part of a determinRoleValue()?  Is this something we could just do on first access to roleValue()?  or do we need to call this explicitly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137013</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 09:07:03 -0700</bug_when>
    <thetext>i think we can re-word some of these methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137037</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 10:07:07 -0700</bug_when>
    <thetext>unfortunately, we have to determine the role at initialization because too many methods rely on roleValue() to be const (so we can&apos;t set the role in roleValue() the first time someone asks for it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137040</commentid>
    <comment_count>12</comment_count>
      <attachid>34073</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 10:14:02 -0700</bug_when>
    <thetext>Created attachment 34073
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137041</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-04 10:14:35 -0700</bug_when>
    <thetext>changed set*Role to updateAccessibilityRole()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137711</commentid>
    <comment_count>14</comment_count>
      <attachid>34073</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 18:15:36 -0700</bug_when>
    <thetext>Comment on attachment 34073
patch

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137732</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-08-06 18:57:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/46878</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34009</attachid>
            <date>2009-08-03 15:32:20 -0700</date>
            <delta_ts>2009-08-03 16:09:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19427</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjczNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMDktMDgtMDMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjc5NTYgLSBBWDogcm9sZVZhbHVlIHNob3VsZCBiZSBjYWNoZWQgZm9yIHBlcmZvcm1h
bmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk1
NgorCisgICAgICAgIENhY2hlcyB0aGUgcm9sZSB2YWx1ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9i
amVjdCBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGl0IGV2ZXJ5dGltZS4KKyAgICAgICAgVGhlIGNo
YW5nZXMgZ2FpbmVkIGEgNSUgc3BlZWR1cCB1c2luZyBWb2ljZU92ZXIgdG8gbmF2aWdhdGUgYSB3
ZWJwYWdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisK
KyAgICAgICAgVXNlIGdlbmVyaWMgcm9sZSBzZXR0ZXIgaW5zdGVhZCBvZiBzcGVjaWZpYyBBUklB
IHJvbGUgc2V0dGVyLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bms6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmspOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3Q6
OkFjY2Vzc2liaWxpdHlMaXN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlMaXN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveDo6QWNjZXNzaWJpbGl0
eUxpc3RCb3gpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3gu
aDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjpBY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdM
ZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpyb2xlVmFsdWUp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmhlYWRpbmdMZXZlbCk6CisKKyAgICAgICAgTWFrZSBoZWFkaW5nTGV2ZWwgaW50byBp
bnN0YW5jZSBtZXRob2Qgc28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGluIHRoZSBjb25zdHJ1Y3Rv
ci4KKworICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0Um9s
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRl
dGVybWluZVJvbGVWYWx1ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OkFjY2Vzc2li
aWxpdHlTbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlclRodW1i
OjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNsaWRlci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbjo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVy
Q29udGFpbmVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhl
YWRlckNvbnRhaW5lci5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5n
TGV2ZWwpOgorCiAyMDA5LTA4LTAzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5l
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5k
ZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDQ2NzMy
KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhUm9s
ZUNoYW5nZQogICAgICAgICByZXR1cm47CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0g
Z2V0T3JDcmVhdGUocmVuZGVyZXIpOwogICAgIGlmIChvYmogJiYgb2JqLT5pc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdCo+KG9iaiktPnNldEFyaWFSb2xlKCk7CisgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QqPihvYmopLT5zZXRSb2xlVmFsdWUoKTsKIH0KICNlbmRpZgog
ICAgIApJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rLmNwcAkocmV2aXNpb24gNDY3MzIpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkg
KzQzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmso
KQotICAgIDogbV9hcmVhRWxlbWVudCgwKSwgCi0gICAgICBtX21hcEVsZW1lbnQoMCkKKyAgICA6
IG1fYXJlYUVsZW1lbnQoMCkKKyAgICAsIG1fbWFwRWxlbWVudCgwKQogeworICAgIG1fcm9sZSA9
IFdlYkNvcmVMaW5rUm9sZTsKIH0KIAogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6fkFjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbmsoKQpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oCShyZXZpc2lvbiA0NjczMikKKysrIFdlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SFRNTE1hcEVsZW1lbnQo
SFRNTE1hcEVsZW1lbnQqIGVsZW1lbnQpIHsgbV9tYXBFbGVtZW50ID0gZWxlbWVudDsgfSAgICAK
ICAgICB2b2lkIHNldFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQpIHsgbV9wYXJl
bnQgPSBwYXJlbnQ7IH0KICAgICAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBy
b2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlTGlua1JvbGU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApJbmRl
eDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCShyZXZpc2lv
biA0NjczMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIEFjY2Vzc2liaWxpdHlMaXN0OjpBY2Nlc3NpYmlsaXR5TGlzdChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKIHsKKyAg
ICBtX3JvbGUgPSBMaXN0Um9sZTsKIH0KIAogQWNjZXNzaWJpbGl0eUxpc3Q6On5BY2Nlc3NpYmls
aXR5TGlzdCgpCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3Qu
aAkocmV2aXNpb24gNDY3MzIpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc09yZGVyZWRMaXN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0RlZmluaXRpb25MaXN0KCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIExpc3RSb2xlOyB9CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdDsKICAgICAKIH07CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHJldmlzaW9uIDQ2NzMyKQorKysgV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogQWNjZXNzaWJpbGl0eUxpc3RC
b3g6OkFjY2Vzc2liaWxpdHlMaXN0Qm94KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQogeworICAgIG1fcm9sZSA9IExpc3RC
b3hSb2xlOwogfQogCiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6fkFjY2Vzc2liaWxpdHlMaXN0Qm94
KCkKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5o
CShyZXZpc2lvbiA0NjczMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKSBjb25z
dDsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJik7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBMaXN0Qm94Um9sZTsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKSW5kZXg6IFdlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cAkocmV2aXNpb24gNDY3MzIpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6QWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24oKQogICAgIDogbV9vcHRpb25FbGVtZW50KDApCiB7CisgICAg
bV9yb2xlID0gTGlzdEJveE9wdGlvblJvbGU7CiB9CiAKIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0
aW9uOjp+QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24oKQpJbmRleDogV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgJKHJldmlzaW9uIDQ2
NzMyKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgc2V0SFRNTEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsgbV9vcHRpb25FbGVtZW50
ID0gZWxlbWVudDsgfQogICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gTGlzdEJveE9wdGlvblJvbGU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNFbmFi
bGVkKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCShyZXZpc2lvbiA0NjczMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eU9iamVjdCgpCiAgICAgOiBtX2lkKDApCiAgICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkK
KyAgICAsIG1fcm9sZShVbmtub3duUm9sZSkKICNpZiBQTEFURk9STShHVEspCiAgICAgLCBtX3dy
YXBwZXIoMCkKICNlbmRpZgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCShyZXZpc2lvbiA0NjczMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5U2hvdWxkVXNlVW5pcXVlSWQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QgIHsgcmV0dXJuIHRydWU7IH07CiAKKyAgICB2aXJ0dWFsIGludCBoZWFkaW5nTGV2
ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBpbnQgaW50VmFsdWUoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3Qg
eyByZXR1cm4gMC4wZjsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIDAuMGY7IH0KQEAgLTI4Niw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IFVua25vd25Sb2xlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9m
QXJpYVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhcmlh
Um9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
VW5rbm93blJvbGU7IH0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9sZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFBY2Nlc3Np
YmxpdHlOYW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAg
dmlydHVhbCBTdHJpbmcgYXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KQEAgLTQyOCw2ICs0MjksNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdW5zaWduZWQgbV9pZDsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9j
aGlsZHJlbjsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlQ2hpbGRyZW47CisgICAgQWNjZXNzaWJp
bGl0eVJvbGUgbV9yb2xlOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7
CiAgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cklu
ZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiA0NjczMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsOCBA
QCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5CiAgICAgOiBtX3JlbmRl
cmVyKHJlbmRlcmVyKQogICAgICwgbV9hcmlhUm9sZShVbmtub3duUm9sZSkKIHsKLSAgICBzZXRB
cmlhUm9sZSgpOworICAgIHNldFJvbGVWYWx1ZSgpOworCiAjaWZuZGVmIE5ERUJVRwogICAgIG1f
cmVuZGVyZXItPnNldEhhc0FYT2JqZWN0KHRydWUpOwogI2VuZGlmCkBAIC00MTYsMjMgKzQxNywy
MyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyCiAgICAgcmV0dXJu
IHZpZXdSZWN0LmlzRW1wdHkoKTsKIH0KIAotaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmhlYWRpbmdMZXZlbChOb2RlKiBub2RlKQoraW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmhlYWRpbmdMZXZlbCgpIGNvbnN0CiB7CiAgICAgLy8gaGVhZGluZ3MgY2FuIGJlIGluIGJsb2Nr
IGZsb3cgYW5kIG5vbi1ibG9jayBmbG93CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwogICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogYXhPYmplY3RGb3JOb2RlID0gbm9kZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShyZW5kZXJlcik7Ci0gICAgICAgIGlmIChheE9iamVjdEZvck5vZGUtPmFyaWFS
b2xlQXR0cmlidXRlKCkgPT0gSGVhZGluZ1JvbGUpIHsKLSAgICAgICAgICAgIGlmICghbm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAg
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIpLnRvSW50KCk7
Ci0gICAgICAgIH0KKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBIZWFkaW5nUm9sZSkg
IHsKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
b2RlKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmdldEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0
cikudG9JbnQoKTsKICAgICB9Ci0gICAgICAgICAgICAKLSAgICAKKwogICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKGgxVGFnKSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgCkBAIC03MzQsNyArNzM1
LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmludFZhbHVlKAogICAgICAgICBy
ZXR1cm4gMDsKICAgICAKICAgICBpZiAoaXNIZWFkaW5nKCkpCi0gICAgICAgIHJldHVybiBoZWFk
aW5nTGV2ZWwobV9yZW5kZXJlci0+bm9kZSgpKTsKKyAgICAgICAgcmV0dXJuIGhlYWRpbmdMZXZl
bCgpOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CiAgICAgaWYg
KCFub2RlIHx8ICFpc0NoZWNrYm94T3JSYWRpbygpKQpAQCAtMjI2OCwyNCArMjI2OSwyNSBAQCBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgcmV0dXJuIFVua25v
d25Sb2xlOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEFyaWFSb2xl
KCkKLXsKLSAgICBtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKLX0K
LQogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYVJvbGVB
dHRyaWJ1dGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2FyaWFSb2xlOwogfQorICAgIAordm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRSb2xlVmFsdWUoKQoreworICAgIG1fYXJp
YVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpOworICAgIG1fcm9sZSA9IGRldGVy
bWluZVJvbGVWYWx1ZSgpOworfQogCi1BY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojpyb2xlVmFsdWUoKSBjb25zdAorQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lUm9sZVZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBVbmtub3duUm9sZTsKICAgICAKICAgICBOb2Rl
KiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFS
b2xlID0gYXJpYVJvbGVBdHRyaWJ1dGUoKTsKLSAgICBpZiAoYXJpYVJvbGUgIT0gVW5rbm93blJv
bGUpCisgICAgaWYgKGFyaWFSb2xlICE9IFVua25vd25Sb2xlKSAKICAgICAgICAgcmV0dXJuIGFy
aWFSb2xlOwogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmlzTGluaygpKSB7CkBAIC0yMzM1
LDcgKzIzMzcsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAg
ICAgaWYgKG1fcmVuZGVyZXItPmlzTWVudUxpc3QoKSkKICAgICAgICAgcmV0dXJuIFBvcFVwQnV0
dG9uUm9sZTsKICAgICAKLSAgICBpZiAoaGVhZGluZ0xldmVsKG1fcmVuZGVyZXItPm5vZGUoKSkg
IT0gMCkKKyAgICBpZiAoaGVhZGluZ0xldmVsKCkgIT0gMCkKICAgICAgICAgcmV0dXJuIEhlYWRp
bmdSb2xlOwogICAgIAogICAgIGlmIChub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoZGRUYWcpKQpJ
bmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oCShyZXZpc2lvbiA0NjczMikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdDsKICAgICAKLSAgICBzdGF0aWMgaW50IGhlYWRpbmdMZXZlbChOb2RlKik7CisgICAgdmly
dHVhbCBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgaW50VmFsdWUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKQEAgLTEzNCw4ICsxMzQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFS
b2xlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxD
aGlsZHJlbigpIGNvbnN0OwotICAgIHZvaWQgc2V0QXJpYVJvbGUoKTsKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Um9sZVZhbHVl
KCk7CiAgICAgdmlydHVhbCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAg
ICAgCiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CkBAIC0yMzMs
NiArMjMyLDggQEAgcHJpdmF0ZToKIAogICAgIEVsZW1lbnQqIG1lbnVFbGVtZW50Rm9yTWVudUJ1
dHRvbigpIGNvbnN0OwogICAgIEVsZW1lbnQqIG1lbnVJdGVtRWxlbWVudEZvck1lbnUoKSBjb25z
dDsgCisgICAgCisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lUm9sZVZhbHVlKCkgY29u
c3Q7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBj
b25zdDsKIAogICAgIEludFJlY3QgY2hlY2tib3hPclJhZGlvUmVjdCgpIGNvbnN0OwpJbmRleDog
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2aXNp
b24gNDY3MzIpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIEFjY2Vzc2liaWxpdHlTbGlkZXI6OkFjY2Vzc2liaWxpdHlTbGlkZXIoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIp
CiB7CisgICAgbV9yb2xlID0gU2xpZGVyUm9sZTsKIH0KIAogUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5U2xpZGVyPiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKQEAgLTEyOCw2ICsxMjksNyBAQCBIVE1MSW5wdXRFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
U2xpZGVyOjplCiBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OkFjY2Vzc2liaWxpdHlTbGlkZXJU
aHVtYigpCiAgICAgOiBtX3BhcmVudFNsaWRlcigwKQogeworICAgIG1fcm9sZSA9IFNsaWRlclRo
dW1iUm9sZTsKIH0KIAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI+IEFjY2Vz
c2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCkKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkocmV2aXNpb24gNDY3MzIpCisrKyBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVNsaWRlcj4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgICAgICB2aXJ0
dWFsIH5BY2Nlc3NpYmlsaXR5U2xpZGVyKCkgeyB9CiAKLSAgICAgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTbGlkZXJSb2xlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CkBAIC03Miw3ICs3MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPiBjcmVhdGUoKTsKICAg
ICAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKCkgeyB9CiAKLSAgICAgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTbGlk
ZXJUaHVtYlJvbGU7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZvaWQgc2V0UGFyZW50T2Jq
ZWN0KEFjY2Vzc2liaWxpdHlTbGlkZXIqIHNsaWRlcikgeyBtX3BhcmVudFNsaWRlciA9IHNsaWRl
cjsgfQpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbi5jcHAJKHJldmlzaW9uIDQ2NzMyKQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bjo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKCkKICAgICA6IG1fcGFyZW50VGFibGUoMCkKIHsK
KyAgICBtX3JvbGUgPSBDb2x1bW5Sb2xlOwogfQogCiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46
On5BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4oKQpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAkocmV2aXNpb24gNDY3MzIpCisrKyBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUYWJsZTsgfQog
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwogICAgICAgICAKLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIENvbHVt
blJvbGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDb2x1bW4oKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcAkocmV2
aXNpb24gNDY3MzIpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
SGVhZGVyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXI6OkFjY2Vz
c2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcigpCiAgICAgOiBtX3BhcmVudFRhYmxlKDApCiB7
CisgICAgbV9yb2xlID0gVGFibGVIZWFkZXJDb250YWluZXJSb2xlOwogfQogCiBBY2Nlc3NpYmls
aXR5VGFibGVIZWFkZXJDb250YWluZXI6On5BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWlu
ZXIoKQpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRl
ckNvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaAkocmV2aXNpb24gNDY3MzIpCisrKyBXZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDggKzQzLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcj4gY3JlYXRlKCk7CiAgICAgdmlydHVh
bCB+QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyKCk7CiAgICAgCi0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBUYWJsZUhlYWRl
ckNvbnRhaW5lclJvbGU7IH0KLSAgICAKICAgICB2b2lkIHNldFBhcmVudFRhYmxlKEFjY2Vzc2li
aWxpdHlUYWJsZSogdGFibGUpIHsgbV9wYXJlbnRUYWJsZSA9IHRhYmxlOyB9CiAgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmVudFRhYmxlOyB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDQ2NzMyKQor
KysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcgKzM4NCwxMSBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldFNwZWxsaW5nCiAKIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0
SGVhZGluZ0xldmVsKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIE5TUmFuZ2UgcmFuZ2UpCiB7Ci0gICAgaW50IHBhcmVudEhlYWRp
bmdMZXZlbCA9IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlYWRpbmdMZXZlbChyZW5kZXJl
ci0+cGFyZW50KCktPm5vZGUoKSk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHJlbmRlcmVy
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyLT5wYXJl
bnQoKSk7CisgICAgaW50IHBhcmVudEhlYWRpbmdMZXZlbCA9IHBhcmVudE9iamVjdC0+aGVhZGlu
Z0xldmVsKCk7CiAgICAgCiAgICAgaWYgKHBhcmVudEhlYWRpbmdMZXZlbCkKICAgICAgICAgW2F0
dHJTdHJpbmcgYWRkQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHZhbHVlOltOU051bWJlciBu
dW1iZXJXaXRoSW50OnBhcmVudEhlYWRpbmdMZXZlbF0gcmFuZ2U6cmFuZ2VdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34018</attachid>
            <date>2009-08-03 16:43:27 -0700</date>
            <delta_ts>2009-08-04 09:07:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9344</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjczNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDgtMDMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjc5NTYgLSBBWDogcm9sZVZhbHVlIHNob3VsZCBiZSBjYWNoZWQgZm9yIHBlcmZvcm1h
bmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk1
NgorCisgICAgICAgIENhY2hlcyB0aGUgcm9sZSB2YWx1ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9i
amVjdCBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGl0IGV2ZXJ5dGltZS4KKyAgICAgICAgVGhlIGNo
YW5nZXMgZ2FpbmVkIGEgNSUgc3BlZWR1cCB1c2luZyBWb2ljZU92ZXIgdG8gbmF2aWdhdGUgYSB3
ZWJwYWdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisK
KyAgICAgICAgVXNlIGdlbmVyaWMgcm9sZSBzZXR0ZXIgaW5zdGVhZCBvZiBzcGVjaWZpYyBBUklB
IHJvbGUgc2V0dGVyLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0xldmVs
KToKKworICAgICAgICBNYWtlIGhlYWRpbmdMZXZlbCBpbnRvIGluc3RhbmNlIG1ldGhvZCBzbyB0
aGF0IGl0IGNhbiAqc2FmZWx5KiBiZSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpyb2xlVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlYWRp
bmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
bnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRSb2xlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZGV0ZXJtaW5lUm9sZVZhbHVlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0SGVh
ZGluZ0xldmVsKToKKwogMjAwOS0wOC0wMyAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gNDY3MzYpCisrKyBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
Myw3ICszNDMsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlCiAg
ICAgICAgIHJldHVybjsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXRPckNyZWF0
ZShyZW5kZXJlcik7CiAgICAgaWYgKG9iaiAmJiBvYmotPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4o
b2JqKS0+c2V0QXJpYVJvbGUoKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdCo+KG9iaiktPnNldFJvbGVWYWx1ZSgpOwogfQogI2VuZGlmCiAgICAgCkluZGV4
OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZp
c2lvbiA0NjczNikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eU9iamVjdCgpCiAgICAg
OiBtX2lkKDApCiAgICAgLCBtX2hhdmVDaGlsZHJlbihmYWxzZSkKKyAgICAsIG1fcm9sZShVbmtu
b3duUm9sZSkKICNpZiBQTEFURk9STShHVEspCiAgICAgLCBtX3dyYXBwZXIoMCkKICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZp
c2lvbiA0NjczNikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw2ICsyNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBh
Y2Nlc3NpYmlsaXR5U2hvdWxkVXNlVW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Owog
ICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgIHsgcmV0dXJu
IHRydWU7IH07CiAKKyAgICB2aXJ0dWFsIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAgICAgdmlydHVhbCBpbnQgaW50VmFsdWUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQog
ICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7
IH0KQEAgLTI4Niw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFVua25vd25Sb2xlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlv
bmFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gVW5rbm93blJvbGU7IH0KKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9sZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFBY2Nlc3NpYmxpdHlOYW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgYXJp
YUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmly
dHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KQEAgLTQyOCw2ICs0MjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdW5zaWduZWQgbV9p
ZDsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jaGlsZHJlbjsKICAgICBtdXRh
YmxlIGJvb2wgbV9oYXZlQ2hpbGRyZW47CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlOwog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBib29s
IGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lv
biA0NjczNikKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsOCBAQCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5CiAgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQogICAg
ICwgbV9hcmlhUm9sZShVbmtub3duUm9sZSkKIHsKLSAgICBzZXRBcmlhUm9sZSgpOworICAgIHNl
dFJvbGVWYWx1ZSgpOworCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fcmVuZGVyZXItPnNldEhhc0FY
T2JqZWN0KHRydWUpOwogI2VuZGlmCkBAIC00MTYsMjMgKzQxNywyMyBAQCBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzT2ZmU2NyCiAgICAgcmV0dXJuIHZpZXdSZWN0LmlzRW1wdHko
KTsKIH0KIAotaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlYWRpbmdMZXZlbChOb2Rl
KiBub2RlKQoraW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlYWRpbmdMZXZlbCgpIGNv
bnN0CiB7CiAgICAgLy8gaGVhZGluZ3MgY2FuIGJlIGluIGJsb2NrIGZsb3cgYW5kIG5vbi1ibG9j
ayBmbG93CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAg
ICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3RGb3JOb2Rl
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJl
cik7Ci0gICAgICAgIGlmIChheE9iamVjdEZvck5vZGUtPmFyaWFSb2xlQXR0cmlidXRlKCkgPT0g
SGVhZGluZ1JvbGUpIHsKLSAgICAgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50
LT5nZXRBdHRyaWJ1dGUoYXJpYV9sZXZlbEF0dHIpLnRvSW50KCk7Ci0gICAgICAgIH0KKyAgICBp
ZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBIZWFkaW5nUm9sZSkgIHsKKyAgICAgICAgaWYgKCFu
b2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKKyAgICAgICAgcmV0
dXJuIGVsZW1lbnQtPmdldEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0cikudG9JbnQoKTsKICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAKKwogICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGgxVGFnKSkK
ICAgICAgICAgcmV0dXJuIDE7CiAgICAgCkBAIC03MzQsNyArNzM1LDcgQEAgaW50IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmludFZhbHVlKAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAg
ICBpZiAoaXNIZWFkaW5nKCkpCi0gICAgICAgIHJldHVybiBoZWFkaW5nTGV2ZWwobV9yZW5kZXJl
ci0+bm9kZSgpKTsKKyAgICAgICAgcmV0dXJuIGhlYWRpbmdMZXZlbCgpOwogICAgIAogICAgIE5v
ZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CiAgICAgaWYgKCFub2RlIHx8ICFpc0NoZWNr
Ym94T3JSYWRpbygpKQpAQCAtMjI2OCwxNyArMjI2OSwxOCBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgcmV0dXJuIFVua25vd25Sb2xlOwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEFyaWFSb2xlKCkKLXsKLSAgICBtX2FyaWFS
b2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKLX0KLQogQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2FyaWFSb2xlOwogfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzZXRSb2xlVmFsdWUoKQoreworICAgIG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVB
cmlhUm9sZUF0dHJpYnV0ZSgpOworICAgIG1fcm9sZSA9IGRldGVybWluZVJvbGVWYWx1ZSgpOwor
fQogCi1BY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpyb2xlVmFs
dWUoKSBjb25zdAorQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZGV0ZXJtaW5lUm9sZVZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBVbmtub3duUm9sZTsKQEAgLTIzMzUsNyArMjMzNyw3IEBAIEFjY2Vzc2liaWxp
dHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmoKICAgICBpZiAobV9yZW5kZXJlci0+aXNNZW51
TGlzdCgpKQogICAgICAgICByZXR1cm4gUG9wVXBCdXR0b25Sb2xlOwogICAgIAotICAgIGlmICho
ZWFkaW5nTGV2ZWwobV9yZW5kZXJlci0+bm9kZSgpKSAhPSAwKQorICAgIGlmIChoZWFkaW5nTGV2
ZWwoKSAhPSAwKQogICAgICAgICByZXR1cm4gSGVhZGluZ1JvbGU7CiAgICAgCiAgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShkZFRhZykpCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDQ2NzM2KQor
KysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIAotICAgIHN0YXRpYyBp
bnQgaGVhZGluZ0xldmVsKE5vZGUqKTsKKyAgICB2aXJ0dWFsIGludCBoZWFkaW5nTGV2ZWwoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGludCBpbnRWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxv
YXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JS
YW5nZSgpIGNvbnN0OwpAQCAtMTM0LDggKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgYXJpYVJvbGVIYXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRBcmlhUm9sZSgpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVl
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSb2xlVmFsdWUoKTsKICAgICB2aXJ0dWFsIEFYT2JqZWN0
Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIEVsZW1lbnQq
IGFjdGlvbkVsZW1lbnQoKSBjb25zdDsKQEAgLTIzMyw2ICsyMzIsOCBAQCBwcml2YXRlOgogCiAg
ICAgRWxlbWVudCogbWVudUVsZW1lbnRGb3JNZW51QnV0dG9uKCkgY29uc3Q7CiAgICAgRWxlbWVu
dCogbWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpIGNvbnN0OyAKKyAgICAKKyAgICBBY2Nlc3NpYmls
aXR5Um9sZSBkZXRlcm1pbmVSb2xlVmFsdWUoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0OwogCiAgICAgSW50UmVjdCBjaGVj
a2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDQ2
NzM2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcgKzM4NCwxMSBAQCBzdGF0aWMgdm9pZCBB
WEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nCiAKIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3Ry
aW5nU2V0SGVhZGluZ0xldmVsKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcs
IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIE5TUmFuZ2UgcmFuZ2UpCiB7Ci0gICAgaW50IHBhcmVu
dEhlYWRpbmdMZXZlbCA9IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlYWRpbmdMZXZlbChy
ZW5kZXJlci0+cGFyZW50KCktPm5vZGUoKSk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHJl
bmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVy
LT5wYXJlbnQoKSk7CisgICAgaW50IHBhcmVudEhlYWRpbmdMZXZlbCA9IHBhcmVudE9iamVjdC0+
aGVhZGluZ0xldmVsKCk7CiAgICAgCiAgICAgaWYgKHBhcmVudEhlYWRpbmdMZXZlbCkKICAgICAg
ICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHZhbHVlOltOU051
bWJlciBudW1iZXJXaXRoSW50OnBhcmVudEhlYWRpbmdMZXZlbF0gcmFuZ2U6cmFuZ2VdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34073</attachid>
            <date>2009-08-04 10:14:02 -0700</date>
            <delta_ts>2009-08-06 18:15:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9873</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njc2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDgtMDQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjc5NTYgLSBBWDogcm9sZVZhbHVlIHNob3VsZCBiZSBjYWNoZWQgZm9yIHBlcmZvcm1h
bmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk1
NgorCisgICAgICAgIENhY2hlcyB0aGUgcm9sZSB2YWx1ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9i
amVjdCBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGl0IGV2ZXJ5dGltZS4KKyAgICAgICAgVGhlIGNo
YW5nZXMgZ2FpbmVkIGEgNSUgc3BlZWR1cCB1c2luZyBWb2ljZU92ZXIgdG8gbmF2aWdhdGUgYSB3
ZWJwYWdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFSb2xlQ2hhbmdlZCk6CisK
KyAgICAgICAgVXNlIGdlbmVyaWMgcm9sZSBzZXR0ZXIgaW5zdGVhZCBvZiBzcGVjaWZpYyBBUklB
IHJvbGUgc2V0dGVyLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVhZGluZ0xldmVs
KToKKworICAgICAgICBNYWtlIGhlYWRpbmdMZXZlbCBpbnRvIGluc3RhbmNlIG1ldGhvZCBzbyB0
aGF0IGl0IGNhbiAqc2FmZWx5KiBiZSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRSb2xlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cm9sZVZhbHVlKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoZWFkaW5n
TGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW50
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBk
YXRlQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoQVhBdHRy
aWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwpOgorCiAyMDA5LTA4LTAzICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9uIEhvbmV5
Y3V0dC4KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlz
aW9uIDQ2NzY4KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5k
bGVBcmlhUm9sZUNoYW5nZQogICAgICAgICByZXR1cm47CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqID0gZ2V0T3JDcmVhdGUocmVuZGVyZXIpOwogICAgIGlmIChvYmogJiYgb2JqLT5pc0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCo+KG9iaiktPnNldEFyaWFSb2xlKCk7CisgICAgICAgIHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihvYmopLT51cGRhdGVBY2Nlc3NpYmlsaXR5
Um9sZSgpOwogfQogI2VuZGlmCiAgICAgCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiA0Njc2OCkKKysrIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
NiArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eU9iamVjdCgpCiAgICAgOiBtX2lkKDApCiAgICAgLCBtX2hhdmVDaGls
ZHJlbihmYWxzZSkKKyAgICAsIG1fcm9sZShVbmtub3duUm9sZSkKICNpZiBQTEFURk9STShHVEsp
CiAgICAgLCBtX3dyYXBwZXIoMCkKICNlbmRpZgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA0Njc2OCkKKysrIFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2
ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhY2Nlc3NpYmlsaXR5U2hvdWxkVXNlVW5pcXVl
SWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9OwogICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QgIHsgcmV0dXJuIHRydWU7IH07CiAKKyAgICB2aXJ0dWFsIGlu
dCBoZWFkaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBpbnQgaW50
VmFsdWUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJh
bmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVG
b3JSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIDAuMGY7IH0KQEAgLTI4Nyw3ICsyODgsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZUF0dHJpYnV0ZSgpIGNv
bnN0IHsgcmV0dXJuIFVua25vd25Sb2xlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0
aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFsQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gVW5rbm93blJvbGU7IH0KKworICAgIHZvaWQgc2V0Um9sZVZhbHVlKEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGUpIHsgbV9yb2xlID0gcm9sZTsgfQorICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yb2xlOyB9CiAgICAgdmly
dHVhbCBTdHJpbmcgYXJpYUFjY2Vzc2libGl0eU5hbWUoY29uc3QgU3RyaW5nJikgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBhcmlhTGFiZWxlZEJ5QXR0cmli
dXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBhcmlh
RGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpAQCAtNDI5
LDYgKzQzMiw3IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2lkOwogICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVuOwogICAgIG11dGFibGUgYm9vbCBtX2hhdmVD
aGlsZHJlbjsKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDQ2NzY4KQorKysgV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MywxMCArODMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotICAgIDogbV9yZW5kZXJl
cihyZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlPYmplY3QoKQorICAgICwgbV9yZW5kZXJl
cihyZW5kZXJlcikKICAgICAsIG1fYXJpYVJvbGUoVW5rbm93blJvbGUpCiB7Ci0gICAgc2V0QXJp
YVJvbGUoKTsKKyAgICB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpOwogI2lmbmRlZiBOREVCVUcK
ICAgICBtX3JlbmRlcmVyLT5zZXRIYXNBWE9iamVjdCh0cnVlKTsKICNlbmRpZgpAQCAtNDE2LDIz
ICs0MTcsMjMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09mZlNjcgogICAg
IHJldHVybiB2aWV3UmVjdC5pc0VtcHR5KCk7CiB9CiAKLWludCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpoZWFkaW5nTGV2ZWwoTm9kZSogbm9kZSkKK2ludCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpoZWFkaW5nTGV2ZWwoKSBjb25zdAogewogICAgIC8vIGhlYWRpbmdzIGNhbiBiZSBp
biBibG9jayBmbG93IGFuZCBub24tYmxvY2sgZmxvdworICAgIGlmICghbV9yZW5kZXJlcikKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUo
KTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGF4T2JqZWN0Rm9yTm9kZSA9IG5vZGUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXIpOwotICAgICAgICBpZiAoYXhPYmplY3RGb3JOb2Rl
LT5hcmlhUm9sZUF0dHJpYnV0ZSgpID09IEhlYWRpbmdSb2xlKSB7Ci0gICAgICAgICAgICBpZiAo
IW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxBdHRyKS50
b0ludCgpOwotICAgICAgICB9CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gSGVhZGlu
Z1JvbGUpICB7CisgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obm9kZSk7CisgICAgICAgIHJldHVybiBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoYXJpYV9s
ZXZlbEF0dHIpLnRvSW50KCk7CiAgICAgfQotICAgICAgICAgICAgCi0gICAgCisKICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShoMVRhZykpCiAgICAgICAgIHJldHVybiAxOwogICAgIApAQCAtNzM0
LDcgKzczNSw3IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRWYWx1ZSgKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKGlzSGVhZGluZygpKQotICAgICAgICByZXR1
cm4gaGVhZGluZ0xldmVsKG1fcmVuZGVyZXItPm5vZGUoKSk7CisgICAgICAgIHJldHVybiBoZWFk
aW5nTGV2ZWwoKTsKICAgICAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwog
ICAgIGlmICghbm9kZSB8fCAhaXNDaGVja2JveE9yUmFkaW8oKSkKQEAgLTIyNzYsMjAgKzIyNzcs
MjIgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagogICAgIHJldHVy
biBVbmtub3duUm9sZTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRB
cmlhUm9sZSgpCi17Ci0gICAgbV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRl
KCk7Ci19Ci0KIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hcmlhUm9sZTsKIH0KLQot
QWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9sZVZhbHVlKCkg
Y29uc3QKKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRlQWNjZXNz
aWJpbGl0eVJvbGUoKQoreworICAgIG1fcm9sZSA9IGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCk7Cit9CisgICAgCitBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiB7CiAgICAgaWYgKCFtX3JlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7CisKKyAgICBtX2FyaWFSb2xlID0gZGV0ZXJtaW5l
QXJpYVJvbGVBdHRyaWJ1dGUoKTsKICAgICAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+
bm9kZSgpOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlID0gYXJpYVJvbGVBdHRyaWJ1
dGUoKTsKQEAgLTIzNDMsNyArMjM0Niw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmoKICAgICBpZiAobV9yZW5kZXJlci0+aXNNZW51TGlzdCgpKQogICAgICAgICBy
ZXR1cm4gUG9wVXBCdXR0b25Sb2xlOwogICAgIAotICAgIGlmIChoZWFkaW5nTGV2ZWwobV9yZW5k
ZXJlci0+bm9kZSgpKSAhPSAwKQorICAgIGlmIChoZWFkaW5nTGV2ZWwoKSAhPSAwKQogICAgICAg
ICByZXR1cm4gSGVhZGluZ1JvbGU7CiAgICAgCiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFn
TmFtZShkZFRhZykpCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDQ2NzY4KQorKysgV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIAotICAgIHN0YXRpYyBpbnQgaGVhZGluZ0xldmVsKE5v
ZGUqKTsKKyAgICB2aXJ0dWFsIGludCBoZWFkaW5nTGV2ZWwoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGludCBpbnRWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0OwpAQCAt
MTM1LDggKzEzNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGFy
aWFSb2xlQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9u
YWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXJpYVJvbGVIYXNQ
cmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRBcmlhUm9sZSgpOwot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Q7CisgICAgdm9p
ZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpOworICAgIAogICAgIHZpcnR1YWwgQVhPYmplY3RD
YWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgRWxlbWVudCog
YWN0aW9uRWxlbWVudCgpIGNvbnN0OwpAQCAtMjMzLDcgKzIzMyw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBhcmlhSXNIaWRkZW4oKSBjb25zdDsKIAogICAgIEVsZW1lbnQqIG1lbnVFbGVtZW50Rm9y
TWVudUJ1dHRvbigpIGNvbnN0OwotICAgIEVsZW1lbnQqIG1lbnVJdGVtRWxlbWVudEZvck1lbnUo
KSBjb25zdDsgCisgICAgRWxlbWVudCogbWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpIGNvbnN0Owor
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAgICAg
QWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdDsKIAog
ICAgIEludFJlY3QgY2hlY2tib3hPclJhZGlvUmVjdCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tCShyZXZpc2lvbiA0Njc2OCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4OCw3ICszODgsMTEg
QEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZwogCiBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQog
ewotICAgIGludCBwYXJlbnRIZWFkaW5nTGV2ZWwgPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpoZWFkaW5nTGV2ZWwocmVuZGVyZXItPnBhcmVudCgpLT5ub2RlKCkpOworICAgIGlmICghcmVu
ZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
YXJlbnRPYmplY3QgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShyZW5kZXJlci0+cGFyZW50KCkpOworICAgIGludCBwYXJlbnRIZWFkaW5nTGV2ZWwg
PSBwYXJlbnRPYmplY3QtPmhlYWRpbmdMZXZlbCgpOwogICAgIAogICAgIGlmIChwYXJlbnRIZWFk
aW5nTGV2ZWwpCiAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpAIkFYSGVhZGluZ0xl
dmVsIiB2YWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpwYXJlbnRIZWFkaW5nTGV2ZWxdIHJh
bmdlOnJhbmdlXTsK
</data>
<flag name="review"
          id="18241"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>