<?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>62777</bug_id>
          
          <creation_ts>2011-06-15 21:50:17 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add RunLoopEfl and WorkQueueEfl</short_desc>
          <delta_ts>2012-03-27 19:02:53 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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>
          <dependson>80119</dependson>
          <blocked>61838</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="YoungTaeck Song">youngtaeck.song</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>levin+threading</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>421766</commentid>
    <comment_count>0</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-15 21:50:17 -0700</bug_when>
    <thetext>Add RunLoopEfl and WorkQueueEfl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421783</commentid>
    <comment_count>1</comment_count>
      <attachid>97403</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-15 22:47:29 -0700</bug_when>
    <thetext>Created attachment 97403
Add RunLoopEfl and WorkQueueEfl for Efl port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421794</commentid>
    <comment_count>2</comment_count>
      <attachid>97403</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-15 23:18:19 -0700</bug_when>
    <thetext>Comment on attachment 97403
Add RunLoopEfl and WorkQueueEfl for Efl port

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

&gt; Source/WebKit2/Platform/WorkQueue.h:228
&gt; +    Mutex m_FdWorkItemsLock;

I think it is better to sort variables of same types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421808</commentid>
    <comment_count>3</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-15 23:51:16 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=97403&amp;action=review

&gt; Source/WebKit2/Platform/WorkQueue.h:57
&gt;  #if PLATFORM(QT)
&gt;  #include &lt;QSocketNotifier&gt;
&gt; -#include &quot;PlatformProcessIdentifier.h&quot;
&gt;  class QObject;
&gt;  class QThread;
&gt;  #elif PLATFORM(GTK)
&gt; -#include &quot;PlatformProcessIdentifier.h&quot;
&gt;  typedef struct _GMainContext GMainContext;
&gt;  typedef struct _GMainLoop GMainLoop;
&gt;  typedef gboolean (*GSourceFunc) (gpointer data);
&gt; +#elif PLATFORM(EFL)
&gt; +#include &lt;Ecore.h&gt;
&gt; +#endif
&gt; +
&gt; +#if PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
&gt; +#include &quot;PlatformProcessIdentifier.h&quot;
&gt;  #endif

Don&apos;t you forget to change PlatformProcessIdentifier.h?
Each port defines PlatformProcessIdentifier in PlatformProcessIdentifier.h
But, Efl port was missing if I remember correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421824</commentid>
    <comment_count>4</comment_count>
      <attachid>97412</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-16 00:30:38 -0700</bug_when>
    <thetext>Created attachment 97412
Modify PlatformProcessIdentifier.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421825</commentid>
    <comment_count>5</comment_count>
      <attachid>97412</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-16 00:37:52 -0700</bug_when>
    <thetext>Comment on attachment 97412
Modify PlatformProcessIdentifier.h

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

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Add RunLoopEfl and WorkQueueEfl for Efl port

Change patch description according to new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421836</commentid>
    <comment_count>6</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-16 01:09:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 97403 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97403&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:228
&gt; &gt; +    Mutex m_FdWorkItemsLock;
&gt; 
&gt; I think it is better to sort variables of same types.
I was ordered by the group. I think it is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421837</commentid>
    <comment_count>7</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-16 01:12:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97403&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:57
&gt; &gt;  #if PLATFORM(QT)
&gt; &gt;  #include &lt;QSocketNotifier&gt;
&gt; &gt; -#include &quot;PlatformProcessIdentifier.h&quot;
&gt; &gt;  class QObject;
&gt; &gt;  class QThread;
&gt; &gt;  #elif PLATFORM(GTK)
&gt; &gt; -#include &quot;PlatformProcessIdentifier.h&quot;
&gt; &gt;  typedef struct _GMainContext GMainContext;
&gt; &gt;  typedef struct _GMainLoop GMainLoop;
&gt; &gt;  typedef gboolean (*GSourceFunc) (gpointer data);
&gt; &gt; +#elif PLATFORM(EFL)
&gt; &gt; +#include &lt;Ecore.h&gt;
&gt; &gt; +#endif
&gt; &gt; +
&gt; &gt; +#if PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
&gt; &gt; +#include &quot;PlatformProcessIdentifier.h&quot;
&gt; &gt;  #endif
&gt; 
&gt; Don&apos;t you forget to change PlatformProcessIdentifier.h?
&gt; Each port defines PlatformProcessIdentifier in PlatformProcessIdentifier.h
&gt; But, Efl port was missing if I remember correctly.

Sorry, I missed it. I submitted the new patch including modificaton of PlatformProcessIdentifier.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421934</commentid>
    <comment_count>8</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-16 07:06:12 -0700</bug_when>
    <thetext>Informal r- from my side:

&gt; Source/WebKit2/Platform/RunLoop.h:111
&gt; +        static Eina_Bool timerFired(void* data);

Can you make this method non-static and move it and the attributes to the private section?

&gt; Source/WebKit2/Platform/RunLoop.h:174
&gt; +    static void wakeUpEvent(void* data, void* buf, unsigned int size);

Does it need to be static?

&gt; Source/WebKit2/Platform/WorkQueue.h:224
&gt; +    ThreadIdentifier m_workQueueThread;

Don&apos;t you need to initialize some of these attributes to sane values in the constructor?

&gt; Source/WebKit2/Platform/WorkQueue.h:234
&gt; +    static void* workQueueThread(WorkQueue*);

This name/signature is weird. You have m_workQueueThread, so a method called workQueueThread() is usually expected to return m_workQueueThread, not perform some random work and then just return 0 at the end (as you always return 0, I don&apos;t see why you return a void* by the way.

&gt; Source/WebKit2/Platform/WorkQueue.h:238
&gt; +    static Eina_Bool timerFired(void*);    

Does this function and the other need to be static?

&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:60
&gt; +    ((RunLoop*)data)-&gt;performWork();

C++ cast.

&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:69
&gt; +    : m_timer(0)

It&apos;s safer to also initialize m_isRepeating.

&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:80
&gt; +    RunLoop::TimerBase* timer = (RunLoop::TimerBase*)data;

C++ cast.

&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:97
&gt; +    m_timer = ecore_timer_add(fireInterval, timerFired, this);

Is there any risk of start() being called multiple times, thus leaking the previous timers?

&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:109
&gt; +    return m_timer;

You&apos;re implicitly casting an Ecore_Timer pointer into a bool. It&apos;s better to be explicit and use &quot;return (m_timer != 0);&quot;

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:125
&gt; +    WorkItemEfl* item = (WorkItemEfl*)data;

Please use a C++ cast here instead of a C one.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:134
&gt; +    ecore_timer_add(delay, timerFired, (void*)(new WorkItemEfl(item, this)));

Ditto (are you sure you really need to cast here?). Plus, don&apos;t you need to remove this timer later?

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:137
&gt; +Eina_Bool WorkQueue::exitHandler(void  * data, int type, void* event)

void* data, not void  * data

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:139
&gt; +    TermWorkItem* item = (TermWorkItem*)data;

C++ cast.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:140
&gt; +    Ecore_Exe_Event_Del* ev = (Ecore_Exe_Event_Del*)event;

C++ cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422023</commentid>
    <comment_count>9</comment_count>
      <attachid>97412</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-06-16 10:12:44 -0700</bug_when>
    <thetext>Comment on attachment 97412
Modify PlatformProcessIdentifier.h

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

&gt; Source/WebKit2/Platform/WorkQueue.h:222
&gt; +        public:
&gt; +            WorkItemEfl(PassOwnPtr&lt;WorkItem&gt; item, WorkQueue* queue) : m_item(item), m_queue(queue) { }
&gt; +            ~WorkItemEfl() { }
&gt; +    
&gt; +            WorkItem* item() const { return m_item.get(); }
&gt; +            WorkQueue* queue() const { return m_queue; }
&gt; +    
&gt; +        private:
&gt; +            OwnPtr&lt;WorkItem&gt; m_item;
&gt; +            WorkQueue* m_queue;
&gt; +    };
&gt; +    
&gt; +    class FdWorkItem : public WorkItemEfl {
&gt; +        public:
&gt; +            FdWorkItem(int fd, PassOwnPtr&lt;WorkItem&gt; item, WorkQueue* queue)   
&gt; +                : WorkItemEfl(item, queue), m_fd(fd) { }
&gt; +            ~FdWorkItem() { }
&gt; +            int fd() const { return m_fd; }
&gt; +    
&gt; +        private:
&gt; +            int m_fd;
&gt; +    };
&gt; +    
&gt; +    class TermWorkItem : public WorkItemEfl {
&gt; +        public:
&gt; +            TermWorkItem(int pid, PassOwnPtr&lt;WorkItem&gt; item, WorkQueue* queue)
&gt; +                : WorkItemEfl(item, queue), m_pid(pid) { }
&gt; +            ~TermWorkItem() { }
&gt; +            int pid() const { return m_pid; }
&gt; +    
&gt; +        private:
&gt; +            int m_pid;
&gt; +    };

The public: and private: should not be indented.  We also traditionally put each line of the initialization syntax on its own line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422484</commentid>
    <comment_count>10</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-17 01:28:14 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Informal r- from my side:
&gt; 
&gt; &gt; Source/WebKit2/Platform/RunLoop.h:111
&gt; &gt; +        static Eina_Bool timerFired(void* data);
&gt; 
&gt; Can you make this method non-static and move it and the attributes to the private section?

I&apos;m not sure I understand your meaning.

It should be static member method. 
Because ecore_timer_add function&apos;s 2th argument Ecore_Task_Cb is &quot;Eina_Bool (*) (void *data);&quot;
It can takes C++ static method or C function.
And It is already in the private section.

&gt; 
&gt; &gt; Source/WebKit2/Platform/RunLoop.h:174
&gt; &gt; +    static void wakeUpEvent(void* data, void* buf, unsigned int size);
&gt; 
&gt; Does it need to be static?

Same as above.

&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:224
&gt; &gt; +    ThreadIdentifier m_workQueueThread;
&gt; 
&gt; Don&apos;t you need to initialize some of these attributes to sane values in the constructor?

I don`t use this attribute.
So I&apos;ll remove m_workQueueThread in next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:234
&gt; &gt; +    static void* workQueueThread(WorkQueue*);
&gt; 
&gt; This name/signature is weird. You have m_workQueueThread, so a method called workQueueThread() is usually expected to return m_workQueueThread, not perform some random work and then just return 0 at the end (as you always return 0, I don&apos;t see why you return a void* by the way.

I&apos;ll remove m_workQueueThread in next patch. 
So I&apos;ll continue to use workQueueThread name.

And the type of workQueueThread should be &apos;void* (*)(void* argument);&apos;.
So I return 0.
workQueueThread is argument of createThread function.
( ThreadIdentifier createThread(ThreadFunction entryPoint, void* data, const char* name) )
ThreadFunction type is &apos;void* (*)(void* argument);&apos;

&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:238
&gt; &gt; +    static Eina_Bool timerFired(void*);    
&gt; 
&gt; Does this function and the other need to be static?

Same as above your first comment.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:60
&gt; &gt; +    ((RunLoop*)data)-&gt;performWork();
&gt; 
&gt; C++ cast.

Thanks. I&apos;ll fix it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:69
&gt; &gt; +    : m_timer(0)
&gt; 
&gt; It&apos;s safer to also initialize m_isRepeating.

I&apos;ll fix it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:80
&gt; &gt; +    RunLoop::TimerBase* timer = (RunLoop::TimerBase*)data;
&gt; 
&gt; C++ cast.

Thanks. I&apos;ll fix it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:97
&gt; &gt; +    m_timer = ecore_timer_add(fireInterval, timerFired, this);
&gt; 
&gt; Is there any risk of start() being called multiple times, thus leaking the previous timers?

You&apos;re right. Thanks. I&apos;ll fix it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:109
&gt; &gt; +    return m_timer;
&gt; 
&gt; You&apos;re implicitly casting an Ecore_Timer pointer into a bool. It&apos;s better to be explicit and use &quot;return (m_timer != 0);&quot;

&quot;return (m_timer != 0);&quot; generates webkit-style error like this.
&quot;Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons&quot;
So I&apos;ll use &quot;return (m_timer) ? true : false;&quot;

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:125
&gt; &gt; +    WorkItemEfl* item = (WorkItemEfl*)data;
&gt; 
&gt; Please use a C++ cast here instead of a C one.

I&apos;ll fix it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:134
&gt; &gt; +    ecore_timer_add(delay, timerFired, (void*)(new WorkItemEfl(item, this)));
&gt; 
&gt; Ditto (are you sure you really need to cast here?). Plus, don&apos;t you need to remove this timer later?

OK. I&apos;ll remove &quot;(void*)&quot;.
If timerFired return ECORE_CALLBACK_CANCEL, this timer will be automatically removed.
(http://docs.enlightenment.org/auto/ecore/group__Ecore__Time__Group.html#gad84e3e9e2b70a915ce9d44263666bb07)

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:137
&gt; &gt; +Eina_Bool WorkQueue::exitHandler(void  * data, int type, void* event)
&gt; 
&gt; void* data, not void  * data

My editor was weird. I&apos;ll fix it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:139
&gt; &gt; +    TermWorkItem* item = (TermWorkItem*)data;
&gt; 
&gt; C++ cast.

I&apos;ll fix it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:140
&gt; &gt; +    Ecore_Exe_Event_Del* ev = (Ecore_Exe_Event_Del*)event;
&gt; 
&gt; C++ cast.

I&apos;ll fix it in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422485</commentid>
    <comment_count>11</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-17 01:30:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 97412 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97412&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:222
&gt; &gt; +        public:
&gt; &gt; +            WorkItemEfl(PassOwnPtr&lt;WorkItem&gt; item, WorkQueue* queue) : m_item(item), m_queue(queue) { }
&gt; &gt; +            ~WorkItemEfl() { }
&gt; &gt; +    
&gt; &gt; +            WorkItem* item() const { return m_item.get(); }
&gt; &gt; +            WorkQueue* queue() const { return m_queue; }
&gt; &gt; +    
&gt; &gt; +        private:
&gt; &gt; +            OwnPtr&lt;WorkItem&gt; m_item;
&gt; &gt; +            WorkQueue* m_queue;
&gt; &gt; +    };
&gt; &gt; +    
&gt; &gt; +    class FdWorkItem : public WorkItemEfl {
&gt; &gt; +        public:
&gt; &gt; +            FdWorkItem(int fd, PassOwnPtr&lt;WorkItem&gt; item, WorkQueue* queue)   
&gt; &gt; +                : WorkItemEfl(item, queue), m_fd(fd) { }
&gt; &gt; +            ~FdWorkItem() { }
&gt; &gt; +            int fd() const { return m_fd; }
&gt; &gt; +    
&gt; &gt; +        private:
&gt; &gt; +            int m_fd;
&gt; &gt; +    };
&gt; &gt; +    
&gt; &gt; +    class TermWorkItem : public WorkItemEfl {
&gt; &gt; +        public:
&gt; &gt; +            TermWorkItem(int pid, PassOwnPtr&lt;WorkItem&gt; item, WorkQueue* queue)
&gt; &gt; +                : WorkItemEfl(item, queue), m_pid(pid) { }
&gt; &gt; +            ~TermWorkItem() { }
&gt; &gt; +            int pid() const { return m_pid; }
&gt; &gt; +    
&gt; &gt; +        private:
&gt; &gt; +            int m_pid;
&gt; &gt; +    };
&gt; 
&gt; The public: and private: should not be indented.  We also traditionally put each line of the initialization syntax on its own line.

Thanks. I&apos;ll fix it at the next patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422494</commentid>
    <comment_count>12</comment_count>
      <attachid>97562</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-17 02:01:03 -0700</bug_when>
    <thetext>Created attachment 97562
patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422563</commentid>
    <comment_count>13</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-17 05:00:06 -0700</bug_when>
    <thetext>It looks much better to me. Thanks for the clarifications WRT the static methods, I needed to brush up that part of my C++ fu :)

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:82
&gt; +    int ret;

I don&apos;t think you actually need this variable, you could call select directly in the if clause below.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:130
&gt; +int WorkQueue::getNextTimerID()

Vector::size() returns a size_t, you should keep the same return type.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:150
&gt; +    int timerId = getNextTimerID();

Remember to change timerId&apos;s type when you change getNextTimerID().

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:160
&gt; +        item-&gt;queue()-&gt;scheduleWorkAndWakeUp(item);

Isn&apos;t item leaking if item-&gt;pid() != ev-&gt;pid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425049</commentid>
    <comment_count>14</comment_count>
      <attachid>98123</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-21 23:41:11 -0700</bug_when>
    <thetext>Created attachment 98123
patch.

rewrite scheduleWorkOnTermination</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425051</commentid>
    <comment_count>15</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-21 23:47:42 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; It looks much better to me. Thanks for the clarifications WRT the static methods, I needed to brush up that part of my C++ fu :)
&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:82
&gt; &gt; +    int ret;
&gt; 
&gt; I don&apos;t think you actually need this variable, you could call select directly in the if clause below.
&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:130
&gt; &gt; +int WorkQueue::getNextTimerID()
&gt; 
&gt; Vector::size() returns a size_t, you should keep the same return type.
&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:150
&gt; &gt; +    int timerId = getNextTimerID();
&gt; 
&gt; Remember to change timerId&apos;s type when you change getNextTimerID().
&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:160
&gt; &gt; +        item-&gt;queue()-&gt;scheduleWorkAndWakeUp(item);
&gt; 
&gt; Isn&apos;t item leaking if item-&gt;pid() != ev-&gt;pid?

Thanks for your comments.
I fixed it at next fetch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425202</commentid>
    <comment_count>16</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-22 07:21:21 -0700</bug_when>
    <thetext>I think it looks OK now, informal r+ from my side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426039</commentid>
    <comment_count>17</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-23 02:08:30 -0700</bug_when>
    <thetext>All of code is fine to me without below blanks

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

&gt; Source/WebKit2/Platform/WorkQueue.h:205
&gt; +    

please remove unnecessary blank at end of line.

&gt; Source/WebKit2/Platform/WorkQueue.h:208
&gt; +        FdWorkItem(int fd, PassOwnPtr&lt;WorkItem&gt; item, WorkQueue* queue)   

Ditto.

&gt; Source/WebKit2/Platform/WorkQueue.h:233
&gt; +    

Ditto.

&gt; Source/WebKit2/Platform/WorkQueue.h:253
&gt; +    static Eina_Bool timerFired(void*);    

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429427</commentid>
    <comment_count>18</comment_count>
      <attachid>99039</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-06-28 22:24:34 -0700</bug_when>
    <thetext>Created attachment 99039
fetch

Add EFL initialization function in RunLoop::RunLoop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429553</commentid>
    <comment_count>19</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-29 06:13:13 -0700</bug_when>
    <thetext>&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:62
&gt; +    eina_shutdown();

You are not calling eina_init() in the constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447062</commentid>
    <comment_count>20</comment_count>
      <attachid>103044</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2011-08-04 23:25:25 -0700</bug_when>
    <thetext>Created attachment 103044
fetch

Bug Fetch.
- remove the code calling eina_shutdown(), I&apos;m not calling eina_init().
- In WorkQueue::performFdWork(), Add the code reading pipe. because select() can&apos;t block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447276</commentid>
    <comment_count>21</comment_count>
      <attachid>103044</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-08-05 10:42:12 -0700</bug_when>
    <thetext>Comment on attachment 103044
fetch

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

Informal r- for the reasons below.

&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:13
&gt; + * Copyright (C) 2011 Samsung Electronics. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;

Is this provided by Apple or Samsung? Please review the license before submitting the file.

&gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:108
&gt; +    Eina_Bool ret;
&gt; +
&gt; +    timer-&gt;fired();
&gt; +    
&gt; +    if (!timer-&gt;m_isRepeating) {
&gt; +        timer-&gt;m_timer = 0;
&gt; +        ret = ECORE_CALLBACK_CANCEL;
&gt; +    } else
&gt; +        ret = ECORE_CALLBACK_RENEW;
&gt; +
&gt; +    return ret;

Just a minor nit, but ``ret&apos;&apos; variable could be removed and this function could be written as:

RunLoop::TimerBase* timer = ...;

timer-&gt;fired();

if (!timer-&gt;m_isRepeating) {
   timer-&gt;m_timer = 0;
   return ECORE_CALLBACK_CANCEL;
}

return ECORE_CALLBACK_RENEW;

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:55
&gt; +void WorkQueue::platformInvalidate()
&gt; +{
&gt; +    close(m_readFd);
&gt; +    close(m_writeFd);
&gt; +
&gt; +    for (size_t i = 0; i &lt; m_timers.size(); ++i)
&gt; +        ecore_timer_del(m_timers[i]);

Is there any chance this could be called from more than one thread? If so, protecting this with a mutex (see GTK impl.) would be a good idea.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:60
&gt; +void WorkQueue::performWork()
&gt; +{
&gt; +    m_workItemQueueLock.lock();

I&apos;d prefer if a MutexLocker were used here. Manual mutex locking/unlocking is very fragile.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:78
&gt; +    fd_set readfds = m_fds;

Use ``readFdSet&apos;&apos; or something like that instead of ``readfds&apos;&apos;.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:122
&gt; +    if (write(m_writeFd, &quot;w&quot;, 1) == -1) // WakeUp WorkQueue Thread
&gt; +        LOG_ERROR(&quot;WakeUp WorkQueue Thread Failed&quot;);

Please use proper sentences on comments and log messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528717</commentid>
    <comment_count>22</comment_count>
      <attachid>120929</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-01-03 03:53:40 -0800</bug_when>
    <thetext>Created attachment 120929
fetch for RunLoopEfl and WorkQueueEfl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528719</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-03 03:55:41 -0800</bug_when>
    <thetext>Attachment 120929 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/Platform/WorkQueue.h:55:  &quot;PlatformProcessIdentifier.h&quot; already included at Source/WebKit2/Platform/WorkQueue.h:46  [build/include] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528726</commentid>
    <comment_count>24</comment_count>
      <attachid>120932</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-01-03 04:34:20 -0800</bug_when>
    <thetext>Created attachment 120932
fetch for RunLoopEfl and WorkQueueEfl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528731</commentid>
    <comment_count>25</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-01-03 04:42:52 -0800</bug_when>
    <thetext>Very sorry I&apos;m late to answer.

(In reply to comment #21)
&gt; (From update of attachment 103044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103044&amp;action=review
&gt; 
&gt; Informal r- for the reasons below.
&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:13
&gt; &gt; + * Copyright (C) 2011 Samsung Electronics. All rights reserved.
&gt; &gt; + *
&gt; &gt; + * Redistribution and use in source and binary forms, with or without
&gt; &gt; + * modification, are permitted provided that the following conditions
&gt; &gt; + * are met:
&gt; &gt; + * 1. Redistributions of source code must retain the above copyright
&gt; &gt; + *    notice, this list of conditions and the following disclaimer.
&gt; &gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; &gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; &gt; + *    documentation and/or other materials provided with the distribution.
&gt; &gt; + *
&gt; &gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt; 
&gt; Is this provided by Apple or Samsung? Please review the license before submitting the file.

===&gt; I fixed it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/RunLoopEfl.cpp:108
&gt; &gt; +    Eina_Bool ret;
&gt; &gt; +
&gt; &gt; +    timer-&gt;fired();
&gt; &gt; +    
&gt; &gt; +    if (!timer-&gt;m_isRepeating) {
&gt; &gt; +        timer-&gt;m_timer = 0;
&gt; &gt; +        ret = ECORE_CALLBACK_CANCEL;
&gt; &gt; +    } else
&gt; &gt; +        ret = ECORE_CALLBACK_RENEW;
&gt; &gt; +
&gt; &gt; +    return ret;
&gt; 
&gt; Just a minor nit, but ``ret&apos;&apos; variable could be removed and this function could be written as:
&gt; 
&gt; RunLoop::TimerBase* timer = ...;
&gt; 
&gt; timer-&gt;fired();
&gt; 
&gt; if (!timer-&gt;m_isRepeating) {
&gt;    timer-&gt;m_timer = 0;
&gt;    return ECORE_CALLBACK_CANCEL;
&gt; }
&gt; 
&gt; return ECORE_CALLBACK_RENEW;

==&gt; I fixed it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:55
&gt; &gt; +void WorkQueue::platformInvalidate()
&gt; &gt; +{
&gt; &gt; +    close(m_readFd);
&gt; &gt; +    close(m_writeFd);
&gt; &gt; +
&gt; &gt; +    for (size_t i = 0; i &lt; m_timers.size(); ++i)
&gt; &gt; +        ecore_timer_del(m_timers[i]);
&gt; 
&gt; Is there any chance this could be called from more than one thread? If so, protecting this with a mutex (see GTK impl.) would be a good idea.

==&gt; I modified WorkQueue::platformInvalidate() in the next patch.
The functions in WorkQueue::platformInvalidate() are all thread-safe.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:60
&gt; &gt; +void WorkQueue::performWork()
&gt; &gt; +{
&gt; &gt; +    m_workItemQueueLock.lock();
&gt; 
&gt; I&apos;d prefer if a MutexLocker were used here. Manual mutex locking/unlocking is very fragile.

===&gt; MutexLocker has block scope. 
But m_workItemQueueLock should be unlock in the middle of WorkQueue::performWork().
(Please see WIN impl.)

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:78
&gt; &gt; +    fd_set readfds = m_fds;
&gt; 
&gt; Use ``readFdSet&apos;&apos; or something like that instead of ``readfds&apos;&apos;.

==&gt; I fixed it in the next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:122
&gt; &gt; +    if (write(m_writeFd, &quot;w&quot;, 1) == -1) // WakeUp WorkQueue Thread
&gt; &gt; +        LOG_ERROR(&quot;WakeUp WorkQueue Thread Failed&quot;);
&gt; 
&gt; Please use proper sentences on comments and log messages.

==&gt; I fixed it in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539323</commentid>
    <comment_count>26</comment_count>
      <attachid>123263</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-01-20 00:36:06 -0800</bug_when>
    <thetext>Created attachment 123263
fetch for RunLoopEfl and WorkQueueEfl 

Because RunLoop was moved to the webcore, I submit the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565325</commentid>
    <comment_count>27</comment_count>
      <attachid>123263</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-02-26 22:14:31 -0800</bug_when>
    <thetext>Comment on attachment 123263
fetch for RunLoopEfl and WorkQueueEfl 

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

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:49
&gt; +    m_pipe = ecore_pipe_add(wakeUpEvent, this);

Can we use OwnPtr for this ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565345</commentid>
    <comment_count>28</comment_count>
      <attachid>128957</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-02-26 22:48:41 -0800</bug_when>
    <thetext>Created attachment 128957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565996</commentid>
    <comment_count>29</comment_count>
      <attachid>128957</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-27 14:58:24 -0800</bug_when>
    <thetext>Comment on attachment 128957
Patch

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

The WorkItem implementation looks very convoluted and I don&apos;t see why you are not using Ecore_Pipe, Ecore_Main_Loop and friends to make things easier to read. Plus I&apos;d move most of the declarations and implementations in WorkQueue.h to the .cpp file itself as private structs/classes.

&gt; Source/WebCore/platform/RunLoop.h:106
&gt; +        Ecore_Timer* m_timer;

In the spirit of using OwnPtrs, what if you use an OwnPtr here? You&apos;d be able to remove most of the checks for m_timer and calls to ecore_timer_del() in the implementation.

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:28
&gt; +#include &lt;stdio.h&gt;
&gt; +#include &lt;unistd.h&gt;

I don&apos;t think these headers are needed.

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:33
&gt; +#define WAKEUP_ECORE_PIPE_MESSAGE   &quot;W&quot;
&gt; +#define ECORE_PIPE_MESSAGE_SIZE     1

I&apos;d rather have proper static const variables here instead (and preferably alphabetically sorted).

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:49
&gt; +    if (!ecore_init())
&gt; +        ASSERT_NOT_REACHED();
&gt; +
&gt; +    if (!ecore_evas_init())
&gt; +        ASSERT_NOT_REACHED();
&gt; +
&gt; +    if (!ecore_file_init())
&gt; +        ASSERT_NOT_REACHED();
&gt; +
&gt; +    if (!edje_init())
&gt; +        ASSERT_NOT_REACHED();

ASSERT_NOT_REACHED will only have any effect in debug builds. Do you really need to initialize these here, or are these libraries initialized beforehand as well?

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:59
&gt; +    edje_shutdown();
&gt; +    ecore_file_shutdown();
&gt; +    ecore_evas_shutdown();
&gt; +    ecore_shutdown();

If you conditionally init the modules in the constructor, you shouldn&apos;t unconditionally shut everything down in the destructor.

&gt; Source/WebKit2/Platform/WorkQueue.h:247
&gt; +    Vector&lt;RefPtr&lt;FdWorkItem&gt; &gt; m_FdWorkItems;

Style: m_fdWorkItems

&gt; Source/WebKit2/Platform/WorkQueue.h:252
&gt; +    static HashMap&lt;WebKit::PlatformProcessIdentifier, RefPtr&lt;WorkItemEfl&gt; &gt; m_termWorkItems;

Why static?

&gt; Source/WebKit2/Platform/WorkQueue.h:261
&gt; +    void sendMessageToThread(const char*);
&gt; +    static void* workQueueThread(WorkQueue*);
&gt; +    void scheduleWorkAndWakeUp(PassRefPtr&lt;WorkItemEfl&gt;);
&gt; +    void performWork();
&gt; +    void performFdWork();
&gt; +    size_t getNextTimerID();
&gt; +    static bool timerFired(void*);
&gt; +    static bool exitHandler(void*, int, void*);

I don&apos;t see why you didn&apos;t defined those as static functions in the cpp file.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:28
&gt; +#define WAKEUP_THREAD_MESSAGE   &quot;W&quot;
&gt; +#define FINISH_THREAD_MESSAGE   &quot;F&quot;
&gt; +#define THREAD_MESSAGE_SIZE     1

Same thing about using static const&apos;s here.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:42
&gt; +    ecore_event_handler_add(ECORE_EXE_EVENT_DEL, reinterpret_cast&lt;Eina_Bool(*)(void*, int, void*)&gt;(exitHandler), 0);

Does reinterpred_cast&lt;Ecore_Event_Handler_Cb&gt;(exitHandler) work?

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:82
&gt; +                LOG_ERROR(&quot;Failed to read from WorkQueueThread pipe&quot;);

Don&apos;t you need wtf/Assertions.h for LOG_ERROR?

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:118
&gt; +    for (size_t i = 0; i &lt; m_FdWorkItems.size(); ++i)
&gt; +        if (m_FdWorkItems[i]-&gt;fd() != fd)

Vector::find(). You might consider using a HashMap so you don&apos;t have an O(n) search here.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:121
&gt; +    m_FdWorkItems.append(adoptRef(new FdWorkItem(fd, function, this)));

Isn&apos;t the FdWorkItem object leaking?

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:137
&gt; +    scheduleWorkAndWakeUp(adoptRef(new WorkItemEfl(function, this)));

Isn&apos;t the WorkItemEfl object being leaked?

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:143
&gt; +size_t WorkQueue::getNextTimerID()
&gt; +{
&gt; +    return m_timers.size();
&gt; +}

This is not necessary if you pass a handle to the right item in m_timers.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:158
&gt; +    m_timers[timerId] = ecore_timer_add(delay, reinterpret_cast&lt;Eina_Bool(*)(void*)&gt;(timerFired), new TimerWorkItem(timerId, function, this));

reinterpret_cast&lt;Ecore_Task_Cb&gt;(timerFired)? Isn&apos;t the TimerWorkItem object being leaked?

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:173
&gt; +    return false;

I&apos;d rather be explicit and return ECORE_CALLBACK_CANCEL.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:179
&gt; +    m_termWorkItems.set(process, new WorkItemEfl(function, this));

Isn&apos;t the WorkItemEfl object being leaked?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569439</commentid>
    <comment_count>30</comment_count>
      <attachid>129848</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-02 01:59:12 -0800</bug_when>
    <thetext>Created attachment 129848
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569453</commentid>
    <comment_count>31</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-02 02:12:21 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 128957 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128957&amp;action=review
&gt; 
&gt; The WorkItem implementation looks very convoluted and I don&apos;t see why you are not using Ecore_Pipe, Ecore_Main_Loop and friends to make things easier to read. 

I can&apos;t use Ecore_Pipe, Because Ecore has limatation for threaded main loop.
Other ports, like GTK, Main loop can run on the thread. 
But Ecore does not.
So I made smallest version of Ecore_Main_Loop, WorkQueue::workQueueThread.

In other words, Ecore_Pipe&apos;s handler run on the Ecore_Main_Loop.
But I want pipe&apos;s handler on the thread.

&gt; Plus I&apos;d move most of the declarations and implementations in WorkQueue.h to the .cpp file itself as private structs/classes.

You have a point. but I do not want to have other forms of Other ports.

&gt; 
&gt; &gt; Source/WebCore/platform/RunLoop.h:106
&gt; &gt; +        Ecore_Timer* m_timer;
&gt; 
&gt; In the spirit of using OwnPtrs, what if you use an OwnPtr here? You&apos;d be able to remove most of the checks for m_timer and calls to ecore_timer_del() in the implementation.

You&apos;re right.
I added the codes using OwnPtrs.

&gt; 
&gt; &gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:28
&gt; &gt; +#include &lt;stdio.h&gt;
&gt; &gt; +#include &lt;unistd.h&gt;
&gt; 
&gt; I don&apos;t think these headers are needed.

Thanks, I fixed that at next patch.

&gt; 
&gt; &gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:33
&gt; &gt; +#define WAKEUP_ECORE_PIPE_MESSAGE   &quot;W&quot;
&gt; &gt; +#define ECORE_PIPE_MESSAGE_SIZE     1
&gt; 
&gt; I&apos;d rather have proper static const variables here instead (and preferably alphabetically sorted).

Ok, I fixed that at next patch.

&gt; 
&gt; &gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:49
&gt; &gt; +    if (!ecore_init())
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +
&gt; &gt; +    if (!ecore_evas_init())
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +
&gt; &gt; +    if (!ecore_file_init())
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +
&gt; &gt; +    if (!edje_init())
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; ASSERT_NOT_REACHED will only have any effect in debug builds. Do you really need to initialize these here, or are these libraries initialized beforehand as well?

Sure, RunLoop is wrapper of Ecore_Main_Loop, So  they&apos;re needed to initialize here.
And I changed this code like WebKit1&apos;s ewk_init().

&gt; 
&gt; &gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:59
&gt; &gt; +    edje_shutdown();
&gt; &gt; +    ecore_file_shutdown();
&gt; &gt; +    ecore_evas_shutdown();
&gt; &gt; +    ecore_shutdown();
&gt; 
&gt; If you conditionally init the modules in the constructor, you shouldn&apos;t unconditionally shut everything down in the destructor.

It is customary style of EFL. 
Please see EFL code internally.
There are many example for that.

&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:247
&gt; &gt; +    Vector&lt;RefPtr&lt;FdWorkItem&gt; &gt; m_FdWorkItems;
&gt; 
&gt; Style: m_fdWorkItems

Ok, I fixed that at next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:252
&gt; &gt; +    static HashMap&lt;WebKit::PlatformProcessIdentifier, RefPtr&lt;WorkItemEfl&gt; &gt; m_termWorkItems;
&gt; 
&gt; Why static?

It is used in static function WorkQueue::exitHandler.

&gt; 
&gt; &gt; Source/WebKit2/Platform/WorkQueue.h:261
&gt; &gt; +    void sendMessageToThread(const char*);
&gt; &gt; +    static void* workQueueThread(WorkQueue*);
&gt; &gt; +    void scheduleWorkAndWakeUp(PassRefPtr&lt;WorkItemEfl&gt;);
&gt; &gt; +    void performWork();
&gt; &gt; +    void performFdWork();
&gt; &gt; +    size_t getNextTimerID();
&gt; &gt; +    static bool timerFired(void*);
&gt; &gt; +    static bool exitHandler(void*, int, void*);
&gt; 
&gt; I don&apos;t see why you didn&apos;t defined those as static functions in the cpp file.

I don&apos;t know what you mean.
You mean that &quot;void* WorkQueue::workQueueThread(WorkQueue* workQueue) {} &quot; change to &quot;static void* WorkQueue::workQueueThread(WorkQueue* workQueue) {} &quot; in the cpp file?
It won&apos;t be compiled.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:28
&gt; &gt; +#define WAKEUP_THREAD_MESSAGE   &quot;W&quot;
&gt; &gt; +#define FINISH_THREAD_MESSAGE   &quot;F&quot;
&gt; &gt; +#define THREAD_MESSAGE_SIZE     1
&gt; 
&gt; Same thing about using static const&apos;s here.

Ok, I fixed that at next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:42
&gt; &gt; +    ecore_event_handler_add(ECORE_EXE_EVENT_DEL, reinterpret_cast&lt;Eina_Bool(*)(void*, int, void*)&gt;(exitHandler), 0);
&gt; 
&gt; Does reinterpred_cast&lt;Ecore_Event_Handler_Cb&gt;(exitHandler) work?

Ok, I fixed that at next patch.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:82
&gt; &gt; +                LOG_ERROR(&quot;Failed to read from WorkQueueThread pipe&quot;);
&gt; 
&gt; Don&apos;t you need wtf/Assertions.h for LOG_ERROR?

Yes, don&apos;t need wtf/Assertions.h.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:118
&gt; &gt; +    for (size_t i = 0; i &lt; m_FdWorkItems.size(); ++i)
&gt; &gt; +        if (m_FdWorkItems[i]-&gt;fd() != fd)
&gt; 
&gt; Vector::find(). You might consider using a HashMap so you don&apos;t have an O(n) search here.

I can&apos;t use Vector::find(). Because m_FdWorkItems&apos;s value is not &apos;int fd&apos; but &apos;FdWorkItem&apos;

void WorkQueue::performFdWork()
{
    if (select(m_maxFd + 1, &amp;readFdSet, 0, 0, 0) &gt;= 0) {
......
        for (size_t i = 0; i &lt; m_fdWorkItems.size(); ++i) {
            if (FD_ISSET(m_fdWorkItems[i]-&gt;fd(), &amp;readFdSet))
                m_fdWorkItems[i]-&gt;execute();
        }
This code are main parts using m_fdWorkItems about select(). They always have to examine all fd.
So I think it&apos;s not good to use HashMap.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:121
&gt; &gt; +    m_FdWorkItems.append(adoptRef(new FdWorkItem(fd, function, this)));
&gt; 
&gt; Isn&apos;t the FdWorkItem object leaking?

It&apos;s using RefPtr. It will be freed automatically.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:137
&gt; &gt; +    scheduleWorkAndWakeUp(adoptRef(new WorkItemEfl(function, this)));
&gt; 
&gt; Isn&apos;t the WorkItemEfl object being leaked?

It&apos;s using RefPtr. It will be freed automatically.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:143
&gt; &gt; +size_t WorkQueue::getNextTimerID()
&gt; &gt; +{
&gt; &gt; +    return m_timers.size();
&gt; &gt; +}
&gt; 
&gt; This is not necessary if you pass a handle to the right item in m_timers.

Ok, I removed getNextTimerID().
But I still need timerId for &apos;new TimerWorkItem&apos;.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:158
&gt; &gt; +    m_timers[timerId] = ecore_timer_add(delay, reinterpret_cast&lt;Eina_Bool(*)(void*)&gt;(timerFired), new TimerWorkItem(timerId, function, this));
&gt; 
&gt; reinterpret_cast&lt;Ecore_Task_Cb&gt;(timerFired)? Isn&apos;t the TimerWorkItem object being leaked?

Ok, I fixed that at next patch about Ecore_Task_Cb.
And TimerWorkItem is wrapped in RefPtr. It will be freed automatically.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:173
&gt; &gt; +    return false;
&gt; 
&gt; I&apos;d rather be explicit and return ECORE_CALLBACK_CANCEL.

WebKit reviewers were ordered not to use EFL specifics like ECORE_CALLBACK_CANCEL.
We have to use &apos;false&apos; instead of ECORE_CALLBACK_CANCEL.

&gt; 
&gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:179
&gt; &gt; +    m_termWorkItems.set(process, new WorkItemEfl(function, this));
&gt; 
&gt; Isn&apos;t the WorkItemEfl object being leaked?

It&apos;s using RefPtr. It will be freed automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569490</commentid>
    <comment_count>32</comment_count>
      <attachid>129848</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-02 03:09:57 -0800</bug_when>
    <thetext>Comment on attachment 129848
patch

Attachment 129848 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11751882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571754</commentid>
    <comment_count>33</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-06 05:08:11 -0800</bug_when>
    <thetext>Addressing the easier points first, the rest will come as time allows :)

(In reply to comment #31)
&gt; (In reply to comment #29)
&gt; &gt; Plus I&apos;d move most of the declarations and implementations in WorkQueue.h to the .cpp file itself as private structs/classes.
&gt; 
&gt; You have a point. but I do not want to have other forms of Other ports.

It&apos;s mostly Windows which declares a lot of stuff in WorkQueue.h.
 
&gt; &gt; &gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:59
&gt; &gt; &gt; +    edje_shutdown();
&gt; &gt; &gt; +    ecore_file_shutdown();
&gt; &gt; &gt; +    ecore_evas_shutdown();
&gt; &gt; &gt; +    ecore_shutdown();
&gt; &gt; 
&gt; &gt; If you conditionally init the modules in the constructor, you shouldn&apos;t unconditionally shut everything down in the destructor.
&gt; 
&gt; It is customary style of EFL. 
&gt; Please see EFL code internally.
&gt; There are many example for that.

No, it&apos;s not. Suppose ecore_evas_init() fails in the constructor. When you call edje_shutdown() in the destructor its internal counter will drop below 0, as the calls to init() and shutdown() are not balanced.

&gt; &gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:82
&gt; &gt; &gt; +                LOG_ERROR(&quot;Failed to read from WorkQueueThread pipe&quot;);
&gt; &gt; 
&gt; &gt; Don&apos;t you need wtf/Assertions.h for LOG_ERROR?
&gt; 
&gt; Yes, don&apos;t need wtf/Assertions.h.

My point is that wtf/Assertions.h is being included indirectly from some other header, it&apos;d be safer to include it directly to avoid this kind of unseen dependency.

&gt; &gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:173
&gt; &gt; &gt; +    return false;
&gt; &gt; 
&gt; &gt; I&apos;d rather be explicit and return ECORE_CALLBACK_CANCEL.
&gt; 
&gt; WebKit reviewers were ordered not to use EFL specifics like ECORE_CALLBACK_CANCEL.
&gt; We have to use &apos;false&apos; instead of ECORE_CALLBACK_CANCEL.

Eh? I don&apos;t think there&apos;s any rule like that set in stone. I only remember we talked about using bool instead of Eina_Bool whenever possible. Using ECORE_CALLBACK_CANCEL in this context makes it much more explicit what the return value actually means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573690</commentid>
    <comment_count>34</comment_count>
      <attachid>130789</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-08 00:32:22 -0800</bug_when>
    <thetext>Created attachment 130789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573697</commentid>
    <comment_count>35</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-08 00:54:04 -0800</bug_when>
    <thetext>Thank you for kind review.
Please review next patch.(https://bugs.webkit.org/attachment.cgi?id=130789&amp;action=review)

(In reply to comment #33)
&gt; Addressing the easier points first, the rest will come as time allows :)
&gt; 
&gt; (In reply to comment #31)
&gt; &gt; (In reply to comment #29)
&gt; &gt; &gt; Plus I&apos;d move most of the declarations and implementations in WorkQueue.h to the .cpp file itself as private structs/classes.
&gt; &gt; 
&gt; &gt; You have a point. but I do not want to have other forms of Other ports.
&gt; 
&gt; It&apos;s mostly Windows which declares a lot of stuff in WorkQueue.h.

Ok. I moved TimerWorkItem class to cpp file. and removed WorkItemEfl and FdWorkItem class.

&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:59
&gt; &gt; &gt; &gt; +    edje_shutdown();
&gt; &gt; &gt; &gt; +    ecore_file_shutdown();
&gt; &gt; &gt; &gt; +    ecore_evas_shutdown();
&gt; &gt; &gt; &gt; +    ecore_shutdown();
&gt; &gt; &gt; 
&gt; &gt; &gt; If you conditionally init the modules in the constructor, you shouldn&apos;t unconditionally shut everything down in the destructor.
&gt; &gt; 
&gt; &gt; It is customary style of EFL. 
&gt; &gt; Please see EFL code internally.
&gt; &gt; There are many example for that.
&gt; 
&gt; No, it&apos;s not. Suppose ecore_evas_init() fails in the constructor. When you call edje_shutdown() in the destructor its internal counter will drop below 0, as the calls to init() and shutdown() are not balanced.

Ok, I see your point.
I fixed that at next patch.

&gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:82
&gt; &gt; &gt; &gt; +                LOG_ERROR(&quot;Failed to read from WorkQueueThread pipe&quot;);
&gt; &gt; &gt; 
&gt; &gt; &gt; Don&apos;t you need wtf/Assertions.h for LOG_ERROR?
&gt; &gt; 
&gt; &gt; Yes, don&apos;t need wtf/Assertions.h.
&gt; 
&gt; My point is that wtf/Assertions.h is being included indirectly from some other header, it&apos;d be safer to include it directly to avoid this kind of unseen dependency.

Ok, I fixed that at next patch.

&gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:173
&gt; &gt; &gt; &gt; +    return false;
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;d rather be explicit and return ECORE_CALLBACK_CANCEL.
&gt; &gt; 
&gt; &gt; WebKit reviewers were ordered not to use EFL specifics like ECORE_CALLBACK_CANCEL.
&gt; &gt; We have to use &apos;false&apos; instead of ECORE_CALLBACK_CANCEL.
&gt; 
&gt; Eh? I don&apos;t think there&apos;s any rule like that set in stone. I only remember we talked about using bool instead of Eina_Bool whenever possible. Using ECORE_CALLBACK_CANCEL in this context makes it much more explicit what the return value actually means.

Sorry, I got a wrong information. 
I fixed that at next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573703</commentid>
    <comment_count>36</comment_count>
      <attachid>130792</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-08 01:06:46 -0800</bug_when>
    <thetext>Created attachment 130792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573727</commentid>
    <comment_count>37</comment_count>
      <attachid>130792</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-08 02:03:10 -0800</bug_when>
    <thetext>Comment on attachment 130792
Patch

Attachment 130792 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11863258</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580113</commentid>
    <comment_count>38</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-15 21:28:46 -0700</bug_when>
    <thetext>youngtaeck,
please rebase the patch for the green bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580131</commentid>
    <comment_count>39</comment_count>
      <attachid>132195</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-15 21:54:09 -0700</bug_when>
    <thetext>Created attachment 132195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585960</commentid>
    <comment_count>40</comment_count>
      <attachid>133406</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-22 18:42:50 -0700</bug_when>
    <thetext>Created attachment 133406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586186</commentid>
    <comment_count>41</comment_count>
      <attachid>133406</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-23 02:19:19 -0700</bug_when>
    <thetext>Comment on attachment 133406
Patch

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

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:-2
&gt; - * Copyright (C) 2012 ProFUSION embedded systems. All rights reserved.

IMO, just adding &apos;Copyright (C) 2012 Samsung Electronics&apos; is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586188</commentid>
    <comment_count>42</comment_count>
      <attachid>133448</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-23 02:34:51 -0700</bug_when>
    <thetext>Created attachment 133448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587392</commentid>
    <comment_count>43</comment_count>
      <attachid>133448</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-25 17:52:13 -0700</bug_when>
    <thetext>Comment on attachment 133448
Patch

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

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:38
&gt; +static const char* const wakupEcorePipeMessage = &quot;W&quot;;

Nitpick, static const char wakeupEcorePipeMessage[] = &quot;W&quot;;

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:48
&gt; +        goto errorEcore;

how about removing errorEcore and returning ?

&gt; Source/WebKit2/Platform/WorkQueue.h:188
&gt; +    class TimerWorkItem;

IMO, this is unnecessary.

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:49
&gt; +static const char* const finishThreadMessage = &quot;F&quot;;
&gt; +static const char* const wakupThreadMessage = &quot;W&quot;;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587393</commentid>
    <comment_count>44</comment_count>
      <attachid>133707</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-25 18:16:29 -0700</bug_when>
    <thetext>Created attachment 133707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587400</commentid>
    <comment_count>45</comment_count>
      <attachid>133707</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-25 18:44:48 -0700</bug_when>
    <thetext>Comment on attachment 133707
Patch

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

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:109
&gt; +RunLoop::TimerBase::TimerBase(RunLoop* runLoop)

Let&apos;s remove runLoop if we don&apos;t need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587413</commentid>
    <comment_count>46</comment_count>
      <attachid>133717</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-25 19:27:53 -0700</bug_when>
    <thetext>Created attachment 133717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587419</commentid>
    <comment_count>47</comment_count>
      <attachid>133721</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-25 19:33:47 -0700</bug_when>
    <thetext>Created attachment 133721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587427</commentid>
    <comment_count>48</comment_count>
      <attachid>133721</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-25 19:51:00 -0700</bug_when>
    <thetext>Comment on attachment 133721
Patch

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

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:163
&gt; +void WorkQueue::scheduleWorkAndWakeUp(const Function&lt;void()&gt;&amp; function)
&gt; +{
&gt; +    if (function.isNull())
&gt; +        return;
&gt; +
&gt; +    MutexLocker locker(m_workItemQueueLock);
&gt; +    m_workItemQueue.append(function);
&gt; +    sendMessageToThread(wakupThreadMessage);
&gt; +}
&gt; +
&gt; +void WorkQueue::dispatch(const Function&lt;void()&gt;&amp; function)
&gt; +{
&gt; +    scheduleWorkAndWakeUp(function);
&gt; +}
&gt; +

Sorry about incremental review.

But, I think that scheduleWorkAndWakeUp is also unnecessary.

And 
I am not sure but `ASSERT(function.isNull())` is better than `if (function.isNull())`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587428</commentid>
    <comment_count>49</comment_count>
      <attachid>133725</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-25 19:55:50 -0700</bug_when>
    <thetext>Created attachment 133725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587429</commentid>
    <comment_count>50</comment_count>
      <attachid>133726</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-25 20:35:16 -0700</bug_when>
    <thetext>Created attachment 133726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587430</commentid>
    <comment_count>51</comment_count>
      <attachid>133726</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-25 20:46:00 -0700</bug_when>
    <thetext>Comment on attachment 133726
Patch

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

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:99
&gt; +void RunLoop::wakeUpEvent(void* data, void* buf, unsigned int size)

Trivial nit : It looks *buffer* is better than *buf*

&gt; Source/WebKit2/Platform/efl/WorkQueueEfl.cpp:140
&gt; +void WorkQueue::unregisterSocketEventHandler(int fd)

ditto. Abbreviation is not WebKit coding style. It looks we can use fileDescriptor instead of fd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587433</commentid>
    <comment_count>52</comment_count>
      <attachid>133727</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-25 21:24:11 -0700</bug_when>
    <thetext>Created attachment 133727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587434</commentid>
    <comment_count>53</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-03-25 21:26:03 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; Created an attachment (id=133727) [details]
&gt; Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587435</commentid>
    <comment_count>54</comment_count>
      <attachid>133727</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-25 21:28:14 -0700</bug_when>
    <thetext>Comment on attachment 133727
Patch

Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587436</commentid>
    <comment_count>55</comment_count>
      <attachid>133727</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-25 21:51:09 -0700</bug_when>
    <thetext>Comment on attachment 133727
Patch

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

I haven&apos;t read the whole patch yet, but it looks better than the previous versions. I&apos;m a bit unconvinced that using plain select(2) is the best approach here, as it has its fair share of scalability problems. Have you considered using poll() instead, for example?

&gt; Source/WebCore/platform/RunLoop.h:171
&gt; +    static void wakeUpEvent(void*, void*, unsigned int);

Let me nitpick a bit more :-)

In general, declarations of methods with basic data types, such as int or void* are expected to contain variable names, as it is not clear at first sight what they are supposed to mean.

&gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:44
&gt; +    m_initEfl = false;

Nitpicking a bit more, this kind of variable initialization should be done before the constructor body:
  RunLoop::RunLoop()
      : m_initEfl(false)
  {
  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587505</commentid>
    <comment_count>56</comment_count>
      <attachid>133739</attachid>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-26 00:03:21 -0700</bug_when>
    <thetext>Created attachment 133739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587509</commentid>
    <comment_count>57</comment_count>
    <who name="YoungTaeck Song">youngtaeck.song</who>
    <bug_when>2012-03-26 00:25:27 -0700</bug_when>
    <thetext>Thank you for spending much time about this patch.

(In reply to comment #55)
&gt; (From update of attachment 133727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133727&amp;action=review
&gt; 
&gt; I haven&apos;t read the whole patch yet, but it looks better than the previous versions. I&apos;m a bit unconvinced that using plain select(2) is the best approach here, as it has its fair share of scalability problems. Have you considered using poll() instead, for example?
&gt; 

I don&apos;t know about select()&apos;s fair share of scalability problems. Can you explain to me?
In my patch, just two file descriptor is checked, So I think that there is no difference no matter what I use poll, select and epoll.
(I checked this web page. http://daniel.haxx.se/docs/poll-vs-select.html)
When I made this code, I saw Ecore Main Loop source as a reference.
Ecore Main Loop are using select().

&gt; &gt; Source/WebCore/platform/RunLoop.h:171
&gt; &gt; +    static void wakeUpEvent(void*, void*, unsigned int);
&gt; 
&gt; Let me nitpick a bit more :-)
&gt; 
&gt; In general, declarations of methods with basic data types, such as int or void* are expected to contain variable names, as it is not clear at first sight what they are supposed to mean.

I fixed that as follow, &quot;static void wakeUpEvent(void* data, void*, unsigned int);&quot;
because 2,3 arguments are not used.

&gt; 
&gt; &gt; Source/WebCore/platform/efl/RunLoopEfl.cpp:44
&gt; &gt; +    m_initEfl = false;
&gt; 
&gt; Nitpicking a bit more, this kind of variable initialization should be done before the constructor body:
&gt;   RunLoop::RunLoop()
&gt;       : m_initEfl(false)
&gt;   {
&gt;   }

fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589541</commentid>
    <comment_count>58</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-27 18:24:54 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; I don&apos;t know about select()&apos;s fair share of scalability problems. Can you explain to me?
&gt; In my patch, just two file descriptor is checked, So I think that there is no difference no matter what I use poll, select and epoll.
&gt; (I checked this web page. http://daniel.haxx.se/docs/poll-vs-select.html)
&gt; When I made this code, I saw Ecore Main Loop source as a reference.
&gt; Ecore Main Loop are using select().

One of the links I had in mind when I mentioned selects()&apos;s scalability problems was &lt;http://www.kegel.com/c10k.html&gt;.

Now that we&apos;ve talked about this more in depth over IRC, I guess there isn&apos;t much more to say from my side. Informal rs+, as WebKit2 isn&apos;t one of the things I&apos;m most involved with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589546</commentid>
    <comment_count>59</comment_count>
      <attachid>133739</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-27 18:34:01 -0700</bug_when>
    <thetext>Comment on attachment 133739
Patch

rubberstamping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589576</commentid>
    <comment_count>60</comment_count>
      <attachid>133739</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 19:02:33 -0700</bug_when>
    <thetext>Comment on attachment 133739
Patch

Clearing flags on attachment: 133739

Committed r112353: &lt;http://trac.webkit.org/changeset/112353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589577</commentid>
    <comment_count>61</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 19:02:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97403</attachid>
            <date>2011-06-15 22:47:29 -0700</date>
            <delta_ts>2011-06-16 00:30:38 -0700</delta_ts>
            <desc>Add RunLoopEfl and WorkQueueEfl for Efl port</desc>
            <filename>patch_file.patch</filename>
            <type>text/plain</type>
            <size>16242</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYWUxZjUyLi41NDUyMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTEtMDYtMTUgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
RUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3CisKKyAgICAgICAgQWRkIFJ1
bkxvb3BFZmwgYW5kIFdvcmtRdWV1ZUVmbCBmb3IgRWZsIHBvcnQKKworICAgICAgICAqIFBsYXRm
b3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpvcGVu
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9SdW5Mb29wLmg6CisgICAgICAgICogUGxhdGZvcm0vV29y
a1F1ZXVlLmg6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpXb3JrSXRlbUVmbCk6
CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0ZW1FZmwpOgorICAgICAg
ICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6aXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6Oldv
cmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OkZkV29y
a0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjp+RmRXb3JrSXRlbSk6Cisg
ICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OmZkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
VGVybVdvcmtJdGVtOjpUZXJtV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUZXJtV29y
a0l0ZW06On5UZXJtV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUZXJtV29ya0l0ZW06
OnBpZCk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAgICAoUnVuTG9vcDo6flJ1bkxvb3ApOgor
ICAgICAgICAoUnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFJ1bkxvb3A6OnN0b3ApOgorICAgICAg
ICAoUnVuTG9vcDo6d2FrZVVwRXZlbnQpOgorICAgICAgICAoUnVuTG9vcDo6d2FrZVVwKToKKyAg
ICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJhc2U6OnRp
bWVyRmlyZWQpOgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAg
IChSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNl
Ojppc0FjdGl2ZSk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAo
V29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJm
b3JtV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmspOgorICAgICAgICAo
V29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpyZWdpc3Rl
ckZkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2Fr
ZVVwKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FmdGVy
RGVsYXkpOgorICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3Jr
UXVldWU6OnNjaGVkdWxlV29ya09uVGVybWluYXRpb24pOgorCiAyMDExLTA2LTE1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCm9sZCBt
b2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNWMzZWQxZC4uOGM1M2I1YgotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQAog
Y2xhc3MgUVNvY2tldE5vdGlmaWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjZW5kaWYKIApA
QCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKLSNlbGlmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjZWxpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25P
blByb2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIpOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3Vu
aXgvQ29ubmVjdGlvblVuaXguY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggODAyY2FhZS4uNjc1ZmU3MgotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTM1Niw2ICszNTYsOCBAQCBib29sIENv
bm5lY3Rpb246Om9wZW4oKQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIG1fY29ubmVjdGlvblF1
ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgKEdfSU9f
SFVQIHwgR19JT19FUlIpLCBXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsICZDb25uZWN0aW9uOjpjb25u
ZWN0aW9uRGlkQ2xvc2UpKTsKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291
cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIEdfSU9fSU4sIFdvcmtJdGVtOjpjcmVhdGUo
dGhpcywgJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIpKTsKKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckZkRXZlbnRIYW5kbGVyKG1fc29ja2V0
RGVzY3JpcHRvciwgV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAmQ29ubmVjdGlvbjo6cmVhZHlSZWFk
SGFuZGxlcikpOwogI2VuZGlmCiAKICAgICAvLyBTY2hlZHVsZSBhIGNhbGwgdG8gcmVhZHlSZWFk
SGFuZGxlci4gRGF0YSBtYXkgaGF2ZSBhcnJpdmVkIGJlZm9yZSBpbnN0YWxsYXRpb24gb2YgdGhl
IHNpZ25hbApAQCAtNDU3LDcgKzQ1OSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKIHZvaWQgQ29u
bmVjdGlvbjo6c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24oV2Vi
S2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3MpCiB7CiAgICAgbV9jb25uZWN0
aW9uUXVldWUuc2NoZWR1bGVXb3JrT25UZXJtaW5hdGlvbihwcm9jZXNzLCBXb3JrSXRlbTo6Y3Jl
YXRlKHRoaXMsICZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL1J1bkxvb3AuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDBkZWQ3
OTMuLmUxNjliYmQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzksOCBAQCB0eXBl
ZGVmIHN0cnVjdCBfR1NvdXJjZSBHU291cmNlOwogdHlwZWRlZiBzdHJ1Y3QgX0dNYWluTG9vcCBH
TWFpbkxvb3A7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Db250ZXh0IEdNYWluQ29udGV4dDsKIHR5
cGVkZWYgaW50IGdib29sZWFuOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPEVjb3Jl
Lmg+CiAjZW5kaWYKIAogY2xhc3MgV29ya0l0ZW07CkBAIC0xMDUsNiArMTA3LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBjbGVhclRpbWVyU291cmNlKCk7CiAgICAgICAgIEdSZWZQdHI8R1Nv
dXJjZT4gbV90aW1lclNvdXJjZTsKICAgICAgICAgZ2Jvb2xlYW4gbV9pc1JlcGVhdGluZzsKKyNl
bGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgc3RhdGljIEVpbmFfQm9vbCB0aW1lckZpcmVkKHZv
aWQqIGRhdGEpOworICAgICAgICBFY29yZV9UaW1lciogbV90aW1lcjsKKyAgICAgICAgYm9vbCBt
X2lzUmVwZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTYzLDYgKzE2OSw5IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgR01haW5Db250ZXh0KiBtX3J1bkxvb3BDb250ZXh0OwogICAgIEdN
YWluTG9vcCogbV9ydW5Mb29wTWFpbjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBFY29yZV9Q
aXBlKiBtX1BpcGU7CisgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9p
ZCogYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vV29ya1F1ZXVlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3NGQ2
MDU1Li4yODNhNjQ3Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCkBAIC00MiwxNCArNDIsMTgg
QEAKIAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KLSNpbmNs
dWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiBjbGFzcyBRT2JqZWN0OwogY2xhc3Mg
UVRocmVhZDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmgiCiB0eXBlZGVmIHN0cnVjdCBfR01haW5Db250ZXh0IEdNYWluQ29udGV4dDsK
IHR5cGVkZWYgc3RydWN0IF9HTWFpbkxvb3AgR01haW5Mb29wOwogdHlwZWRlZiBnYm9vbGVhbiAo
KkdTb3VyY2VGdW5jKSAoZ3BvaW50ZXIgZGF0YSk7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5j
bHVkZSA8RWNvcmUuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIu
aCIKICNlbmRpZgogCiBjbGFzcyBXb3JrUXVldWUgewpAQCAtOTAsNiArOTQsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQsIGludCwgUGFzc093blB0
cjxXb3JrSXRlbT4pOwogICAgIHZvaWQgdW5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQp
OwogICAgIHZvaWQgc2NoZWR1bGVXb3JrT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJv
Y2Vzc0lkZW50aWZpZXIsIFBhc3NPd25QdHI8V29ya0l0ZW0+KTsKKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyAgICB2b2lkIHJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50LCBQYXNzT3duUHRyPFdvcmtJ
dGVtPik7CisgICAgdm9pZCBzY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllciwgUGFzc093blB0cjxXb3JrSXRlbT4pOwogI2VuZGlmCiAKIHBy
aXZhdGU6CkBAIC0xNzgsNiArMTg1LDU4IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3Vy
Y2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJj
ZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRl
cmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY2xh
c3MgV29ya0l0ZW1FZmwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya0l0ZW1FZmw+
IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgV29ya0l0ZW1FZmwoUGFzc093blB0cjxX
b3JrSXRlbT4gaXRlbSwgV29ya1F1ZXVlKiBxdWV1ZSkgOiBtX2l0ZW0oaXRlbSksIG1fcXVldWUo
cXVldWUpIHsgfQorICAgICAgICAgICAgfldvcmtJdGVtRWZsKCkgeyB9CisgICAgCisgICAgICAg
ICAgICBXb3JrSXRlbSogaXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbS5nZXQoKTsgfQorICAg
ICAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKyAg
ICAKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIE93blB0cjxXb3JrSXRlbT4gbV9pdGVt
OworICAgICAgICAgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOworICAgIH07CisgICAgCisgICAgY2xh
c3MgRmRXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7CisgICAgICAgIHB1YmxpYzoKKyAg
ICAgICAgICAgIEZkV29ya0l0ZW0oaW50IGZkLCBQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVtLCBX
b3JrUXVldWUqIHF1ZXVlKSAgIAorICAgICAgICAgICAgICAgIDogV29ya0l0ZW1FZmwoaXRlbSwg
cXVldWUpLCBtX2ZkKGZkKSB7IH0KKyAgICAgICAgICAgIH5GZFdvcmtJdGVtKCkgeyB9CisgICAg
ICAgICAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBtX2ZkOyB9CisgICAgCisgICAgICAgIHBy
aXZhdGU6CisgICAgICAgICAgICBpbnQgbV9mZDsKKyAgICB9OworICAgIAorICAgIGNsYXNzIFRl
cm1Xb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7CisgICAgICAgIHB1YmxpYzoKKyAgICAg
ICAgICAgIFRlcm1Xb3JrSXRlbShpbnQgcGlkLCBQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVtLCBX
b3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgICAgIDogV29ya0l0ZW1FZmwoaXRlbSwgcXVl
dWUpLCBtX3BpZChwaWQpIHsgfQorICAgICAgICAgICAgflRlcm1Xb3JrSXRlbSgpIHsgfQorICAg
ICAgICAgICAgaW50IHBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGlkOyB9CisgICAgCisgICAgICAg
IHByaXZhdGU6CisgICAgICAgICAgICBpbnQgbV9waWQ7CisgICAgfTsKKyAgICAKKyAgICBUaHJl
YWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0
ZW1FZmw+ID4gbV93b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7
CisgICAgVmVjdG9yPFJlZlB0cjxGZFdvcmtJdGVtPiA+IG1fRmRXb3JrSXRlbXM7CisgICAgTXV0
ZXggbV9GZFdvcmtJdGVtc0xvY2s7CisgICAgaW50IG1fbWF4RmQ7CisgICAgZmRfc2V0IG1fZmRz
OworICAgIGludCBtX3JlYWRGZDsKKyAgICBpbnQgbV93cml0ZUZkOworCisgICAgc3RhdGljIHZv
aWQqIHdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKKyAgICB2b2lkIHNjaGVkdWxlV29ya0Fu
ZFdha2VVcChXb3JrSXRlbUVmbCopOworICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKKyAgICB2b2lk
IHBlcmZvcm1GZFdvcmsoKTsKKyAgICBzdGF0aWMgRWluYV9Cb29sIHRpbWVyRmlyZWQodm9pZCop
OyAgICAKKyAgICBzdGF0aWMgRWluYV9Cb29sIGV4aXRIYW5kbGVyKHZvaWQqLCBpbnQsIHZvaWQq
KTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZs
L1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ5MTU2NzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAg
LTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJv
bmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKworI2luY2x1ZGUgIldvcmtJdGVtLmgiCisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworUnVuTG9vcDo6UnVuTG9vcCgpCit7
CisgICAgaWYgKGVjb3JlX2luaXQoKSAhPSAxKQorICAgICAgICBGQVRBTCgpOworCisgICAgbV9Q
aXBlID0gZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQsIHRoaXMpOworfQorCitSdW5Mb29wOjp+
UnVuTG9vcCgpCit7CisgICAgZWNvcmVfcGlwZV9kZWwobV9QaXBlKTsKKyAgICBpZiAoZWNvcmVf
c2h1dGRvd24oKSAhPSAxKQorICAgICAgICBGQVRBTCgpOworfQorCit2b2lkIFJ1bkxvb3A6OnJ1
bigpCit7CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6
c3RvcCgpCit7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29w
Ojp3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQor
eworICAgICgoUnVuTG9vcCopZGF0YSktPnBlcmZvcm1Xb3JrKCk7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6d2FrZVVwKCkKK3sKKyAgICBlY29yZV9waXBlX3dyaXRlKG1fUGlwZSwgInciLCAxKTsKK30K
KworUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCogcnVuTG9vcCkKKyAgICA6
IG1fdGltZXIoMCkKK3sKK30KKworUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sK
KyAgICBzdG9wKCk7Cit9CisKK0VpbmFfQm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmly
ZWQodm9pZCogZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpUaW1lckJhc2UqIHRpbWVyID0gKFJ1bkxv
b3A6OlRpbWVyQmFzZSopZGF0YTsKKyAgICBFaW5hX0Jvb2wgcmV0OworCisgICAgdGltZXItPmZp
cmVkKCk7CisgICAgCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICB0
aW1lci0+bV90aW1lciA9IDA7CisgICAgICAgIHJldCA9IEVDT1JFX0NBTExCQUNLX0NBTkNFTDsK
KyAgICB9IGVsc2UKKyAgICAgICAgcmV0ID0gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7CisKKyAgICBy
ZXR1cm4gcmV0OworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIGZp
cmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7CisgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsK
KyAgICBtX3RpbWVyID0gZWNvcmVfdGltZXJfYWRkKGZpcmVJbnRlcnZhbCwgdGltZXJGaXJlZCwg
dGhpcyk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBpZiAo
bV90aW1lcikKKyAgICAgICAgZWNvcmVfdGltZXJfZGVsKG1fdGltZXIpOworICAgIG1fdGltZXIg
PSAwOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3RpbWVyOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZDkzM2Fm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1
ZUVmbC5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8ZXJybm8u
aD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworLy8gV29ya1F1ZXVlCit2b2lkIFdvcmtRdWV1ZTo6
cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgaW50IGZkc1syXTsK
KyAgICBpZiAocGlwZShmZHMpKQorICAgICAgICBDUkFTSCgpOworICAgIAorICAgIG1fcmVhZEZk
ID0gZmRzWzBdOworICAgIG1fd3JpdGVGZCA9IGZkc1sxXTsKKyAgICAKKyAgICBGRF9aRVJPKCZt
X2Zkcyk7CisgICAgRkRfU0VUKG1fcmVhZEZkLCAmbV9mZHMpOworICAgIG1fbWF4RmQgPSBtX3Jl
YWRGZDsKKworICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gY3JlYXRlVGhyZWFkKHJlaW50ZXJwcmV0
X2Nhc3Q8V1RGOjpUaHJlYWRGdW5jdGlvbj4oJldvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKSwg
dGhpcywgbmFtZSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQor
eworICAgIGNsb3NlKG1fcmVhZEZkKTsKKyAgICBjbG9zZShtX3dyaXRlRmQpOworfQorCit2b2lk
IFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmsoKQoreworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9j
aygpOworCisgICAgd2hpbGUgKCFtX3dvcmtJdGVtUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAg
IFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1FZmw+ID4gd29ya0l0ZW1RdWV1ZTsKKyAgICAgICAgbV93
b3JrSXRlbVF1ZXVlLnN3YXAod29ya0l0ZW1RdWV1ZSk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1
ZXVlTG9jay51bmxvY2soKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JrSXRl
bVF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgd29ya0l0ZW1RdWV1ZVtpXS0+aXRlbSgp
LT5leGVjdXRlKCk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisgICAg
fQorCisgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKK30KKwordm9pZCBXb3JrUXVl
dWU6OnBlcmZvcm1GZFdvcmsoKQoreworICAgIGludCByZXQ7CisgICAgZmRfc2V0IHJlYWRmZHMg
PSBtX2ZkczsKKyAgICByZXQgPSBzZWxlY3QobV9tYXhGZCArIDEsICZyZWFkZmRzLCAwLCAwLCAw
KTsKKyAgICAgICAgCisgICAgaWYgKHJldCA+PSAwKSB7CisgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2sobV9GZFdvcmtJdGVtc0xvY2spOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
RmRXb3JrSXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChGRF9JU1NFVChtX0Zk
V29ya0l0ZW1zW2ldLT5mZCgpLCAmcmVhZGZkcykpCisgICAgICAgICAgICAgICAgbV9GZFdvcmtJ
dGVtc1tpXS0+aXRlbSgpLT5leGVjdXRlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQq
IFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVlKQoreworICAg
IHdoaWxlICgxKSB7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybVdvcmsoKTsKKyAgICAgICAg
d29ya1F1ZXVlLT5wZXJmb3JtRmRXb3JrKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2
b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihpbnQgZmQsIFBhc3NPd25QdHI8
V29ya0l0ZW0+IGl0ZW0pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX0ZkV29ya0l0ZW1zTG9j
ayk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX0ZkV29ya0l0ZW1zLnNpemUoKTsgKytp
KQorICAgICAgICBpZiAobV9GZFdvcmtJdGVtc1tpXS0+ZmQoKSAhPSBmZCkKKyAgICAgICAgICAg
IExPR19FUlJPUigiJWQgaXMgYWxyZWFkeSByZWdpc3RlcmQuIik7CisKKyAgICBtX0ZkV29ya0l0
ZW1zLmFwcGVuZChhZG9wdFJlZihuZXcgRmRXb3JrSXRlbShmZCwgaXRlbSwgdGhpcykpKTsKKwor
ICAgIGlmIChmZCA+IG1fbWF4RmQpCisgICAgICAgIG1fbWF4RmQgPSBmZDsKKyAgICBGRF9TRVQo
ZmQsICZtX2Zkcyk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtlVXAo
V29ya0l0ZW1FZmwqIGl0ZW0pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1R
dWV1ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoYWRvcHRSZWYoaXRlbSkpOwor
ICAgIHdyaXRlKG1fd3JpdGVGZCwgInciLCAxKTsgLy8gV2FrZVVwIFdvcmtRdWV1ZSBUaHJlYWQK
K30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29yayhQYXNzT3duUHRyPFdvcmtJdGVtPiBp
dGVtKQoreworICAgIHNjaGVkdWxlV29ya0FuZFdha2VVcChuZXcgV29ya0l0ZW1FZmwoaXRlbSwg
dGhpcykpOworfQorCitFaW5hX0Jvb2wgV29ya1F1ZXVlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEp
Cit7CisgICAgV29ya0l0ZW1FZmwqIGl0ZW0gPSAoV29ya0l0ZW1FZmwqKWRhdGE7CisKKyAgICBp
dGVtLT5xdWV1ZSgpLT5zY2hlZHVsZVdvcmtBbmRXYWtlVXAoaXRlbSk7CisKKyAgICByZXR1cm4g
RUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3Jr
QWZ0ZXJEZWxheShQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVtLCBkb3VibGUgZGVsYXkpCit7Cisg
ICAgZWNvcmVfdGltZXJfYWRkKGRlbGF5LCB0aW1lckZpcmVkLCAodm9pZCopKG5ldyBXb3JrSXRl
bUVmbChpdGVtLCB0aGlzKSkpOworfQorCitFaW5hX0Jvb2wgV29ya1F1ZXVlOjpleGl0SGFuZGxl
cih2b2lkICAqIGRhdGEsIGludCB0eXBlLCB2b2lkKiBldmVudCkKK3sKKyAgICBUZXJtV29ya0l0
ZW0qIGl0ZW0gPSAoVGVybVdvcmtJdGVtKilkYXRhOworICAgIEVjb3JlX0V4ZV9FdmVudF9EZWwq
IGV2ID0gKEVjb3JlX0V4ZV9FdmVudF9EZWwqKWV2ZW50OworCisgICAgaWYgKGl0ZW0tPnBpZCgp
ID09IGV2LT5waWQpCisgICAgICAgIGl0ZW0tPnF1ZXVlKCktPnNjaGVkdWxlV29ya0FuZFdha2VV
cChpdGVtKTsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQg
V29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzLCBQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVtKQoreworICAg
IGVjb3JlX2V2ZW50X2hhbmRsZXJfYWRkKEVDT1JFX0VYRV9FVkVOVF9ERUwsIGV4aXRIYW5kbGVy
LCAodm9pZCopKG5ldyBUZXJtV29ya0l0ZW0ocHJvY2VzcywgaXRlbSwgdGhpcykpKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97412</attachid>
            <date>2011-06-16 00:30:38 -0700</date>
            <delta_ts>2011-06-17 02:01:03 -0700</delta_ts>
            <desc>Modify PlatformProcessIdentifier.h</desc>
            <filename>patch_file2.patch</filename>
            <type>text/plain</type>
            <size>16865</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYWUxZjUyLi41NDUyMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTEtMDYtMTUgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
RUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3CisKKyAgICAgICAgQWRkIFJ1
bkxvb3BFZmwgYW5kIFdvcmtRdWV1ZUVmbCBmb3IgRWZsIHBvcnQKKworICAgICAgICAqIFBsYXRm
b3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpvcGVu
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9SdW5Mb29wLmg6CisgICAgICAgICogUGxhdGZvcm0vV29y
a1F1ZXVlLmg6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpXb3JrSXRlbUVmbCk6
CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0ZW1FZmwpOgorICAgICAg
ICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6aXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6Oldv
cmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OkZkV29y
a0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjp+RmRXb3JrSXRlbSk6Cisg
ICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OmZkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
VGVybVdvcmtJdGVtOjpUZXJtV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUZXJtV29y
a0l0ZW06On5UZXJtV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUZXJtV29ya0l0ZW06
OnBpZCk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAgICAoUnVuTG9vcDo6flJ1bkxvb3ApOgor
ICAgICAgICAoUnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFJ1bkxvb3A6OnN0b3ApOgorICAgICAg
ICAoUnVuTG9vcDo6d2FrZVVwRXZlbnQpOgorICAgICAgICAoUnVuTG9vcDo6d2FrZVVwKToKKyAg
ICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJhc2U6OnRp
bWVyRmlyZWQpOgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAg
IChSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNl
Ojppc0FjdGl2ZSk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAo
V29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJm
b3JtV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmspOgorICAgICAgICAo
V29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpyZWdpc3Rl
ckZkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2Fr
ZVVwKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FmdGVy
RGVsYXkpOgorICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3Jr
UXVldWU6OnNjaGVkdWxlV29ya09uVGVybWluYXRpb24pOgorCiAyMDExLTA2LTE1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCm9sZCBt
b2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNWMzZWQxZC4uOGM1M2I1YgotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQAog
Y2xhc3MgUVNvY2tldE5vdGlmaWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjZW5kaWYKIApA
QCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKLSNlbGlmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjZWxpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25P
blByb2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIpOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3Vu
aXgvQ29ubmVjdGlvblVuaXguY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggODAyY2FhZS4uNjc1ZmU3MgotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTM1Niw2ICszNTYsOCBAQCBib29sIENv
bm5lY3Rpb246Om9wZW4oKQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIG1fY29ubmVjdGlvblF1
ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgKEdfSU9f
SFVQIHwgR19JT19FUlIpLCBXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsICZDb25uZWN0aW9uOjpjb25u
ZWN0aW9uRGlkQ2xvc2UpKTsKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291
cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIEdfSU9fSU4sIFdvcmtJdGVtOjpjcmVhdGUo
dGhpcywgJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIpKTsKKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckZkRXZlbnRIYW5kbGVyKG1fc29ja2V0
RGVzY3JpcHRvciwgV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAmQ29ubmVjdGlvbjo6cmVhZHlSZWFk
SGFuZGxlcikpOwogI2VuZGlmCiAKICAgICAvLyBTY2hlZHVsZSBhIGNhbGwgdG8gcmVhZHlSZWFk
SGFuZGxlci4gRGF0YSBtYXkgaGF2ZSBhcnJpdmVkIGJlZm9yZSBpbnN0YWxsYXRpb24gb2YgdGhl
IHNpZ25hbApAQCAtNDU3LDcgKzQ1OSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKIHZvaWQgQ29u
bmVjdGlvbjo6c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24oV2Vi
S2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3MpCiB7CiAgICAgbV9jb25uZWN0
aW9uUXVldWUuc2NoZWR1bGVXb3JrT25UZXJtaW5hdGlvbihwcm9jZXNzLCBXb3JrSXRlbTo6Y3Jl
YXRlKHRoaXMsICZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaApvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDUwMjJkYTcuLmVmM2ZmMGMKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaApAQCAtMjks
NiArMjksOCBAQAogCiAjaWYgUExBVEZPUk0oUVQpCiBjbGFzcyBRUHJvY2VzczsKKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQ2LDYgKzQ4LDggQEAgdHlwZWRlZiB2b2lkKiBHUGlkOwogdHlwZWRlZiBp
bnQgR1BpZDsKICNlbmRpZgogdHlwZWRlZiBHUGlkIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7
CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVmIHBpZF90IFBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXI7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0IApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
UnVuTG9vcC5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMGRlZDc5My4u
ZTE2OWJiZAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oCkBAIC0zOSw2ICszOSw4IEBAIHR5cGVkZWYg
c3RydWN0IF9HU291cmNlIEdTb3VyY2U7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWlu
TG9vcDsKIHR5cGVkZWYgc3RydWN0IF9HTWFpbkNvbnRleHQgR01haW5Db250ZXh0OwogdHlwZWRl
ZiBpbnQgZ2Jvb2xlYW47CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4K
ICNlbmRpZgogCiBjbGFzcyBXb3JrSXRlbTsKQEAgLTEwNSw2ICsxMDcsMTAgQEAgcHVibGljOgog
ICAgICAgICB2b2lkIGNsZWFyVGltZXJTb3VyY2UoKTsKICAgICAgICAgR1JlZlB0cjxHU291cmNl
PiBtX3RpbWVyU291cmNlOwogICAgICAgICBnYm9vbGVhbiBtX2lzUmVwZWF0aW5nOworI2VsaWYg
UExBVEZPUk0oRUZMKQorICAgICAgICBzdGF0aWMgRWluYV9Cb29sIHRpbWVyRmlyZWQodm9pZCog
ZGF0YSk7CisgICAgICAgIEVjb3JlX1RpbWVyKiBtX3RpbWVyOworICAgICAgICBib29sIG1faXNS
ZXBlYXRpbmc7CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNjMsNiArMTY5LDkgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBHTWFpbkNvbnRleHQqIG1fcnVuTG9vcENvbnRleHQ7CiAgICAgR01haW5M
b29wKiBtX3J1bkxvb3BNYWluOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIEVjb3JlX1BpcGUq
IG1fUGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBi
dWYsIHVuc2lnbmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9X
b3JrUXVldWUuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDc0ZDYwNTUu
LjI4M2E2NDcKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKQEAgLTQyLDE0ICs0MiwxOCBAQAog
CiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UVNvY2tldE5vdGlmaWVyPgotI2luY2x1ZGUg
IlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKIGNsYXNzIFFPYmplY3Q7CiBjbGFzcyBRVGhy
ZWFkOwogI2VsaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIuaCIKIHR5cGVkZWYgc3RydWN0IF9HTWFpbkNvbnRleHQgR01haW5Db250ZXh0OwogdHlw
ZWRlZiBzdHJ1Y3QgX0dNYWluTG9vcCBHTWFpbkxvb3A7CiB0eXBlZGVmIGdib29sZWFuICgqR1Nv
dXJjZUZ1bmMpIChncG9pbnRlciBkYXRhKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRl
IDxFY29yZS5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgog
I2VuZGlmCiAKIGNsYXNzIFdvcmtRdWV1ZSB7CkBAIC05MCw2ICs5NCw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCwgaW50LCBQYXNzT3duUHRyPFdv
cmtJdGVtPik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCk7CiAg
ICAgdm9pZCBzY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllciwgUGFzc093blB0cjxXb3JrSXRlbT4pOworI2VsaWYgUExBVEZPUk0oRUZMKQor
ICAgIHZvaWQgcmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihpbnQsIFBhc3NPd25QdHI8V29ya0l0ZW0+
KTsKKyAgICB2b2lkIHNjaGVkdWxlV29ya09uVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLCBQYXNzT3duUHRyPFdvcmtJdGVtPik7CiAjZW5kaWYKIAogcHJpdmF0
ZToKQEAgLTE3OCw2ICsxODUsNTggQEAgcHJpdmF0ZToKICAgICBjbGFzcyBFdmVudFNvdXJjZTsK
ICAgICBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPiBtX2V2ZW50U291cmNlczsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2UqPiA+OjppdGVyYXRv
ciBFdmVudFNvdXJjZUl0ZXJhdG9yOyAKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjbGFzcyBX
b3JrSXRlbUVmbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrSXRlbUVmbD4gewor
ICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBXb3JrSXRlbUVmbChQYXNzT3duUHRyPFdvcmtJ
dGVtPiBpdGVtLCBXb3JrUXVldWUqIHF1ZXVlKSA6IG1faXRlbShpdGVtKSwgbV9xdWV1ZShxdWV1
ZSkgeyB9CisgICAgICAgICAgICB+V29ya0l0ZW1FZmwoKSB7IH0KKyAgICAKKyAgICAgICAgICAg
IFdvcmtJdGVtKiBpdGVtKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLmdldCgpOyB9CisgICAgICAg
ICAgICBXb3JrUXVldWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorICAgIAor
ICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPFdvcmtJdGVtPiBtX2l0ZW07Cisg
ICAgICAgICAgICBXb3JrUXVldWUqIG1fcXVldWU7CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBG
ZFdvcmtJdGVtIDogcHVibGljIFdvcmtJdGVtRWZsIHsKKyAgICAgICAgcHVibGljOgorICAgICAg
ICAgICAgRmRXb3JrSXRlbShpbnQgZmQsIFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0sIFdvcmtR
dWV1ZSogcXVldWUpICAgCisgICAgICAgICAgICAgICAgOiBXb3JrSXRlbUVmbChpdGVtLCBxdWV1
ZSksIG1fZmQoZmQpIHsgfQorICAgICAgICAgICAgfkZkV29ya0l0ZW0oKSB7IH0KKyAgICAgICAg
ICAgIGludCBmZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmQ7IH0KKyAgICAKKyAgICAgICAgcHJpdmF0
ZToKKyAgICAgICAgICAgIGludCBtX2ZkOworICAgIH07CisgICAgCisgICAgY2xhc3MgVGVybVdv
cmtJdGVtIDogcHVibGljIFdvcmtJdGVtRWZsIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAg
ICAgVGVybVdvcmtJdGVtKGludCBwaWQsIFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0sIFdvcmtR
dWV1ZSogcXVldWUpCisgICAgICAgICAgICAgICAgOiBXb3JrSXRlbUVmbChpdGVtLCBxdWV1ZSks
IG1fcGlkKHBpZCkgeyB9CisgICAgICAgICAgICB+VGVybVdvcmtJdGVtKCkgeyB9CisgICAgICAg
ICAgICBpbnQgcGlkKCkgY29uc3QgeyByZXR1cm4gbV9waWQ7IH0KKyAgICAKKyAgICAgICAgcHJp
dmF0ZToKKyAgICAgICAgICAgIGludCBtX3BpZDsKKyAgICB9OworICAgIAorICAgIFRocmVhZElk
ZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7CisgICAgVmVjdG9yPFJlZlB0cjxXb3JrSXRlbUVm
bD4gPiBtX3dvcmtJdGVtUXVldWU7CisgICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKKyAg
ICBWZWN0b3I8UmVmUHRyPEZkV29ya0l0ZW0+ID4gbV9GZFdvcmtJdGVtczsKKyAgICBNdXRleCBt
X0ZkV29ya0l0ZW1zTG9jazsKKyAgICBpbnQgbV9tYXhGZDsKKyAgICBmZF9zZXQgbV9mZHM7Cisg
ICAgaW50IG1fcmVhZEZkOworICAgIGludCBtX3dyaXRlRmQ7CisKKyAgICBzdGF0aWMgdm9pZCog
d29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3JrQW5kV2Fr
ZVVwKFdvcmtJdGVtRWZsKik7CisgICAgdm9pZCBwZXJmb3JtV29yaygpOworICAgIHZvaWQgcGVy
Zm9ybUZkV29yaygpOworICAgIHN0YXRpYyBFaW5hX0Jvb2wgdGltZXJGaXJlZCh2b2lkKik7ICAg
IAorICAgIHN0YXRpYyBFaW5hX0Jvb2wgZXhpdEhhbmRsZXIodm9pZCosIGludCwgdm9pZCopOwog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvUnVu
TG9vcEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDkxNTY3MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcApAQCAtMCww
ICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUnVuTG9vcC5oIgorCisjaW5jbHVkZSAiV29ya0l0ZW0uaCIKKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitSdW5Mb29wOjpSdW5Mb29wKCkKK3sKKyAg
ICBpZiAoZWNvcmVfaW5pdCgpICE9IDEpCisgICAgICAgIEZBVEFMKCk7CisKKyAgICBtX1BpcGUg
PSBlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhpcyk7Cit9CisKK1J1bkxvb3A6On5SdW5M
b29wKCkKK3sKKyAgICBlY29yZV9waXBlX2RlbChtX1BpcGUpOworICAgIGlmIChlY29yZV9zaHV0
ZG93bigpICE9IDEpCisgICAgICAgIEZBVEFMKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkK
K3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30KKwordm9pZCBSdW5Mb29wOjpzdG9w
KCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondh
a2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpCit7Cisg
ICAgKChSdW5Mb29wKilkYXRhKS0+cGVyZm9ybVdvcmsoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3
YWtlVXAoKQoreworICAgIGVjb3JlX3BpcGVfd3JpdGUobV9QaXBlLCAidyIsIDEpOworfQorCitS
dW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQorICAgIDogbV90
aW1lcigwKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAg
IHN0b3AoKTsKK30KKworRWluYV9Cb29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCh2
b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIgPSAoUnVuTG9vcDo6
VGltZXJCYXNlKilkYXRhOworICAgIEVpbmFfQm9vbCByZXQ7CisKKyAgICB0aW1lci0+ZmlyZWQo
KTsKKyAgICAKKyAgICBpZiAoIXRpbWVyLT5tX2lzUmVwZWF0aW5nKSB7CisgICAgICAgIHRpbWVy
LT5tX3RpbWVyID0gMDsKKyAgICAgICAgcmV0ID0gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworICAg
IH0gZWxzZQorICAgICAgICByZXQgPSBFQ09SRV9DQUxMQkFDS19SRU5FVzsKKworICAgIHJldHVy
biByZXQ7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgZmlyZUlu
dGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OworICAg
IG1fdGltZXIgPSBlY29yZV90aW1lcl9hZGQoZmlyZUludGVydmFsLCB0aW1lckZpcmVkLCB0aGlz
KTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3Rp
bWVyKQorICAgICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7CisgICAgbV90aW1lciA9IDA7
Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fdGltZXI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9l
ZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVl
dWVFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNkOTMzYWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZs
LmNwcApAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxlcnJuby5oPgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorCisvLyBXb3JrUXVldWUKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpbnQgZmRzWzJdOworICAg
IGlmIChwaXBlKGZkcykpCisgICAgICAgIENSQVNIKCk7CisgICAgCisgICAgbV9yZWFkRmQgPSBm
ZHNbMF07CisgICAgbV93cml0ZUZkID0gZmRzWzFdOworICAgIAorICAgIEZEX1pFUk8oJm1fZmRz
KTsKKyAgICBGRF9TRVQobV9yZWFkRmQsICZtX2Zkcyk7CisgICAgbV9tYXhGZCA9IG1fcmVhZEZk
OworCisgICAgbV93b3JrUXVldWVUaHJlYWQgPSBjcmVhdGVUaHJlYWQocmVpbnRlcnByZXRfY2Fz
dDxXVEY6OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpLCB0aGlz
LCBuYW1lKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7Cisg
ICAgY2xvc2UobV9yZWFkRmQpOworICAgIGNsb3NlKG1fd3JpdGVGZCk7Cit9CisKK3ZvaWQgV29y
a1F1ZXVlOjpwZXJmb3JtV29yaygpCit7CisgICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7
CisKKyAgICB3aGlsZSAoIW1fd29ya0l0ZW1RdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVj
dG9yPFJlZlB0cjxXb3JrSXRlbUVmbD4gPiB3b3JrSXRlbVF1ZXVlOworICAgICAgICBtX3dvcmtJ
dGVtUXVldWUuc3dhcCh3b3JrSXRlbVF1ZXVlKTsKKworICAgICAgICBtX3dvcmtJdGVtUXVldWVM
b2NrLnVubG9jaygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmtJdGVtUXVl
dWUuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB3b3JrSXRlbVF1ZXVlW2ldLT5pdGVtKCktPmV4
ZWN1dGUoKTsKKworICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKyAgICB9CisK
KyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9jaygpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6
cGVyZm9ybUZkV29yaygpCit7CisgICAgaW50IHJldDsKKyAgICBmZF9zZXQgcmVhZGZkcyA9IG1f
ZmRzOworICAgIHJldCA9IHNlbGVjdChtX21heEZkICsgMSwgJnJlYWRmZHMsIDAsIDAsIDApOwor
ICAgICAgICAKKyAgICBpZiAocmV0ID49IDApIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayht
X0ZkV29ya0l0ZW1zTG9jayk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9GZFdv
cmtJdGVtcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKEZEX0lTU0VUKG1fRmRXb3Jr
SXRlbXNbaV0tPmZkKCksICZyZWFkZmRzKSkKKyAgICAgICAgICAgICAgICBtX0ZkV29ya0l0ZW1z
W2ldLT5pdGVtKCktPmV4ZWN1dGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCogV29y
a1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKiB3b3JrUXVldWUpCit7CisgICAgd2hp
bGUgKDEpIHsKKyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtV29yaygpOworICAgICAgICB3b3Jr
UXVldWUtPnBlcmZvcm1GZFdvcmsoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
V29ya1F1ZXVlOjpyZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCBmZCwgUGFzc093blB0cjxXb3Jr
SXRlbT4gaXRlbSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fRmRXb3JrSXRlbXNMb2NrKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fRmRXb3JrSXRlbXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIGlmIChtX0ZkV29ya0l0ZW1zW2ldLT5mZCgpICE9IGZkKQorICAgICAgICAgICAgTE9H
X0VSUk9SKCIlZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iKTsKKworICAgIG1fRmRXb3JrSXRlbXMu
YXBwZW5kKGFkb3B0UmVmKG5ldyBGZFdvcmtJdGVtKGZkLCBpdGVtLCB0aGlzKSkpOworCisgICAg
aWYgKGZkID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOworICAgIEZEX1NFVChmZCwg
Jm1fZmRzKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FuZFdha2VVcChXb3Jr
SXRlbUVmbCogaXRlbSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVl
TG9jayk7CisgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChhZG9wdFJlZihpdGVtKSk7CisgICAg
d3JpdGUobV93cml0ZUZkLCAidyIsIDEpOyAvLyBXYWtlVXAgV29ya1F1ZXVlIFRocmVhZAorfQor
Cit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrKFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0p
Cit7CisgICAgc2NoZWR1bGVXb3JrQW5kV2FrZVVwKG5ldyBXb3JrSXRlbUVmbChpdGVtLCB0aGlz
KSk7Cit9CisKK0VpbmFfQm9vbCBXb3JrUXVldWU6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sK
KyAgICBXb3JrSXRlbUVmbCogaXRlbSA9IChXb3JrSXRlbUVmbCopZGF0YTsKKworICAgIGl0ZW0t
PnF1ZXVlKCktPnNjaGVkdWxlV29ya0FuZFdha2VVcChpdGVtKTsKKworICAgIHJldHVybiBFQ09S
RV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBZnRl
ckRlbGF5KFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0sIGRvdWJsZSBkZWxheSkKK3sKKyAgICBl
Y29yZV90aW1lcl9hZGQoZGVsYXksIHRpbWVyRmlyZWQsICh2b2lkKikobmV3IFdvcmtJdGVtRWZs
KGl0ZW0sIHRoaXMpKSk7Cit9CisKK0VpbmFfQm9vbCBXb3JrUXVldWU6OmV4aXRIYW5kbGVyKHZv
aWQgICogZGF0YSwgaW50IHR5cGUsIHZvaWQqIGV2ZW50KQoreworICAgIFRlcm1Xb3JrSXRlbSog
aXRlbSA9IChUZXJtV29ya0l0ZW0qKWRhdGE7CisgICAgRWNvcmVfRXhlX0V2ZW50X0RlbCogZXYg
PSAoRWNvcmVfRXhlX0V2ZW50X0RlbCopZXZlbnQ7CisKKyAgICBpZiAoaXRlbS0+cGlkKCkgPT0g
ZXYtPnBpZCkKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGl0
ZW0pOworCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnNjaGVkdWxlV29ya09uVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3MsIFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0pCit7CisgICAgZWNv
cmVfZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfRVhFX0VWRU5UX0RFTCwgZXhpdEhhbmRsZXIsICh2
b2lkKikobmV3IFRlcm1Xb3JrSXRlbShwcm9jZXNzLCBpdGVtLCB0aGlzKSkpOworfQo=
</data>
<flag name="review"
          id="91353"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97562</attachid>
            <date>2011-06-17 02:01:03 -0700</date>
            <delta_ts>2011-06-21 23:41:11 -0700</delta_ts>
            <desc>patch.</desc>
            <filename>patch_file3.patch</filename>
            <type>text/plain</type>
            <size>18025</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYWUxZjUyLi4xZGZhY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTEtMDYtMTUgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
RUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3CisKKyAgICAgICAgQWRkIGlu
aXRpYWwgdmVyc2lvbiBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwgZm9yIFdlYktpdDIgRWZs
LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICog
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAqIFBsYXRmb3JtL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0
ZW1FZmw6OldvcmtJdGVtRWZsKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6On5X
b3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjppdGVtKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OnF1ZXVlKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0
ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6ZmQpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpUZXJtV29ya0l0ZW06OlRlcm1Xb3JrSXRlbSk6CisgICAgICAg
IChXb3JrUXVldWU6OlRlcm1Xb3JrSXRlbTo6flRlcm1Xb3JrSXRlbSk6CisgICAgICAgIChXb3Jr
UXVldWU6OlRlcm1Xb3JrSXRlbTo6cGlkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwvUnVuTG9v
cEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoUnVuTG9vcDo6UnVuTG9vcCk6CisgICAgICAgIChS
dW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChSdW5Mb29wOjpydW4pOgorICAgICAgICAoUnVu
TG9vcDo6c3RvcCk6CisgICAgICAgIChSdW5Mb29wOjp3YWtlVXBFdmVudCk6CisgICAgICAgIChS
dW5Mb29wOjp3YWtlVXApOgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2Up
OgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFJ1
bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJh
c2U6OnN0YXJ0KToKKyAgICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6CisgICAgICAg
IChSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwv
V29ya1F1ZXVlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW5p
dGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAg
ICAgIChXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGVyZm9y
bUZkV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCk6CisgICAgICAg
IChXb3JrUXVldWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVl
OjpzY2hlZHVsZVdvcmtBbmRXYWtlVXApOgorICAgICAgICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdv
cmspOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6c2NoZWR1bGVXb3JrQWZ0ZXJEZWxheSk6CisgICAgICAgIChXb3JrUXVldWU6OmV4aXRIYW5k
bGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrT25UZXJtaW5hdGlvbik6CisK
IDIwMTEtMDYtMTUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Db25uZWN0aW9uLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1YzNl
ZDFkLi44YzUzYjViCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5o
CkBAIC00Niw3ICs0Niw3IEBACiBjbGFzcyBRU29ja2V0Tm90aWZpZXI7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIuaCIKICNlbmRpZgogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZvaWQgc2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0
aW9ucygpOwotI2VsaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHNldFNo
b3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Q
cm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKb2xkIG1vZGUgMTAwNjQ0
Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4MDJjYWFlLi42NzVmZTcyCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMzU2
LDYgKzM1Niw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFURk9STShHVEsp
CiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2Nr
ZXREZXNjcmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIFdvcmtJdGVtOjpjcmVhdGUodGhp
cywgJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSkpOwogICAgIG1fY29ubmVjdGlvblF1
ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19J
TiwgV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAmQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcikp
OworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRmRF
dmVudEhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsICZD
b25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyKSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxl
IGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3Jl
IGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFsCkBAIC00NTcsNyArNDU5LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25Q
dHI8QXJndW1lbnRFbmMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKQogdm9pZCBDb25uZWN0aW9uOjpzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
cykKIHsKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5zY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKHBy
b2Nlc3MsIFdvcmtJdGVtOjpjcmVhdGUodGhpcywgJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRD
bG9zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNTAyMmRh
Ny4uZWYzZmYwYwotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpZiBQTEFURk9STShRVCkKIGNsYXNz
IFFQcm9jZXNzOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDYsNiArNDgsOCBAQCB0eXBlZGVmIHZv
aWQqIEdQaWQ7CiB0eXBlZGVmIGludCBHUGlkOwogI2VuZGlmCiB0eXBlZGVmIEdQaWQgUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllcjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgcGlkX3Qg
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQppbmRleCAwZGVkNzkzLi5lMTY5YmJkCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKQEAgLTM5
LDYgKzM5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0dTb3VyY2UgR1NvdXJjZTsKIHR5cGVkZWYgc3Ry
dWN0IF9HTWFpbkxvb3AgR01haW5Mb29wOwogdHlwZWRlZiBzdHJ1Y3QgX0dNYWluQ29udGV4dCBH
TWFpbkNvbnRleHQ7CiB0eXBlZGVmIGludCBnYm9vbGVhbjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlIDxFY29yZS5oPgogI2VuZGlmCiAKIGNsYXNzIFdvcmtJdGVtOwpAQCAtMTA1LDYg
KzEwNywxMCBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAg
ICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1f
aXNSZXBlYXRpbmc7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgICAgIHN0YXRpYyBFaW5hX0Jv
b2wgdGltZXJGaXJlZCh2b2lkKiBkYXRhKTsKKyAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7
CisgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKICNlbmRpZgogICAgIH07CiAKQEAgLTE2Myw2
ICsxNjksOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdNYWluQ29udGV4dCogbV9ydW5Mb29w
Q29udGV4dDsKICAgICBHTWFpbkxvb3AqIG1fcnVuTG9vcE1haW47CisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgRWNvcmVfUGlwZSogbV9QaXBlOworICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50
KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKaW5kZXggNzRkNjA1NS4uNDFiMWI3NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApA
QCAtNDIsMTQgKzQyLDE4IEBACiAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRU29ja2V0
Tm90aWZpZXI+Ci0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogY2xhc3Mg
UU9iamVjdDsKIGNsYXNzIFFUaHJlYWQ7CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAi
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogdHlwZWRlZiBzdHJ1Y3QgX0dNYWluQ29udGV4
dCBHTWFpbkNvbnRleHQ7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsKIHR5
cGVkZWYgZ2Jvb2xlYW4gKCpHU291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOworI2VsaWYgUExB
VEZPUk0oRUZMKQorI2luY2x1ZGUgPEVjb3JlLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmgiCiAjZW5kaWYKIAogY2xhc3MgV29ya1F1ZXVlIHsKQEAgLTkwLDYg
Kzk0LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50
LCBpbnQsIFBhc3NPd25QdHI8V29ya0l0ZW0+KTsKICAgICB2b2lkIHVucmVnaXN0ZXJFdmVudFNv
dXJjZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIHNjaGVkdWxlV29ya09uVGVybWluYXRpb24oV2Vi
S2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBQYXNzT3duUHRyPFdvcmtJdGVtPik7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCwg
UGFzc093blB0cjxXb3JrSXRlbT4pOworICAgIHZvaWQgc2NoZWR1bGVXb3JrT25UZXJtaW5hdGlv
bihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFBhc3NPd25QdHI8V29ya0l0ZW0+
KTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTc4LDYgKzE4NSw4NyBAQCBwcml2YXRlOgogICAg
IGNsYXNzIEV2ZW50U291cmNlOwogICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2Uq
PiA+IG1fZXZlbnRTb3VyY2VzOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVu
dFNvdXJjZSo+ID46Oml0ZXJhdG9yIEV2ZW50U291cmNlSXRlcmF0b3I7IAorI2VsaWYgUExBVEZP
Uk0oRUZMKQorICAgIGNsYXNzIFdvcmtJdGVtRWZsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFdvcmtJdGVtRWZsPiB7CisgICAgcHVibGljOgorICAgICAgICBXb3JrSXRlbUVmbChQYXNz
T3duUHRyPFdvcmtJdGVtPiBpdGVtLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBt
X2l0ZW0oaXRlbSkKKyAgICAgICAgICAgICwgbV9xdWV1ZShxdWV1ZSkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIH5Xb3JrSXRlbUVmbCgpIHsgfQorCisgICAgICAgIFdvcmtJdGVtKiBp
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLmdldCgpOyB9CisgICAgICAgIFdvcmtRdWV1ZSog
cXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBPd25QdHI8V29ya0l0ZW0+IG1faXRlbTsKKyAgICAgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOwor
ICAgIH07CisgICAgCisgICAgY2xhc3MgRmRXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7
CisgICAgcHVibGljOgorICAgICAgICBGZFdvcmtJdGVtKGludCBmZCwgUGFzc093blB0cjxXb3Jr
SXRlbT4gaXRlbSwgV29ya1F1ZXVlKiBxdWV1ZSkgICAKKyAgICAgICAgICAgIDogV29ya0l0ZW1F
ZmwoaXRlbSwgcXVldWUpCisgICAgICAgICAgICAsIG1fZmQoZmQpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICB+RmRXb3JrSXRlbSgpIHsgfQorICAgICAgICBpbnQgZmQoKSBjb25zdCB7
IHJldHVybiBtX2ZkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9mZDsKKyAgICB9
OworCisgICAgY2xhc3MgVGltZXJXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7CisgICAg
cHVibGljOgorICAgICAgICBUaW1lcldvcmtJdGVtKGludCB0aW1lcklELCBQYXNzT3duUHRyPFdv
cmtJdGVtPiBpdGVtLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBXb3JrSXRlbUVm
bChpdGVtLCBxdWV1ZSkKKyAgICAgICAgICAgICwgbV90aW1lcklEKHRpbWVySUQpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICB+VGltZXJXb3JrSXRlbSgpIHsgfQorICAgICAgICBpbnQg
dGltZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXJJRDsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgaW50IG1fdGltZXJJRDsKKyAgICB9OworICAgIAorICAgIGNsYXNzIFRlcm1Xb3JrSXRl
bSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7CisgICAgcHVibGljOgorICAgICAgICBUZXJtV29ya0l0
ZW0oaW50IHBpZCwgUGFzc093blB0cjxXb3JrSXRlbT4gaXRlbSwgV29ya1F1ZXVlKiBxdWV1ZSkK
KyAgICAgICAgICAgIDogV29ya0l0ZW1FZmwoaXRlbSwgcXVldWUpCisgICAgICAgICAgICAsIG1f
cGlkKHBpZCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIH5UZXJtV29ya0l0ZW0oKSB7
IH0KKyAgICAgICAgaW50IHBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGlkOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBpbnQgbV9waWQ7CisgICAgfTsKKworICAgIGZkX3NldCBtX2ZkczsKKyAg
ICBpbnQgbV9tYXhGZDsKKyAgICBpbnQgbV9yZWFkRmQ7CisgICAgaW50IG1fd3JpdGVGZDsKKyAg
ICAKKyAgICBWZWN0b3I8UmVmUHRyPFdvcmtJdGVtRWZsPiA+IG1fd29ya0l0ZW1RdWV1ZTsKKyAg
ICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOworICAgIFZlY3RvcjxSZWZQdHI8RmRXb3JrSXRl
bT4gPiBtX0ZkV29ya0l0ZW1zOworICAgIE11dGV4IG1fRmRXb3JrSXRlbXNMb2NrOworCisgICAg
VmVjdG9yPEVjb3JlX1RpbWVyKj4gbV90aW1lcnM7CisgICAgTXV0ZXggbV90aW1lcnNMb2NrOwor
ICAgIEVjb3JlX0V2ZW50X0hhbmRsZXIqIG1fZXhpdEhhbmRsZXI7CisKKyAgICBzdGF0aWMgdm9p
ZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3JrQW5k
V2FrZVVwKFdvcmtJdGVtRWZsKik7CisgICAgdm9pZCBwZXJmb3JtV29yaygpOworICAgIHZvaWQg
cGVyZm9ybUZkV29yaygpOworICAgIGludCBnZXROZXh0VGltZXJJRCgpOworICAgIHN0YXRpYyBF
aW5hX0Jvb2wgdGltZXJGaXJlZCh2b2lkKik7ICAgIAorICAgIHN0YXRpYyBFaW5hX0Jvb2wgZXhp
dEhhbmRsZXIodm9pZCosIGludCwgdm9pZCopOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMC4uZTI0ZmIwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL2VmbC9SdW5Mb29wRWZsLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgorCisjaW5j
bHVkZSAiV29ya0l0ZW0uaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5o
PgorCitSdW5Mb29wOjpSdW5Mb29wKCkKK3sKKyAgICBpZiAoZWNvcmVfaW5pdCgpICE9IDEpCisg
ICAgICAgIEZBVEFMKCk7CisKKyAgICBtX1BpcGUgPSBlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVu
dCwgdGhpcyk7Cit9CisKK1J1bkxvb3A6On5SdW5Mb29wKCkKK3sKKyAgICBlY29yZV9waXBlX2Rl
bChtX1BpcGUpOworICAgIGlmIChlY29yZV9zaHV0ZG93bigpICE9IDEpCisgICAgICAgIEZBVEFM
KCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVn
aW4oKTsKK30KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3Bf
cXVpdCgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQq
IGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpCit7CisgICAgc3RhdGljX2Nhc3Q8UnVuTG9vcCo+KGRh
dGEpLT5wZXJmb3JtV29yaygpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCit7CisgICAg
ZWNvcmVfcGlwZV93cml0ZShtX1BpcGUsICJ3IiwgMSk7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKFJ1bkxvb3AqIHJ1bkxvb3ApCisgICAgOiBtX3RpbWVyKDApCisgICAgLCBt
X2lzUmVwZWF0aW5nKGZhbHNlKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJh
c2UoKQoreworICAgIHN0b3AoKTsKK30KKworRWluYV9Cb29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIg
PSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKyAgICBFaW5hX0Jvb2wg
cmV0OworCisgICAgdGltZXItPmZpcmVkKCk7CisgICAgCisgICAgaWYgKCF0aW1lci0+bV9pc1Jl
cGVhdGluZykgeworICAgICAgICB0aW1lci0+bV90aW1lciA9IDA7CisgICAgICAgIHJldCA9IEVD
T1JFX0NBTExCQUNLX0NBTkNFTDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0ID0gRUNPUkVfQ0FM
TEJBQ0tfUkVORVc7CisKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQoZG91YmxlIGZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7CisgICAgaWYg
KG1fdGltZXIpCisgICAgICAgIGVjb3JlX3RpbWVyX2RlbChtX3RpbWVyKTsKKyAgICAKKyAgICBt
X2lzUmVwZWF0aW5nID0gcmVwZWF0OworICAgIG1fdGltZXIgPSBlY29yZV90aW1lcl9hZGQoZmly
ZUludGVydmFsLCB0aW1lckZpcmVkLCB0aGlzKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJh
c2U6OnN0b3AoKQoreworICAgIGlmIChtX3RpbWVyKQorICAgICAgICBlY29yZV90aW1lcl9kZWwo
bV90aW1lcik7CisgICAgbV90aW1lciA9IDA7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNl
Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxz
ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmNkYzM1MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC0wLDAg
KzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dW5p
c3RkLmg+CisKKy8vIFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6
ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBpcGUoZmRz
KSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICAKKyAgICBtX3JlYWRGZCA9IGZkc1swXTsKKyAgICBt
X3dyaXRlRmQgPSBmZHNbMV07CisgICAgCisgICAgRkRfWkVSTygmbV9mZHMpOworICAgIEZEX1NF
VChtX3JlYWRGZCwgJm1fZmRzKTsKKyAgICBtX21heEZkID0gbV9yZWFkRmQ7CisKKyAgICBjcmVh
dGVUaHJlYWQocmVpbnRlcnByZXRfY2FzdDxXVEY6OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVl
Ojp3b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBuYW1lKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgY2xvc2UobV9yZWFkRmQpOworICAgIGNsb3NlKG1f
d3JpdGVGZCk7CisKKyAgICBpZiAobV9leGl0SGFuZGxlcikKKyAgICAgICAgZWNvcmVfZXZlbnRf
aGFuZGxlcl9kZWwobV9leGl0SGFuZGxlcik7CisKKyAgICBNdXRleExvY2tlciBsb2NrKG1fdGlt
ZXJzTG9jayk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbWVycy5zaXplKCk7ICsr
aSkKKyAgICAgICAgZWNvcmVfdGltZXJfZGVsKG1fdGltZXJzW2ldKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsK
KworICAgIHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0
b3I8UmVmUHRyPFdvcmtJdGVtRWZsPiA+IHdvcmtJdGVtUXVldWU7CisgICAgICAgIG1fd29ya0l0
ZW1RdWV1ZS5zd2FwKHdvcmtJdGVtUXVldWUpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxv
Y2sudW5sb2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya0l0ZW1RdWV1
ZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVtUXVldWVbaV0tPml0ZW0oKS0+ZXhl
Y3V0ZSgpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworICAgIH0KKwor
ICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpw
ZXJmb3JtRmRXb3JrKCkKK3sKKyAgICBpbnQgcmV0OworICAgIGZkX3NldCByZWFkZmRzID0gbV9m
ZHM7CisgICAgcmV0ID0gc2VsZWN0KG1fbWF4RmQgKyAxLCAmcmVhZGZkcywgMCwgMCwgMCk7Cisg
ICAgICAgIAorICAgIGlmIChyZXQgPj0gMCkgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKG1f
RmRXb3JrSXRlbXNMb2NrKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX0ZkV29y
a0l0ZW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoRkRfSVNTRVQobV9GZFdvcmtJ
dGVtc1tpXS0+ZmQoKSwgJnJlYWRmZHMpKQorICAgICAgICAgICAgICAgIG1fRmRXb3JrSXRlbXNb
aV0tPml0ZW0oKS0+ZXhlY3V0ZSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkKiBXb3Jr
UXVldWU6OndvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqIHdvcmtRdWV1ZSkKK3sKKyAgICB3aGls
ZSAoMSkgeworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtR
dWV1ZS0+cGVyZm9ybUZkV29yaygpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBX
b3JrUXVldWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50IGZkLCBQYXNzT3duUHRyPFdvcmtJ
dGVtPiBpdGVtKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9GZFdvcmtJdGVtc0xvY2spOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9GZFdvcmtJdGVtcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgaWYgKG1fRmRXb3JrSXRlbXNbaV0tPmZkKCkgIT0gZmQpCisgICAgICAgICAgICBMT0df
RVJST1IoIiVkIGlzIGFscmVhZHkgcmVnaXN0ZXJkLiIpOworCisgICAgbV9GZFdvcmtJdGVtcy5h
cHBlbmQoYWRvcHRSZWYobmV3IEZkV29ya0l0ZW0oZmQsIGl0ZW0sIHRoaXMpKSk7CisKKyAgICBp
ZiAoZmQgPiBtX21heEZkKQorICAgICAgICBtX21heEZkID0gZmQ7CisgICAgRkRfU0VUKGZkLCAm
bV9mZHMpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2FrZVVwKFdvcmtJ
dGVtRWZsKiBpdGVtKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtUXVldWVM
b2NrKTsKKyAgICBtX3dvcmtJdGVtUXVldWUuYXBwZW5kKGFkb3B0UmVmKGl0ZW0pKTsKKyAgICB3
cml0ZShtX3dyaXRlRmQsICJ3IiwgMSk7IC8vIFdha2VVcCBXb3JrUXVldWUgVGhyZWFkCit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmsoUGFzc093blB0cjxXb3JrSXRlbT4gaXRlbSkK
K3sKKyAgICBzY2hlZHVsZVdvcmtBbmRXYWtlVXAobmV3IFdvcmtJdGVtRWZsKGl0ZW0sIHRoaXMp
KTsKK30KKworaW50IFdvcmtRdWV1ZTo6Z2V0TmV4dFRpbWVySUQoKQoreworICAgIHJldHVybiBt
X3RpbWVycy5zaXplKCk7Cit9CisKK0VpbmFfQm9vbCBXb3JrUXVldWU6OnRpbWVyRmlyZWQodm9p
ZCogZGF0YSkKK3sKKyAgICBUaW1lcldvcmtJdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8VGltZXJX
b3JrSXRlbSo+KGRhdGEpOworCisgICAgaXRlbS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2Fr
ZVVwKGl0ZW0pOworCisgICAgTXV0ZXhMb2NrZXIgbG9jayhpdGVtLT5xdWV1ZSgpLT5tX3RpbWVy
c0xvY2spOworICAgIGl0ZW0tPnF1ZXVlKCktPm1fdGltZXJzLnJlbW92ZShpdGVtLT50aW1lcklE
KCkpOworCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnNjaGVkdWxlV29ya0FmdGVyRGVsYXkoUGFzc093blB0cjxXb3JrSXRlbT4gaXRlbSwg
ZG91YmxlIGRlbGF5KQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV90aW1lcnNMb2NrKTsKKyAg
ICBpbnQgdGltZXJJZCA9IGdldE5leHRUaW1lcklEKCk7CisgICAgbV90aW1lcnNbdGltZXJJZF0g
PSBlY29yZV90aW1lcl9hZGQoZGVsYXksIHRpbWVyRmlyZWQsIG5ldyBUaW1lcldvcmtJdGVtKHRp
bWVySWQsIGl0ZW0sIHRoaXMpKTsKK30KKworRWluYV9Cb29sIFdvcmtRdWV1ZTo6ZXhpdEhhbmRs
ZXIodm9pZCogZGF0YSwgaW50IHR5cGUsIHZvaWQqIGV2ZW50KQoreworICAgIFRlcm1Xb3JrSXRl
bSogaXRlbSA9IHN0YXRpY19jYXN0PFRlcm1Xb3JrSXRlbSo+KGRhdGEpOworICAgIEVjb3JlX0V4
ZV9FdmVudF9EZWwqIGV2ID0gc3RhdGljX2Nhc3Q8RWNvcmVfRXhlX0V2ZW50X0RlbCo+KGV2ZW50
KTsKKworICAgIGlmIChpdGVtLT5waWQoKSA9PSBldi0+cGlkKQorICAgICAgICBpdGVtLT5xdWV1
ZSgpLT5zY2hlZHVsZVdvcmtBbmRXYWtlVXAoaXRlbSk7CisKKyAgICBpdGVtLT5xdWV1ZSgpLT5t
X2V4aXRIYW5kbGVyID0gMDsKKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9
CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzLCBQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVt
KQoreworICAgIG1fZXhpdEhhbmRsZXIgPSBlY29yZV9ldmVudF9oYW5kbGVyX2FkZChFQ09SRV9F
WEVfRVZFTlRfREVMLCBleGl0SGFuZGxlciwgbmV3IFRlcm1Xb3JrSXRlbShwcm9jZXNzLCBpdGVt
LCB0aGlzKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98123</attachid>
            <date>2011-06-21 23:41:11 -0700</date>
            <delta_ts>2011-06-28 22:24:34 -0700</delta_ts>
            <desc>patch.</desc>
            <filename></filename>
            <type>text/plain</type>
            <size>18544</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYWUxZjUyLi4xZGZhY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTEtMDYtMTUgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
RUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3CisKKyAgICAgICAgQWRkIGlu
aXRpYWwgdmVyc2lvbiBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwgZm9yIFdlYktpdDIgRWZs
LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICog
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAqIFBsYXRmb3JtL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0
ZW1FZmw6OldvcmtJdGVtRWZsKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6On5X
b3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjppdGVtKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OnF1ZXVlKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0
ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6ZmQpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpUZXJtV29ya0l0ZW06OlRlcm1Xb3JrSXRlbSk6CisgICAgICAg
IChXb3JrUXVldWU6OlRlcm1Xb3JrSXRlbTo6flRlcm1Xb3JrSXRlbSk6CisgICAgICAgIChXb3Jr
UXVldWU6OlRlcm1Xb3JrSXRlbTo6cGlkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwvUnVuTG9v
cEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoUnVuTG9vcDo6UnVuTG9vcCk6CisgICAgICAgIChS
dW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChSdW5Mb29wOjpydW4pOgorICAgICAgICAoUnVu
TG9vcDo6c3RvcCk6CisgICAgICAgIChSdW5Mb29wOjp3YWtlVXBFdmVudCk6CisgICAgICAgIChS
dW5Mb29wOjp3YWtlVXApOgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2Up
OgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFJ1
bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJh
c2U6OnN0YXJ0KToKKyAgICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6CisgICAgICAg
IChSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwv
V29ya1F1ZXVlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW5p
dGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAg
ICAgIChXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGVyZm9y
bUZkV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCk6CisgICAgICAg
IChXb3JrUXVldWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVl
OjpzY2hlZHVsZVdvcmtBbmRXYWtlVXApOgorICAgICAgICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdv
cmspOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6c2NoZWR1bGVXb3JrQWZ0ZXJEZWxheSk6CisgICAgICAgIChXb3JrUXVldWU6OmV4aXRIYW5k
bGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrT25UZXJtaW5hdGlvbik6CisK
IDIwMTEtMDYtMTUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Db25uZWN0aW9uLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1YzNl
ZDFkLi44YzUzYjViCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5o
CkBAIC00Niw3ICs0Niw3IEBACiBjbGFzcyBRU29ja2V0Tm90aWZpZXI7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIuaCIKICNlbmRpZgogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZvaWQgc2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0
aW9ucygpOwotI2VsaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHNldFNo
b3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Q
cm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKb2xkIG1vZGUgMTAwNjQ0
Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4MDJjYWFlLi42NzVmZTcyCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMzU2
LDYgKzM1Niw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFURk9STShHVEsp
CiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2Nr
ZXREZXNjcmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIFdvcmtJdGVtOjpjcmVhdGUodGhp
cywgJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSkpOwogICAgIG1fY29ubmVjdGlvblF1
ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19J
TiwgV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAmQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcikp
OworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRmRF
dmVudEhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsICZD
b25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyKSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxl
IGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3Jl
IGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFsCkBAIC00NTcsNyArNDU5LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25Q
dHI8QXJndW1lbnRFbmMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKQogdm9pZCBDb25uZWN0aW9uOjpzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
cykKIHsKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5zY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKHBy
b2Nlc3MsIFdvcmtJdGVtOjpjcmVhdGUodGhpcywgJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRD
bG9zZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNTAyMmRh
Ny4uZWYzZmYwYwotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpZiBQTEFURk9STShRVCkKIGNsYXNz
IFFQcm9jZXNzOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDYsNiArNDgsOCBAQCB0eXBlZGVmIHZv
aWQqIEdQaWQ7CiB0eXBlZGVmIGludCBHUGlkOwogI2VuZGlmCiB0eXBlZGVmIEdQaWQgUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllcjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgcGlkX3Qg
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQppbmRleCAwZGVkNzkzLi5lMTY5YmJkCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKQEAgLTM5
LDYgKzM5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0dTb3VyY2UgR1NvdXJjZTsKIHR5cGVkZWYgc3Ry
dWN0IF9HTWFpbkxvb3AgR01haW5Mb29wOwogdHlwZWRlZiBzdHJ1Y3QgX0dNYWluQ29udGV4dCBH
TWFpbkNvbnRleHQ7CiB0eXBlZGVmIGludCBnYm9vbGVhbjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlIDxFY29yZS5oPgogI2VuZGlmCiAKIGNsYXNzIFdvcmtJdGVtOwpAQCAtMTA1LDYg
KzEwNywxMCBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAg
ICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1f
aXNSZXBlYXRpbmc7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgICAgIHN0YXRpYyBFaW5hX0Jv
b2wgdGltZXJGaXJlZCh2b2lkKiBkYXRhKTsKKyAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7
CisgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKICNlbmRpZgogICAgIH07CiAKQEAgLTE2Myw2
ICsxNjksOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdNYWluQ29udGV4dCogbV9ydW5Mb29w
Q29udGV4dDsKICAgICBHTWFpbkxvb3AqIG1fcnVuTG9vcE1haW47CisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgRWNvcmVfUGlwZSogbV9QaXBlOworICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50
KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKaW5kZXggNzRkNjA1NS4uOTEwZjMwOQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApA
QCAtNDIsMTQgKzQyLDE4IEBACiAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRU29ja2V0
Tm90aWZpZXI+Ci0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogY2xhc3Mg
UU9iamVjdDsKIGNsYXNzIFFUaHJlYWQ7CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAi
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogdHlwZWRlZiBzdHJ1Y3QgX0dNYWluQ29udGV4
dCBHTWFpbkNvbnRleHQ7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsKIHR5
cGVkZWYgZ2Jvb2xlYW4gKCpHU291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOworI2VsaWYgUExB
VEZPUk0oRUZMKQorI2luY2x1ZGUgPEVjb3JlLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmgiCiAjZW5kaWYKIAogY2xhc3MgV29ya1F1ZXVlIHsKQEAgLTkwLDYg
Kzk0LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50
LCBpbnQsIFBhc3NPd25QdHI8V29ya0l0ZW0+KTsKICAgICB2b2lkIHVucmVnaXN0ZXJFdmVudFNv
dXJjZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIHNjaGVkdWxlV29ya09uVGVybWluYXRpb24oV2Vi
S2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBQYXNzT3duUHRyPFdvcmtJdGVtPik7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCwg
UGFzc093blB0cjxXb3JrSXRlbT4pOworICAgIHZvaWQgc2NoZWR1bGVXb3JrT25UZXJtaW5hdGlv
bihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFBhc3NPd25QdHI8V29ya0l0ZW0+
KTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTc4LDYgKzE4NSw3MyBAQCBwcml2YXRlOgogICAg
IGNsYXNzIEV2ZW50U291cmNlOwogICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2Uq
PiA+IG1fZXZlbnRTb3VyY2VzOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVu
dFNvdXJjZSo+ID46Oml0ZXJhdG9yIEV2ZW50U291cmNlSXRlcmF0b3I7IAorI2VsaWYgUExBVEZP
Uk0oRUZMKQorICAgIGNsYXNzIFdvcmtJdGVtRWZsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFdvcmtJdGVtRWZsPiB7CisgICAgcHVibGljOgorICAgICAgICBXb3JrSXRlbUVmbChQYXNz
T3duUHRyPFdvcmtJdGVtPiBpdGVtLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBt
X2l0ZW0oaXRlbSkKKyAgICAgICAgICAgICwgbV9xdWV1ZShxdWV1ZSkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIH5Xb3JrSXRlbUVmbCgpIHsgfQorCisgICAgICAgIFdvcmtJdGVtKiBp
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLmdldCgpOyB9CisgICAgICAgIFdvcmtRdWV1ZSog
cXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBPd25QdHI8V29ya0l0ZW0+IG1faXRlbTsKKyAgICAgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOwor
ICAgIH07CisgICAgCisgICAgY2xhc3MgRmRXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7
CisgICAgcHVibGljOgorICAgICAgICBGZFdvcmtJdGVtKGludCBmZCwgUGFzc093blB0cjxXb3Jr
SXRlbT4gaXRlbSwgV29ya1F1ZXVlKiBxdWV1ZSkgICAKKyAgICAgICAgICAgIDogV29ya0l0ZW1F
ZmwoaXRlbSwgcXVldWUpCisgICAgICAgICAgICAsIG1fZmQoZmQpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICB+RmRXb3JrSXRlbSgpIHsgfQorICAgICAgICBpbnQgZmQoKSBjb25zdCB7
IHJldHVybiBtX2ZkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9mZDsKKyAgICB9
OworCisgICAgY2xhc3MgVGltZXJXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7CisgICAg
cHVibGljOgorICAgICAgICBUaW1lcldvcmtJdGVtKGludCB0aW1lcklELCBQYXNzT3duUHRyPFdv
cmtJdGVtPiBpdGVtLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBXb3JrSXRlbUVm
bChpdGVtLCBxdWV1ZSkKKyAgICAgICAgICAgICwgbV90aW1lcklEKHRpbWVySUQpCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICB+VGltZXJXb3JrSXRlbSgpIHsgfQorICAgICAgICBpbnQg
dGltZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXJJRDsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgaW50IG1fdGltZXJJRDsKKyAgICB9OworICAgIAorICAgIGZkX3NldCBtX2ZkczsKKyAg
ICBpbnQgbV9tYXhGZDsKKyAgICBpbnQgbV9yZWFkRmQ7CisgICAgaW50IG1fd3JpdGVGZDsKKyAg
ICAKKyAgICBWZWN0b3I8UmVmUHRyPFdvcmtJdGVtRWZsPiA+IG1fd29ya0l0ZW1RdWV1ZTsKKyAg
ICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOworICAgIFZlY3RvcjxSZWZQdHI8RmRXb3JrSXRl
bT4gPiBtX0ZkV29ya0l0ZW1zOworICAgIE11dGV4IG1fRmRXb3JrSXRlbXNMb2NrOworCisgICAg
VmVjdG9yPEVjb3JlX1RpbWVyKj4gbV90aW1lcnM7CisgICAgCisgICAgc3RhdGljIEhhc2hNYXA8
V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBSZWZQdHI8V29ya0l0ZW1FZmw+ID4g
bV90ZXJtV29ya0l0ZW1zOworCisgICAgc3RhdGljIHZvaWQqIHdvcmtRdWV1ZVRocmVhZChXb3Jr
UXVldWUqKTsKKyAgICB2b2lkIHNjaGVkdWxlV29ya0FuZFdha2VVcChQYXNzUmVmUHRyPFdvcmtJ
dGVtRWZsPik7CisgICAgdm9pZCBwZXJmb3JtV29yaygpOworICAgIHZvaWQgcGVyZm9ybUZkV29y
aygpOworICAgIHNpemVfdCBnZXROZXh0VGltZXJJRCgpOworICAgIHN0YXRpYyBFaW5hX0Jvb2wg
dGltZXJGaXJlZCh2b2lkKik7ICAgIAorICAgIHN0YXRpYyBFaW5hX0Jvb2wgZXhpdEhhbmRsZXIo
dm9pZCosIGludCwgdm9pZCopOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9lZmwvUnVuTG9vcEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
ZTI0ZmIwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9S
dW5Mb29wRWZsLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgorCisjaW5jbHVkZSAiV29y
a0l0ZW0uaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitSdW5M
b29wOjpSdW5Mb29wKCkKK3sKKyAgICBpZiAoZWNvcmVfaW5pdCgpICE9IDEpCisgICAgICAgIEZB
VEFMKCk7CisKKyAgICBtX1BpcGUgPSBlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhpcyk7
Cit9CisKK1J1bkxvb3A6On5SdW5Mb29wKCkKK3sKKyAgICBlY29yZV9waXBlX2RlbChtX1BpcGUp
OworICAgIGlmIChlY29yZV9zaHV0ZG93bigpICE9IDEpCisgICAgICAgIEZBVEFMKCk7Cit9CisK
K3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwor
fQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5z
aWduZWQgaW50IHNpemUpCit7CisgICAgc3RhdGljX2Nhc3Q8UnVuTG9vcCo+KGRhdGEpLT5wZXJm
b3JtV29yaygpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCit7CisgICAgZWNvcmVfcGlw
ZV93cml0ZShtX1BpcGUsICJ3IiwgMSk7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKFJ1bkxvb3AqIHJ1bkxvb3ApCisgICAgOiBtX3RpbWVyKDApCisgICAgLCBtX2lzUmVwZWF0
aW5nKGZhbHNlKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQorewor
ICAgIHN0b3AoKTsKK30KKworRWluYV9Cb29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJl
ZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNf
Y2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKyAgICBFaW5hX0Jvb2wgcmV0OworCisg
ICAgdGltZXItPmZpcmVkKCk7CisgICAgCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykg
eworICAgICAgICB0aW1lci0+bV90aW1lciA9IDA7CisgICAgICAgIHJldCA9IEVDT1JFX0NBTExC
QUNLX0NBTkNFTDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0ID0gRUNPUkVfQ0FMTEJBQ0tfUkVO
RVc7CisKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3Rh
cnQoZG91YmxlIGZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7CisgICAgaWYgKG1fdGltZXIp
CisgICAgICAgIGVjb3JlX3RpbWVyX2RlbChtX3RpbWVyKTsKKyAgICAKKyAgICBtX2lzUmVwZWF0
aW5nID0gcmVwZWF0OworICAgIG1fdGltZXIgPSBlY29yZV90aW1lcl9hZGQoZmlyZUludGVydmFs
LCB0aW1lckZpcmVkLCB0aGlzKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3Ao
KQoreworICAgIGlmIChtX3RpbWVyKQorICAgICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7
CisgICAgbV90aW1lciA9IDA7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxzZTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTZiNWI1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC0wLDAgKzEsMTY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
b3JrUXVldWUuaCIKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisK
Ky8vIFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBj
aGFyKiBuYW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBpcGUoZmRzKSkKKyAgICAg
ICAgQ1JBU0goKTsKKyAgICBtX3JlYWRGZCA9IGZkc1swXTsKKyAgICBtX3dyaXRlRmQgPSBmZHNb
MV07CisgICAgRkRfWkVSTygmbV9mZHMpOworICAgIEZEX1NFVChtX3JlYWRGZCwgJm1fZmRzKTsK
KyAgICBtX21heEZkID0gbV9yZWFkRmQ7CisKKyAgICBlY29yZV9ldmVudF9oYW5kbGVyX2FkZChF
Q09SRV9FWEVfRVZFTlRfREVMLCBleGl0SGFuZGxlciwgMCk7CisKKyAgICBjcmVhdGVUaHJlYWQo
cmVpbnRlcnByZXRfY2FzdDxXVEY6OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3b3JrUXVl
dWVUaHJlYWQpLCB0aGlzLCBuYW1lKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52
YWxpZGF0ZSgpCit7CisgICAgY2xvc2UobV9yZWFkRmQpOworICAgIGNsb3NlKG1fd3JpdGVGZCk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGltZXJzLnNpemUoKTsgKytpKQorICAg
ICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcnNbaV0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6
cGVyZm9ybVdvcmsoKQoreworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworCisgICAg
d2hpbGUgKCFtX3dvcmtJdGVtUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8V29ya0l0ZW1FZmw+ID4gd29ya0l0ZW1RdWV1ZTsKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVl
LnN3YXAod29ya0l0ZW1RdWV1ZSk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxv
Y2soKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JrSXRlbVF1ZXVlLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgd29ya0l0ZW1RdWV1ZVtpXS0+aXRlbSgpLT5leGVjdXRlKCk7
CisKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisgICAgfQorCisgICAgbV93
b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1G
ZFdvcmsoKQoreworICAgIGZkX3NldCByZWFkZmRzID0gbV9mZHM7CisgICAgCisgICAgaWYgKHNl
bGVjdChtX21heEZkICsgMSwgJnJlYWRmZHMsIDAsIDAsIDApID49IDApIHsKKyAgICAgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX0ZkV29ya0l0ZW1zTG9jayk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9GZFdvcmtJdGVtcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKEZE
X0lTU0VUKG1fRmRXb3JrSXRlbXNbaV0tPmZkKCksICZyZWFkZmRzKSkKKyAgICAgICAgICAgICAg
ICBtX0ZkV29ya0l0ZW1zW2ldLT5pdGVtKCktPmV4ZWN1dGUoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCogV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKiB3b3JrUXVl
dWUpCit7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtV29yaygp
OworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1GZFdvcmsoKTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCBmZCwg
UGFzc093blB0cjxXb3JrSXRlbT4gaXRlbSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fRmRX
b3JrSXRlbXNMb2NrKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fRmRXb3JrSXRlbXMu
c2l6ZSgpOyArK2kpCisgICAgICAgIGlmIChtX0ZkV29ya0l0ZW1zW2ldLT5mZCgpICE9IGZkKQor
ICAgICAgICAgICAgTE9HX0VSUk9SKCIlZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iKTsKKworICAg
IG1fRmRXb3JrSXRlbXMuYXBwZW5kKGFkb3B0UmVmKG5ldyBGZFdvcmtJdGVtKGZkLCBpdGVtLCB0
aGlzKSkpOworCisgICAgaWYgKGZkID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOwor
ICAgIEZEX1NFVChmZCwgJm1fZmRzKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29y
a0FuZFdha2VVcChQYXNzUmVmUHRyPFdvcmtJdGVtRWZsPiBpdGVtKQoreworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3dvcmtJdGVtUXVldWVMb2NrKTsKKyAgICBtX3dvcmtJdGVtUXVldWUuYXBw
ZW5kKGl0ZW0pOworICAgIHdyaXRlKG1fd3JpdGVGZCwgInciLCAxKTsgLy8gV2FrZVVwIFdvcmtR
dWV1ZSBUaHJlYWQKK30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29yayhQYXNzT3duUHRy
PFdvcmtJdGVtPiBpdGVtKQoreworICAgIHNjaGVkdWxlV29ya0FuZFdha2VVcChhZG9wdFJlZihu
ZXcgV29ya0l0ZW1FZmwoaXRlbSwgdGhpcykpKTsKK30KKworc2l6ZV90IFdvcmtRdWV1ZTo6Z2V0
TmV4dFRpbWVySUQoKQoreworICAgIHJldHVybiBtX3RpbWVycy5zaXplKCk7Cit9CisKK0VpbmFf
Qm9vbCBXb3JrUXVldWU6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBUaW1lcldvcmtJ
dGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8VGltZXJXb3JrSXRlbSo+KGRhdGEpOworCisgICAgaXRl
bS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGFkb3B0UmVmKGl0ZW0pKTsKKyAgICBp
dGVtLT5xdWV1ZSgpLT5tX3RpbWVycy5yZW1vdmUoaXRlbS0+dGltZXJJRCgpKTsKKworICAgIHJl
dHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVs
ZVdvcmtBZnRlckRlbGF5KFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0sIGRvdWJsZSBkZWxheSkK
K3sKKyAgICBzaXplX3QgdGltZXJJZCA9IGdldE5leHRUaW1lcklEKCk7CisgICAgbV90aW1lcnNb
dGltZXJJZF0gPSBlY29yZV90aW1lcl9hZGQoZGVsYXksIHRpbWVyRmlyZWQsIG5ldyBUaW1lcldv
cmtJdGVtKHRpbWVySWQsIGl0ZW0sIHRoaXMpKTsKK30KKworSGFzaE1hcDxXZWJLaXQ6OlBsYXRm
b3JtUHJvY2Vzc0lkZW50aWZpZXIsIFJlZlB0cjxXb3JrUXVldWU6OldvcmtJdGVtRWZsPiA+IFdv
cmtRdWV1ZTo6bV90ZXJtV29ya0l0ZW1zOworCitFaW5hX0Jvb2wgV29ya1F1ZXVlOjpleGl0SGFu
ZGxlcih2b2lkKiBkYXRhLCBpbnQgdHlwZSwgdm9pZCogZXZlbnQpCit7CisgICAgRWNvcmVfRXhl
X0V2ZW50X0RlbCogZXYgPSBzdGF0aWNfY2FzdDxFY29yZV9FeGVfRXZlbnRfRGVsKj4oZXZlbnQp
OworICAgIFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBkZWFkQ2hpbGRQaWQgPSBz
dGF0aWNfY2FzdDxXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI+KGV2LT5waWQpOwor
CisgICAgQVNTRVJUX0FSRyhkZWFkQ2hpbGRQaWQsIG1fdGVybVdvcmtJdGVtcy5jb250YWlucyhk
ZWFkQ2hpbGRQaWQpKTsKKyAgICBSZWZQdHI8V29ya0l0ZW1FZmw+IGl0ZW0gPSBtX3Rlcm1Xb3Jr
SXRlbXMudGFrZShkZWFkQ2hpbGRQaWQpOworICAgIGlmIChpdGVtKQorICAgICAgICBpdGVtLT5x
dWV1ZSgpLT5zY2hlZHVsZVdvcmtBbmRXYWtlVXAoaXRlbSk7CisgICAgCisgICAgcmV0dXJuIEVD
T1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29ya09u
VGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3MsIFBh
c3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0pCit7CisgICAgQVNTRVJUX0FSRyhwcm9jZXNzLCAhbV90
ZXJtV29ya0l0ZW1zLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICBtX3Rlcm1Xb3JrSXRlbXMuc2V0
KHByb2Nlc3MsIG5ldyBXb3JrSXRlbUVmbChpdGVtLCB0aGlzKSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY1NjQ2YjAuLjgxMTViNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0z
NTIsNyArMzUyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3QKICAgICBtX2Nvbm5lY3Rpb24g
PSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWluKCkpOwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMo
KTsKLSNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjZWxpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgbV9jb25uZWN0aW9uLT5z
ZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihwcm9jZXNzSWRlbnRp
ZmllcigpKTsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99039</attachid>
            <date>2011-06-28 22:24:34 -0700</date>
            <delta_ts>2011-08-04 23:25:25 -0700</delta_ts>
            <desc>fetch</desc>
            <filename>patch_file5.patch</filename>
            <type>text/plain</type>
            <size>17243</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZTA4ZmYyLi4wNTFiMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDYtMjggIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
RUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3CisKKyAgICAgICAgQWRkIFJ1
bkxvb3BFZmwgYW5kIFdvcmtRdWV1ZUVmbCBmb3IgRWZsIHBvcnQKKyAgICAgICAgKiBQbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6b3Blbik6
CisgICAgICAgICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAg
ICAqIFBsYXRmb3JtL1J1bkxvb3AuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoK
KyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OldvcmtJdGVtRWZsKToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6On5Xb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVl
dWU6OldvcmtJdGVtRWZsOjppdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6
OnF1ZXVlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6Cisg
ICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6RmRXb3JrSXRlbTo6ZmQpOgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJ
dGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6
flRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjp0aW1l
cklEKToKKwogMjAxMS0wNi0yOCAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvQ29ubmVjdGlvbi5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggZmU5NjVjNC4uZjQ4NDk2ZgotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5l
Y3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQAogY2xhc3MgUVNvY2tldE5vdGlmaWVyOwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgiCiAjZW5kaWYKIApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFj
aEV4Y2VwdGlvbnMoKTsKLSNlbGlmIFBMQVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vz
c1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3NmI2
YTY3Li43Y2NmZjEwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMzU2LDYgKzM1Niw4IEBAIGJvb2wgQ29ubmVjdGlv
bjo6b3BlbigpCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVn
aXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCAoR19JT19IVVAgfCBH
X0lPX0VSUiksIFdvcmtJdGVtOjpjcmVhdGUodGhpcywgJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25E
aWRDbG9zZSkpOwogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5k
bGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19JTiwgV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAm
Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcikpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
IG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIobV9zb2NrZXREZXNjcmlw
dG9yLCBXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsICZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVy
KSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVy
LiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFs
CkBAIC00NTcsNyArNDU5LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShFRkwpCiB2b2lkIENvbm5lY3Rpb246OnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vz
c1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzKQog
ewogICAgIG1fY29ubmVjdGlvblF1ZXVlLnNjaGVkdWxlV29ya09uVGVybWluYXRpb24ocHJvY2Vz
cywgV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAmQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3Nl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1MDIyZGE3Li5l
ZjNmZjBjCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyLmgKQEAgLTI5LDYgKzI5LDggQEAKIAogI2lmIFBMQVRGT1JNKFFUKQogY2xhc3MgUVBy
b2Nlc3M7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Niw2ICs0OCw4IEBAIHR5cGVkZWYgdm9pZCog
R1BpZDsKIHR5cGVkZWYgaW50IEdQaWQ7CiAjZW5kaWYKIHR5cGVkZWYgR1BpZCBQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyOworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBwaWRfdCBQbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdCAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDBkZWQ3OTMuLmUxNjliYmQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVu
TG9vcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiAr
MzksOCBAQCB0eXBlZGVmIHN0cnVjdCBfR1NvdXJjZSBHU291cmNlOwogdHlwZWRlZiBzdHJ1Y3Qg
X0dNYWluTG9vcCBHTWFpbkxvb3A7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Db250ZXh0IEdNYWlu
Q29udGV4dDsKIHR5cGVkZWYgaW50IGdib29sZWFuOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2lu
Y2x1ZGUgPEVjb3JlLmg+CiAjZW5kaWYKIAogY2xhc3MgV29ya0l0ZW07CkBAIC0xMDUsNiArMTA3
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBjbGVhclRpbWVyU291cmNlKCk7CiAgICAgICAg
IEdSZWZQdHI8R1NvdXJjZT4gbV90aW1lclNvdXJjZTsKICAgICAgICAgZ2Jvb2xlYW4gbV9pc1Jl
cGVhdGluZzsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgc3RhdGljIEVpbmFfQm9vbCB0
aW1lckZpcmVkKHZvaWQqIGRhdGEpOworICAgICAgICBFY29yZV9UaW1lciogbV90aW1lcjsKKyAg
ICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTYzLDYgKzE2
OSw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgR01haW5Db250ZXh0KiBtX3J1bkxvb3BDb250
ZXh0OwogICAgIEdNYWluTG9vcCogbV9ydW5Mb29wTWFpbjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICBFY29yZV9QaXBlKiBtX1BpcGU7CisgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9p
ZCogZGF0YSwgdm9pZCogYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSk7CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCA3NGQ2MDU1Li45MTBmMzA5Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dv
cmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCkBAIC00
MiwxNCArNDIsMTggQEAKIAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFTb2NrZXROb3Rp
Zmllcj4KLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiBjbGFzcyBRT2Jq
ZWN0OwogY2xhc3MgUVRocmVhZDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJQbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiB0eXBlZGVmIHN0cnVjdCBfR01haW5Db250ZXh0IEdN
YWluQ29udGV4dDsKIHR5cGVkZWYgc3RydWN0IF9HTWFpbkxvb3AgR01haW5Mb29wOwogdHlwZWRl
ZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5jKSAoZ3BvaW50ZXIgZGF0YSk7CisjZWxpZiBQTEFURk9S
TShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIuaCIKICNlbmRpZgogCiBjbGFzcyBXb3JrUXVldWUgewpAQCAtOTAsNiArOTQs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQsIGlu
dCwgUGFzc093blB0cjxXb3JrSXRlbT4pOwogICAgIHZvaWQgdW5yZWdpc3RlckV2ZW50U291cmNl
SGFuZGxlcihpbnQpOwogICAgIHZvaWQgc2NoZWR1bGVXb3JrT25UZXJtaW5hdGlvbihXZWJLaXQ6
OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFBhc3NPd25QdHI8V29ya0l0ZW0+KTsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50LCBQYXNz
T3duUHRyPFdvcmtJdGVtPik7CisgICAgdm9pZCBzY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKFdl
YktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgUGFzc093blB0cjxXb3JrSXRlbT4pOwog
I2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzgsNiArMTg1LDczIEBAIHByaXZhdGU6CiAgICAgY2xh
c3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+ID4g
bV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50U291
cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgY2xhc3MgV29ya0l0ZW1FZmwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
V29ya0l0ZW1FZmw+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdvcmtJdGVtRWZsKFBhc3NPd25Q
dHI8V29ya0l0ZW0+IGl0ZW0sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgICAgICAgICA6IG1faXRl
bShpdGVtKQorICAgICAgICAgICAgLCBtX3F1ZXVlKHF1ZXVlKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgfldvcmtJdGVtRWZsKCkgeyB9CisKKyAgICAgICAgV29ya0l0ZW0qIGl0ZW0o
KSBjb25zdCB7IHJldHVybiBtX2l0ZW0uZ2V0KCk7IH0KKyAgICAgICAgV29ya1F1ZXVlKiBxdWV1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE93
blB0cjxXb3JrSXRlbT4gbV9pdGVtOworICAgICAgICBXb3JrUXVldWUqIG1fcXVldWU7CisgICAg
fTsKKyAgICAKKyAgICBjbGFzcyBGZFdvcmtJdGVtIDogcHVibGljIFdvcmtJdGVtRWZsIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEZkV29ya0l0ZW0oaW50IGZkLCBQYXNzT3duUHRyPFdvcmtJdGVt
PiBpdGVtLCBXb3JrUXVldWUqIHF1ZXVlKSAgIAorICAgICAgICAgICAgOiBXb3JrSXRlbUVmbChp
dGVtLCBxdWV1ZSkKKyAgICAgICAgICAgICwgbV9mZChmZCkKKyAgICAgICAgeworICAgICAgICB9
CisgICAgICAgIH5GZFdvcmtJdGVtKCkgeyB9CisgICAgICAgIGludCBmZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX2ZkOworICAgIH07CisK
KyAgICBjbGFzcyBUaW1lcldvcmtJdGVtIDogcHVibGljIFdvcmtJdGVtRWZsIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFRpbWVyV29ya0l0ZW0oaW50IHRpbWVySUQsIFBhc3NPd25QdHI8V29ya0l0
ZW0+IGl0ZW0sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgICAgICAgICA6IFdvcmtJdGVtRWZsKGl0
ZW0sIHF1ZXVlKQorICAgICAgICAgICAgLCBtX3RpbWVySUQodGltZXJJRCkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIH5UaW1lcldvcmtJdGVtKCkgeyB9CisgICAgICAgIGludCB0aW1l
cklEKCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklEOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBpbnQgbV90aW1lcklEOworICAgIH07CisgICAgCisgICAgZmRfc2V0IG1fZmRzOworICAgIGlu
dCBtX21heEZkOworICAgIGludCBtX3JlYWRGZDsKKyAgICBpbnQgbV93cml0ZUZkOworICAgIAor
ICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1FZmw+ID4gbV93b3JrSXRlbVF1ZXVlOworICAgIE11
dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisgICAgVmVjdG9yPFJlZlB0cjxGZFdvcmtJdGVtPiA+
IG1fRmRXb3JrSXRlbXM7CisgICAgTXV0ZXggbV9GZFdvcmtJdGVtc0xvY2s7CisKKyAgICBWZWN0
b3I8RWNvcmVfVGltZXIqPiBtX3RpbWVyczsKKyAgICAKKyAgICBzdGF0aWMgSGFzaE1hcDxXZWJL
aXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFJlZlB0cjxXb3JrSXRlbUVmbD4gPiBtX3Rl
cm1Xb3JrSXRlbXM7CisKKyAgICBzdGF0aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1
ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3JrQW5kV2FrZVVwKFBhc3NSZWZQdHI8V29ya0l0ZW1F
Zmw+KTsKKyAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CisgICAgdm9pZCBwZXJmb3JtRmRXb3JrKCk7
CisgICAgc2l6ZV90IGdldE5leHRUaW1lcklEKCk7CisgICAgc3RhdGljIEVpbmFfQm9vbCB0aW1l
ckZpcmVkKHZvaWQqKTsgICAgCisgICAgc3RhdGljIEVpbmFfQm9vbCBleGl0SGFuZGxlcih2b2lk
KiwgaW50LCB2b2lkKik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2Vm
bC9SdW5Mb29wRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNWEx
MjhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1J1bkxv
b3BFZmwuY3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisKKyNpbmNsdWRlICJXb3JrSXRl
bS5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1
ZGUgPEVjb3JlX0ZpbGUuaD4KKyNpbmNsdWRlIDxFZGplLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDx1bmlzdGQuaD4KKworUnVuTG9vcDo6UnVuTG9vcCgpCit7CisgICAgaWYgKCFl
Y29yZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIGlm
ICghZWNvcmVfZXZhc19pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IAorICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIAorICAgIGlmICghZWRqZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworCisgICAgbV9QaXBlID0gZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQsIHRoaXMp
OworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgZWNvcmVfcGlwZV9kZWwobV9QaXBl
KTsKKworICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7Cisg
ICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgZWlu
YV9zaHV0ZG93bigpOworfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAgZWNvcmVfbWFp
bl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7CisgICAgZWNvcmVf
bWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXBFdmVudCh2b2lkKiBk
YXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0YXRpY19jYXN0PFJ1
bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXAo
KQoreworICAgIGVjb3JlX3BpcGVfd3JpdGUobV9QaXBlLCAidyIsIDEpOworfQorCitSdW5Mb29w
OjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQorICAgIDogbV90aW1lcigw
KQorICAgICwgbV9pc1JlcGVhdGluZyhmYWxzZSkKK3sKK30KKworUnVuTG9vcDo6VGltZXJCYXNl
Ojp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK0VpbmFfQm9vbCBSdW5Mb29wOjpU
aW1lckJhc2U6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpUaW1lckJh
c2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9vcDo6VGltZXJCYXNlKj4oZGF0YSk7CisgICAg
RWluYV9Cb29sIHJldDsKKworICAgIHRpbWVyLT5maXJlZCgpOworICAgIAorICAgIGlmICghdGlt
ZXItPm1faXNSZXBlYXRpbmcpIHsKKyAgICAgICAgdGltZXItPm1fdGltZXIgPSAwOworICAgICAg
ICByZXQgPSBFQ09SRV9DQUxMQkFDS19DQU5DRUw7CisgICAgfSBlbHNlCisgICAgICAgIHJldCA9
IEVDT1JFX0NBTExCQUNLX1JFTkVXOworCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBmaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQor
eworICAgIGlmIChtX3RpbWVyKQorICAgICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7Cisg
ICAgCisgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsKKyAgICBtX3RpbWVyID0gZWNvcmVfdGlt
ZXJfYWRkKGZpcmVJbnRlcnZhbCwgdGltZXJGaXJlZCwgdGhpcyk7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBpZiAobV90aW1lcikKKyAgICAgICAgZWNvcmVf
dGltZXJfZGVsKG1fdGltZXIpOworICAgIG1fdGltZXIgPSAwOworfQorCitib29sIFJ1bkxvb3A6
OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAobV90aW1lcikgPyB0
cnVlIDogZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwv
V29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVF
ZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ1YTc1YzkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNw
cApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorCisvLyBXb3JrUXVldWUKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9y
bUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpbnQgZmRzWzJdOworICAgIGlm
IChwaXBlKGZkcykpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fcmVhZEZk
ID0gZmRzWzBdOworICAgIG1fd3JpdGVGZCA9IGZkc1sxXTsKKyAgICBGRF9aRVJPKCZtX2Zkcyk7
CisgICAgRkRfU0VUKG1fcmVhZEZkLCAmbV9mZHMpOworICAgIG1fbWF4RmQgPSBtX3JlYWRGZDsK
KworICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfYWRkKEVDT1JFX0VYRV9FVkVOVF9ERUwsIGV4aXRI
YW5kbGVyLCAwKTsKKworICAgIGNyZWF0ZVRocmVhZChyZWludGVycHJldF9jYXN0PFdURjo6VGhy
ZWFkRnVuY3Rpb24+KCZXb3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCksIHRoaXMsIG5hbWUpOwor
fQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBjbG9zZSht
X3JlYWRGZCk7CisgICAgY2xvc2UobV93cml0ZUZkKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV90aW1lcnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGVjb3JlX3RpbWVyX2RlbChtX3Rp
bWVyc1tpXSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtV29yaygpCit7CisgICAgbV93
b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisKKyAgICB3aGlsZSAoIW1fd29ya0l0ZW1RdWV1ZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxXb3JrSXRlbUVmbD4gPiB3b3JrSXRl
bVF1ZXVlOworICAgICAgICBtX3dvcmtJdGVtUXVldWUuc3dhcCh3b3JrSXRlbVF1ZXVlKTsKKwor
ICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9jaygpOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdvcmtJdGVtUXVldWUuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB3b3Jr
SXRlbVF1ZXVlW2ldLT5pdGVtKCktPmV4ZWN1dGUoKTsKKworICAgICAgICBtX3dvcmtJdGVtUXVl
dWVMb2NrLmxvY2soKTsKKyAgICB9CisKKyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9jaygp
OworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybUZkV29yaygpCit7CisgICAgZmRfc2V0IHJl
YWRmZHMgPSBtX2ZkczsKKyAgICAKKyAgICBpZiAoc2VsZWN0KG1fbWF4RmQgKyAxLCAmcmVhZGZk
cywgMCwgMCwgMCkgPj0gMCkgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fRmRXb3JrSXRl
bXNMb2NrKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX0ZkV29ya0l0ZW1zLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoRkRfSVNTRVQobV9GZFdvcmtJdGVtc1tpXS0+
ZmQoKSwgJnJlYWRmZHMpKQorICAgICAgICAgICAgICAgIG1fRmRXb3JrSXRlbXNbaV0tPml0ZW0o
KS0+ZXhlY3V0ZSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkKiBXb3JrUXVldWU6Ondv
cmtRdWV1ZVRocmVhZChXb3JrUXVldWUqIHdvcmtRdWV1ZSkKK3sKKyAgICB3aGlsZSAoMSkgewor
ICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVy
Zm9ybUZkV29yaygpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXb3JrUXVldWU6
OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50IGZkLCBQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVt
KQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9GZFdvcmtJdGVtc0xvY2spOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9GZFdvcmtJdGVtcy5zaXplKCk7ICsraSkKKyAgICAgICAgaWYg
KG1fRmRXb3JrSXRlbXNbaV0tPmZkKCkgIT0gZmQpCisgICAgICAgICAgICBMT0dfRVJST1IoIiVk
IGlzIGFscmVhZHkgcmVnaXN0ZXJkLiIsIGZkKTsKKworICAgIG1fRmRXb3JrSXRlbXMuYXBwZW5k
KGFkb3B0UmVmKG5ldyBGZFdvcmtJdGVtKGZkLCBpdGVtLCB0aGlzKSkpOworCisgICAgaWYgKGZk
ID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOworICAgIEZEX1NFVChmZCwgJm1fZmRz
KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FuZFdha2VVcChQYXNzUmVmUHRy
PFdvcmtJdGVtRWZsPiBpdGVtKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVt
UXVldWVMb2NrKTsKKyAgICBtX3dvcmtJdGVtUXVldWUuYXBwZW5kKGl0ZW0pOworICAgIGlmICh3
cml0ZShtX3dyaXRlRmQsICJ3IiwgMSkgPT0gLTEpIC8vIFdha2VVcCBXb3JrUXVldWUgVGhyZWFk
CisgICAgICAgIExPR19FUlJPUigiV2FrZVVwIFdvcmtRdWV1ZSBUaHJlYWQgRmFpbGVkIik7Cit9
CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmsoUGFzc093blB0cjxXb3JrSXRlbT4gaXRl
bSkKK3sKKyAgICBzY2hlZHVsZVdvcmtBbmRXYWtlVXAoYWRvcHRSZWYobmV3IFdvcmtJdGVtRWZs
KGl0ZW0sIHRoaXMpKSk7Cit9CisKK3NpemVfdCBXb3JrUXVldWU6OmdldE5leHRUaW1lcklEKCkK
K3sKKyAgICByZXR1cm4gbV90aW1lcnMuc2l6ZSgpOworfQorCitFaW5hX0Jvb2wgV29ya1F1ZXVl
Ojp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgVGltZXJXb3JrSXRlbSogaXRlbSA9IHN0
YXRpY19jYXN0PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsKKworICAgIGl0ZW0tPnF1ZXVlKCktPnNj
aGVkdWxlV29ya0FuZFdha2VVcChhZG9wdFJlZihpdGVtKSk7CisgICAgaXRlbS0+cXVldWUoKS0+
bV90aW1lcnMucmVtb3ZlKGl0ZW0tPnRpbWVySUQoKSk7CisKKyAgICByZXR1cm4gRUNPUkVfQ0FM
TEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQWZ0ZXJEZWxh
eShQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVtLCBkb3VibGUgZGVsYXkpCit7CisgICAgc2l6ZV90
IHRpbWVySWQgPSBnZXROZXh0VGltZXJJRCgpOworICAgIG1fdGltZXJzW3RpbWVySWRdID0gZWNv
cmVfdGltZXJfYWRkKGRlbGF5LCB0aW1lckZpcmVkLCBuZXcgVGltZXJXb3JrSXRlbSh0aW1lcklk
LCBpdGVtLCB0aGlzKSk7Cit9CisKK0hhc2hNYXA8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyLCBSZWZQdHI8V29ya1F1ZXVlOjpXb3JrSXRlbUVmbD4gPiBXb3JrUXVldWU6Om1fdGVy
bVdvcmtJdGVtczsKKworRWluYV9Cb29sIFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIodm9pZCogZGF0
YSwgaW50IHR5cGUsIHZvaWQqIGV2ZW50KQoreworICAgIEVjb3JlX0V4ZV9FdmVudF9EZWwqIGV2
ID0gc3RhdGljX2Nhc3Q8RWNvcmVfRXhlX0V2ZW50X0RlbCo+KGV2ZW50KTsKKyAgICBXZWJLaXQ6
OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgZGVhZENoaWxkUGlkID0gc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyPihldi0+cGlkKTsKKworICAgIEFTU0VSVF9B
UkcoZGVhZENoaWxkUGlkLCBtX3Rlcm1Xb3JrSXRlbXMuY29udGFpbnMoZGVhZENoaWxkUGlkKSk7
CisgICAgUmVmUHRyPFdvcmtJdGVtRWZsPiBpdGVtID0gbV90ZXJtV29ya0l0ZW1zLnRha2UoZGVh
ZENoaWxkUGlkKTsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+c2NoZWR1
bGVXb3JrQW5kV2FrZVVwKGl0ZW0pOworICAgIAorICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19D
QU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9uKFdl
YktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzLCBQYXNzT3duUHRyPFdvcmtJ
dGVtPiBpdGVtKQoreworICAgIEFTU0VSVF9BUkcocHJvY2VzcywgIW1fdGVybVdvcmtJdGVtcy5j
b250YWlucyhwcm9jZXNzKSk7CisgICAgbV90ZXJtV29ya0l0ZW1zLnNldChwcm9jZXNzLCBuZXcg
V29ya0l0ZW1FZmwoaXRlbSwgdGhpcykpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103044</attachid>
            <date>2011-08-04 23:25:25 -0700</date>
            <delta_ts>2012-01-03 03:53:40 -0800</delta_ts>
            <desc>fetch</desc>
            <filename>patch_file6.patch</filename>
            <type>text/plain</type>
            <size>19069</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiODMzYWI0Li5iY2VjNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMTEtMDgtMDQgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4K
KworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBD
OjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKiBQbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmg6CisgICAgICAgICogUGxhdGZvcm0vUnVuTG9vcC5oOgorICAgICAgICAqIFBs
YXRmb3JtL1dvcmtRdWV1ZS5oOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6V29y
a0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6fldvcmtJdGVtRWZs
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6Oml0ZW0pOgorICAgICAgICAoV29y
a1F1ZXVlOjpXb3JrSXRlbUVmbDo6cXVldWUpOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJ
dGVtOjpGZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6fkZkV29y
a0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjpmZCk6CisgICAgICAgIChX
b3JrUXVldWU6OlRpbWVyV29ya0l0ZW06OlRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1
ZXVlOjpUaW1lcldvcmtJdGVtOjp+VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6
OlRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9SdW5Mb29w
RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFJ1
bkxvb3A6On5SdW5Mb29wKToKKyAgICAgICAgKFJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChSdW5M
b29wOjpzdG9wKToKKyAgICAgICAgKFJ1bkxvb3A6Ondha2VVcEV2ZW50KToKKyAgICAgICAgKFJ1
bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6
CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoUnVu
TG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQpOgorICAgICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAg
KFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9X
b3JrUXVldWVFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0
aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3Jt
RmRXb3JrKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6
OnNjaGVkdWxlV29ya0FuZFdha2VVcCk6CisgICAgICAgIChXb3JrUXVldWU6OnNjaGVkdWxlV29y
ayk6CisgICAgICAgIChXb3JrUXVldWU6OmdldE5leHRUaW1lcklEKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FmdGVy
RGVsYXkpOgorICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3Jr
UXVldWU6OnNjaGVkdWxlV29ya09uVGVybWluYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRp
ZEZpbmlzaExhdW5jaGluZyk6CisKIDIwMTEtMDgtMDQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBGdXR1cmUtcHJvb2YgWGNvZGUgY29uZmlndXJhdGlvbiBzZXR0aW5n
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5kZXgg
OTRjYzM3OS4uNjIzZTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9D
b25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIGNsYXNzIFFTb2NrZXROb3RpZmllcjsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZvcm1Q
cm9jZXNzSWRlbnRpZmllci5oIgogI2VuZGlmCiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25P
bk1hY2hFeGNlcHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmluZGV4IDRlNzk0Y2YuLjIzODZmZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cApAQCAtNDIyLDYgKzQyMiw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFU
Rk9STShHVEspCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRs
ZXIobV9zb2NrZXREZXNjcmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIFdvcmtJdGVtOjpj
cmVhdGUodGhpcywgJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSkpOwogICAgIG1fY29u
bmVjdGlvblF1ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRv
ciwgR19JT19JTiwgV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAmQ29ubmVjdGlvbjo6cmVhZHlSZWFk
SGFuZGxlcikpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnJl
Z2lzdGVyRmRFdmVudEhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBXb3JrSXRlbTo6Y3JlYXRl
KHRoaXMsICZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyKSk7CiAjZW5kaWYKIAogICAgIC8v
IFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2
ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFsCkBAIC01NTEsNyArNTUzLDcgQEAg
Ym9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQs
IFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFBMQVRG
T1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiB2b2lkIENvbm5lY3Rp
b246OnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzKQogewogICAgIG1fY29ubmVjdGlvblF1
ZXVlLnNjaGVkdWxlV29ya09uVGVybWluYXRpb24ocHJvY2VzcywgV29ya0l0ZW06OmNyZWF0ZSh0
aGlzLCAmQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKaW5kZXggNTAyMmRh
Ny4uZWYzZmYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Q
cm9jZXNzSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIuaApAQCAtMjksNiArMjksOCBAQAogCiAjaWYgUExBVEZPUk0oUVQp
CiBjbGFzcyBRUHJvY2VzczsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ2LDYgKzQ4LDggQEAgdHlw
ZWRlZiB2b2lkKiBHUGlkOwogdHlwZWRlZiBpbnQgR1BpZDsKICNlbmRpZgogdHlwZWRlZiBHUGlk
IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVm
IHBpZF90IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5o
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oCmluZGV4IDk2YTE1Y2MuLjkyMDEx
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKQEAgLTM5LDYgKzM5LDggQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0dTb3VyY2UgR1NvdXJjZTsKIHR5cGVkZWYgc3RydWN0IF9HTWFpbkxvb3AgR01h
aW5Mb29wOwogdHlwZWRlZiBzdHJ1Y3QgX0dNYWluQ29udGV4dCBHTWFpbkNvbnRleHQ7CiB0eXBl
ZGVmIGludCBnYm9vbGVhbjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5o
PgogI2VuZGlmCiAKIGNsYXNzIFdvcmtJdGVtOwpAQCAtMTA5LDYgKzExMSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3Vy
Y2U+IG1fdGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgICAgIHN0YXRpYyBFaW5hX0Jvb2wgdGltZXJGaXJlZCh2b2lk
KiBkYXRhKTsKKyAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CisgICAgICAgIGJvb2wgbV9p
c1JlcGVhdGluZzsKICNlbmRpZgogICAgIH07CiAKQEAgLTE2Nyw2ICsxNzMsOSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEdNYWluQ29udGV4dCogbV9ydW5Mb29wQ29udGV4dDsKICAgICBHTWFp
bkxvb3AqIG1fcnVuTG9vcE1haW47CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgRWNvcmVfUGlw
ZSogbV9QaXBlOworICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQq
IGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1dvcmtRdWV1ZS5oCmluZGV4IDc0ZDYwNTUuLjkxMGYzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1dvcmtRdWV1ZS5oCkBAIC00MiwxNCArNDIsMTggQEAKIAogI2lmIFBMQVRGT1JNKFFUKQogI2lu
Y2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlm
aWVyLmgiCiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUVRocmVhZDsKICNlbGlmIFBMQVRGT1JNKEdU
SykKLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiB0eXBlZGVmIHN0cnVj
dCBfR01haW5Db250ZXh0IEdNYWluQ29udGV4dDsKIHR5cGVkZWYgc3RydWN0IF9HTWFpbkxvb3Ag
R01haW5Mb29wOwogdHlwZWRlZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5jKSAoZ3BvaW50ZXIgZGF0
YSk7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1
ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNlbmRpZgogCiBjbGFzcyBXb3JrUXVl
dWUgewpAQCAtOTAsNiArOTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckV2ZW50U291
cmNlSGFuZGxlcihpbnQsIGludCwgUGFzc093blB0cjxXb3JrSXRlbT4pOwogICAgIHZvaWQgdW5y
ZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQpOwogICAgIHZvaWQgc2NoZWR1bGVXb3JrT25U
ZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFBhc3NPd25QdHI8
V29ya0l0ZW0+KTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyRmRFdmVu
dEhhbmRsZXIoaW50LCBQYXNzT3duUHRyPFdvcmtJdGVtPik7CisgICAgdm9pZCBzY2hlZHVsZVdv
cmtPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgUGFzc093
blB0cjxXb3JrSXRlbT4pOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzgsNiArMTg1LDczIEBA
IHByaXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3Rv
cjxFdmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGlu
dCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsg
CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY2xhc3MgV29ya0l0ZW1FZmwgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8V29ya0l0ZW1FZmw+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdv
cmtJdGVtRWZsKFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0sIFdvcmtRdWV1ZSogcXVldWUpCisg
ICAgICAgICAgICA6IG1faXRlbShpdGVtKQorICAgICAgICAgICAgLCBtX3F1ZXVlKHF1ZXVlKQor
ICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgfldvcmtJdGVtRWZsKCkgeyB9CisKKyAgICAg
ICAgV29ya0l0ZW0qIGl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2l0ZW0uZ2V0KCk7IH0KKyAgICAg
ICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIE93blB0cjxXb3JrSXRlbT4gbV9pdGVtOworICAgICAgICBXb3JrUXVl
dWUqIG1fcXVldWU7CisgICAgfTsKKyAgICAKKyAgICBjbGFzcyBGZFdvcmtJdGVtIDogcHVibGlj
IFdvcmtJdGVtRWZsIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEZkV29ya0l0ZW0oaW50IGZkLCBQ
YXNzT3duUHRyPFdvcmtJdGVtPiBpdGVtLCBXb3JrUXVldWUqIHF1ZXVlKSAgIAorICAgICAgICAg
ICAgOiBXb3JrSXRlbUVmbChpdGVtLCBxdWV1ZSkKKyAgICAgICAgICAgICwgbV9mZChmZCkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIH5GZFdvcmtJdGVtKCkgeyB9CisgICAgICAgIGlu
dCBmZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGlu
dCBtX2ZkOworICAgIH07CisKKyAgICBjbGFzcyBUaW1lcldvcmtJdGVtIDogcHVibGljIFdvcmtJ
dGVtRWZsIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFRpbWVyV29ya0l0ZW0oaW50IHRpbWVySUQs
IFBhc3NPd25QdHI8V29ya0l0ZW0+IGl0ZW0sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgICAgICAg
ICA6IFdvcmtJdGVtRWZsKGl0ZW0sIHF1ZXVlKQorICAgICAgICAgICAgLCBtX3RpbWVySUQodGlt
ZXJJRCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIH5UaW1lcldvcmtJdGVtKCkgeyB9
CisgICAgICAgIGludCB0aW1lcklEKCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklEOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBpbnQgbV90aW1lcklEOworICAgIH07CisgICAgCisgICAgZmRf
c2V0IG1fZmRzOworICAgIGludCBtX21heEZkOworICAgIGludCBtX3JlYWRGZDsKKyAgICBpbnQg
bV93cml0ZUZkOworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1FZmw+ID4gbV93b3Jr
SXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisgICAgVmVjdG9yPFJl
ZlB0cjxGZFdvcmtJdGVtPiA+IG1fRmRXb3JrSXRlbXM7CisgICAgTXV0ZXggbV9GZFdvcmtJdGVt
c0xvY2s7CisKKyAgICBWZWN0b3I8RWNvcmVfVGltZXIqPiBtX3RpbWVyczsKKyAgICAKKyAgICBz
dGF0aWMgSGFzaE1hcDxXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFJlZlB0cjxX
b3JrSXRlbUVmbD4gPiBtX3Rlcm1Xb3JrSXRlbXM7CisKKyAgICBzdGF0aWMgdm9pZCogd29ya1F1
ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3JrQW5kV2FrZVVwKFBh
c3NSZWZQdHI8V29ya0l0ZW1FZmw+KTsKKyAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CisgICAgdm9p
ZCBwZXJmb3JtRmRXb3JrKCk7CisgICAgc2l6ZV90IGdldE5leHRUaW1lcklEKCk7CisgICAgc3Rh
dGljIEVpbmFfQm9vbCB0aW1lckZpcmVkKHZvaWQqKTsgICAgCisgICAgc3RhdGljIEVpbmFfQm9v
bCBleGl0SGFuZGxlcih2b2lkKiwgaW50LCB2b2lkKik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi4yZjk3YTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisK
KyNpbmNsdWRlICJXb3JrSXRlbS5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNv
cmVfRXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0ZpbGUuaD4KKyNpbmNsdWRlIDxFZGplLmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworUnVuTG9vcDo6UnVuTG9v
cCgpCit7CisgICAgaWYgKCFlY29yZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIAorICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIAorICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpCisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIGlmICghZWRqZV9pbml0KCkpCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgbV9QaXBlID0gZWNvcmVfcGlwZV9hZGQo
d2FrZVVwRXZlbnQsIHRoaXMpOworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgZWNv
cmVfcGlwZV9kZWwobV9QaXBlKTsKKworICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICBlY29yZV9m
aWxlX3NodXRkb3duKCk7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGVjb3JlX3No
dXRkb3duKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKKyAgICBlY29yZV9tYWluX2xv
b3BfYmVnaW4oKTsKK30KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKKyAgICBlY29yZV9tYWlu
X2xvb3BfcXVpdCgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEs
IHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpCit7CisgICAgc3RhdGljX2Nhc3Q8UnVuTG9v
cCo+KGRhdGEpLT5wZXJmb3JtV29yaygpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCit7
CisgICAgZWNvcmVfcGlwZV93cml0ZShtX1BpcGUsICJ3IiwgMSk7Cit9CisKK1J1bkxvb3A6OlRp
bWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AqIHJ1bkxvb3ApCisgICAgOiBtX3RpbWVyKDApCisg
ICAgLCBtX2lzUmVwZWF0aW5nKGZhbHNlKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5U
aW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKworRWluYV9Cb29sIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSog
dGltZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKyAgICBFaW5h
X0Jvb2wgcmV0OworCisgICAgdGltZXItPmZpcmVkKCk7CisgICAgCisgICAgaWYgKCF0aW1lci0+
bV9pc1JlcGVhdGluZykgeworICAgICAgICB0aW1lci0+bV90aW1lciA9IDA7CisgICAgICAgIHJl
dCA9IEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0ID0gRUNP
UkVfQ0FMTEJBQ0tfUkVORVc7CisKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIFJ1bkxvb3A6
OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIGZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7Cisg
ICAgaWYgKG1fdGltZXIpCisgICAgICAgIGVjb3JlX3RpbWVyX2RlbChtX3RpbWVyKTsKKyAgICAK
KyAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OworICAgIG1fdGltZXIgPSBlY29yZV90aW1lcl9h
ZGQoZmlyZUludGVydmFsLCB0aW1lckZpcmVkLCB0aGlzKTsKK30KKwordm9pZCBSdW5Mb29wOjpU
aW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3RpbWVyKQorICAgICAgICBlY29yZV90aW1l
cl9kZWwobV90aW1lcik7CisgICAgbV90aW1lciA9IDA7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGlt
ZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUg
OiBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3Jr
UXVldWVFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzkwNjJmYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBA
IC0wLDAgKzEsMTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVk
ZSA8dW5pc3RkLmg+CisKKy8vIFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5p
dGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBp
cGUoZmRzKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9yZWFkRmQgPSBm
ZHNbMF07CisgICAgbV93cml0ZUZkID0gZmRzWzFdOworICAgIEZEX1pFUk8oJm1fZmRzKTsKKyAg
ICBGRF9TRVQobV9yZWFkRmQsICZtX2Zkcyk7CisgICAgbV9tYXhGZCA9IG1fcmVhZEZkOworCisg
ICAgZWNvcmVfZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfRVhFX0VWRU5UX0RFTCwgZXhpdEhhbmRs
ZXIsIDApOworCisgICAgY3JlYXRlVGhyZWFkKHJlaW50ZXJwcmV0X2Nhc3Q8V1RGOjpUaHJlYWRG
dW5jdGlvbj4oJldvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKSwgdGhpcywgbmFtZSk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQoreworICAgIGNsb3NlKG1fcmVh
ZEZkKTsKKyAgICBjbG9zZShtX3dyaXRlRmQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3RpbWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgZWNvcmVfdGltZXJfZGVsKG1fdGltZXJz
W2ldKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dvcmtJ
dGVtUXVldWVMb2NrLmxvY2soKTsKKworICAgIHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlzRW1w
dHkoKSkgeworICAgICAgICBWZWN0b3I8UmVmUHRyPFdvcmtJdGVtRWZsPiA+IHdvcmtJdGVtUXVl
dWU7CisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5zd2FwKHdvcmtJdGVtUXVldWUpOworCisgICAg
ICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29ya0l0ZW1RdWV1ZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVt
UXVldWVbaV0tPml0ZW0oKS0+ZXhlY3V0ZSgpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxv
Y2subG9jaygpOworICAgIH0KKworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7Cit9
CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3JrKCkKK3sKKyAgICBmZF9zZXQgcmVhZGZk
cyA9IG1fZmRzOworICAgIAorICAgIGlmIChzZWxlY3QobV9tYXhGZCArIDEsICZyZWFkZmRzLCAw
LCAwLCAwKSA+PSAwKSB7CisgICAgICAgIGlmIChGRF9JU1NFVChtX3JlYWRGZCwgJnJlYWRmZHMp
KSB7CisgICAgICAgICAgICBjaGFyIGJ1ZlsxXTsKKyAgICAgICAgICAgIHJlYWQobV9yZWFkRmQs
IGJ1ZiwgMSk7CisgICAgICAgIH0KKworICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fRmRXb3Jr
SXRlbXNMb2NrKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX0ZkV29ya0l0ZW1z
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoRkRfSVNTRVQobV9GZFdvcmtJdGVtc1tp
XS0+ZmQoKSwgJnJlYWRmZHMpKQorICAgICAgICAgICAgICAgIG1fRmRXb3JrSXRlbXNbaV0tPml0
ZW0oKS0+ZXhlY3V0ZSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkKiBXb3JrUXVldWU6
OndvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqIHdvcmtRdWV1ZSkKK3sKKyAgICB3aGlsZSAoMSkg
eworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtRdWV1ZS0+
cGVyZm9ybUZkV29yaygpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXb3JrUXVl
dWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50IGZkLCBQYXNzT3duUHRyPFdvcmtJdGVtPiBp
dGVtKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9GZFdvcmtJdGVtc0xvY2spOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9GZFdvcmtJdGVtcy5zaXplKCk7ICsraSkKKyAgICAgICAg
aWYgKG1fRmRXb3JrSXRlbXNbaV0tPmZkKCkgIT0gZmQpCisgICAgICAgICAgICBMT0dfRVJST1Io
IiVkIGlzIGFscmVhZHkgcmVnaXN0ZXJkLiIsIGZkKTsKKworICAgIG1fRmRXb3JrSXRlbXMuYXBw
ZW5kKGFkb3B0UmVmKG5ldyBGZFdvcmtJdGVtKGZkLCBpdGVtLCB0aGlzKSkpOworCisgICAgaWYg
KGZkID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOworICAgIEZEX1NFVChmZCwgJm1f
ZmRzKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FuZFdha2VVcChQYXNzUmVm
UHRyPFdvcmtJdGVtRWZsPiBpdGVtKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJ
dGVtUXVldWVMb2NrKTsKKyAgICBtX3dvcmtJdGVtUXVldWUuYXBwZW5kKGl0ZW0pOworICAgIGlm
ICh3cml0ZShtX3dyaXRlRmQsICJ3IiwgMSkgPT0gLTEpIC8vIFdha2VVcCBXb3JrUXVldWUgVGhy
ZWFkCisgICAgICAgIExPR19FUlJPUigiV2FrZVVwIFdvcmtRdWV1ZSBUaHJlYWQgRmFpbGVkIik7
Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmsoUGFzc093blB0cjxXb3JrSXRlbT4g
aXRlbSkKK3sKKyAgICBzY2hlZHVsZVdvcmtBbmRXYWtlVXAoYWRvcHRSZWYobmV3IFdvcmtJdGVt
RWZsKGl0ZW0sIHRoaXMpKSk7Cit9CisKK3NpemVfdCBXb3JrUXVldWU6OmdldE5leHRUaW1lcklE
KCkKK3sKKyAgICByZXR1cm4gbV90aW1lcnMuc2l6ZSgpOworfQorCitFaW5hX0Jvb2wgV29ya1F1
ZXVlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgVGltZXJXb3JrSXRlbSogaXRlbSA9
IHN0YXRpY19jYXN0PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsKKworICAgIGl0ZW0tPnF1ZXVlKCkt
PnNjaGVkdWxlV29ya0FuZFdha2VVcChhZG9wdFJlZihpdGVtKSk7CisgICAgaXRlbS0+cXVldWUo
KS0+bV90aW1lcnMucmVtb3ZlKGl0ZW0tPnRpbWVySUQoKSk7CisKKyAgICByZXR1cm4gRUNPUkVf
Q0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQWZ0ZXJE
ZWxheShQYXNzT3duUHRyPFdvcmtJdGVtPiBpdGVtLCBkb3VibGUgZGVsYXkpCit7CisgICAgc2l6
ZV90IHRpbWVySWQgPSBnZXROZXh0VGltZXJJRCgpOworICAgIG1fdGltZXJzW3RpbWVySWRdID0g
ZWNvcmVfdGltZXJfYWRkKGRlbGF5LCB0aW1lckZpcmVkLCBuZXcgVGltZXJXb3JrSXRlbSh0aW1l
cklkLCBpdGVtLCB0aGlzKSk7Cit9CisKK0hhc2hNYXA8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLCBSZWZQdHI8V29ya1F1ZXVlOjpXb3JrSXRlbUVmbD4gPiBXb3JrUXVldWU6Om1f
dGVybVdvcmtJdGVtczsKKworRWluYV9Cb29sIFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIodm9pZCog
ZGF0YSwgaW50IHR5cGUsIHZvaWQqIGV2ZW50KQoreworICAgIEVjb3JlX0V4ZV9FdmVudF9EZWwq
IGV2ID0gc3RhdGljX2Nhc3Q8RWNvcmVfRXhlX0V2ZW50X0RlbCo+KGV2ZW50KTsKKyAgICBXZWJL
aXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgZGVhZENoaWxkUGlkID0gc3RhdGljX2Nhc3Q8
V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyPihldi0+cGlkKTsKKworICAgIEFTU0VS
VF9BUkcoZGVhZENoaWxkUGlkLCBtX3Rlcm1Xb3JrSXRlbXMuY29udGFpbnMoZGVhZENoaWxkUGlk
KSk7CisgICAgUmVmUHRyPFdvcmtJdGVtRWZsPiBpdGVtID0gbV90ZXJtV29ya0l0ZW1zLnRha2Uo
ZGVhZENoaWxkUGlkKTsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+c2No
ZWR1bGVXb3JrQW5kV2FrZVVwKGl0ZW0pOworICAgIAorICAgIHJldHVybiBFQ09SRV9DQUxMQkFD
S19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtPblRlcm1pbmF0aW9u
KFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzLCBQYXNzT3duUHRyPFdv
cmtJdGVtPiBpdGVtKQoreworICAgIEFTU0VSVF9BUkcocHJvY2VzcywgIW1fdGVybVdvcmtJdGVt
cy5jb250YWlucyhwcm9jZXNzKSk7CisgICAgbV90ZXJtV29ya0l0ZW1zLnNldChwcm9jZXNzLCBu
ZXcgV29ya0l0ZW1FZmwoaXRlbSwgdGhpcykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhOGRmYWUwLi42NWU4OGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzUzLDcgKzM1Myw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0CiAgICAgbV9jb25uZWN0aW9uID0gQ29yZUlQQzo6
Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwg
dGhpcywgUnVuTG9vcDo6bWFpbigpKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgbV9jb25uZWN0
aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNlcHRpb25zKCk7Ci0jZWxpZiBQ
TEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgbV9j
b25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihw
cm9jZXNzSWRlbnRpZmllcigpKTsKICNlbmRpZgogCg==
</data>
<flag name="review"
          id="98503"
          type_id="1"
          status="-"
          setter="leandro"
    />
    <flag name="commit-queue"
          id="98504"
          type_id="3"
          status="-"
          setter="leandro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120929</attachid>
            <date>2012-01-03 03:53:40 -0800</date>
            <delta_ts>2012-01-03 04:34:20 -0800</delta_ts>
            <desc>fetch for RunLoopEfl and WorkQueueEfl</desc>
            <filename>patch-[20120102]-[youngtaeck.song@samsung.com]-[Add_RunLoopEfl_and_WorkQueueEfl].patch</filename>
            <type>text/plain</type>
            <size>18552</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMDE5ZGUzLi5jMzI5OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTItMDEtMDIgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVF
ZmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGlu
aXRpYWwgdmVyc2lvbiBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwgZm9yIFdlYktpdDIgRWZs
LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICog
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAqIFBsYXRmb3JtL1BsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9SdW5Mb29wLmg6CisgICAgICAgICog
UGxhdGZvcm0vV29ya1F1ZXVlLmg6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpX
b3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0ZW1F
ZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAgICAg
IChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChXb3JrUXVldWU6OkZk
V29ya0l0ZW06OkZkV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjp+
RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OmZkKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChX
b3JrUXVldWU6OlRpbWVyV29ya0l0ZW06On5UaW1lcldvcmtJdGVtKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6VGltZXJXb3JrSXRlbTo6dGltZXJJRCk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1J1
bkxvb3BFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAg
ICAoUnVuTG9vcDo6flJ1bkxvb3ApOgorICAgICAgICAoUnVuTG9vcDo6cnVuKToKKyAgICAgICAg
KFJ1bkxvb3A6OnN0b3ApOgorICAgICAgICAoUnVuTG9vcDo6d2FrZVVwRXZlbnQpOgorICAgICAg
ICAoUnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKToKKyAgICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAg
IChSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQpOgorICAgICAgICAoUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSk6CisgICAgICAgICogUGxhdGZvcm0v
ZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9y
bUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnBl
cmZvcm1GZFdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRvVGhyZWFkKToK
KyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OnNjaGVkdWxl
V29ya0FuZFdha2VVcCk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6Z2V0TmV4dFRpbWVySUQpOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1lckZp
cmVkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaE9u
VGVybWluYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2Vi
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisKIDIwMTItMDEtMDEgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1
ZXNFbmRpbmdXaXRoU3RyaW5nIGVudGVycyBhbiBpbmZpbml0ZSBsb29wIGlmIHRoZSBzZWFyY2gg
dmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5k
ZXggNjBlYWQwMy4uYTMwMjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Db25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIGNsYXNzIFFTb2NrZXROb3RpZmllcjsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2VuZGlmCiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJs
aWM6CiAKICNpZiBPUyhEQVJXSU4pCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25P
bk1hY2hFeGNlcHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmluZGV4IGQ1NGFmZjguLjM0YWIzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cApAQCAtNDIzLDYgKzQyMyw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFU
Rk9STShHVEspCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRs
ZXIobV9zb2NrZXREZXNjcmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIGJpbmQoJkNvbm5l
Y3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogICAgIG1fY29ubmVjdGlvblF1ZXVl
LnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19JTiwg
YmluZCgmQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOworI2VsaWYgUExBVEZP
Uk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIobV9z
b2NrZXREZXNjcmlwdG9yLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlz
KSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVy
LiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFs
CkBAIC01NTIsNyArNTU0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShFRkwpCiB2b2lkIENvbm5lY3Rpb246OnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vz
c1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzKQog
ewogICAgIG1fY29ubmVjdGlvblF1ZXVlLmRpc3BhdGNoT25UZXJtaW5hdGlvbihwcm9jZXNzLCBi
aW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAppbmRleCA1
MDIyZGE3Li45Y2FmZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVkZWYgdm9pZCog
R1BpZDsKIHR5cGVkZWYgaW50IEdQaWQ7CiAjZW5kaWYKIHR5cGVkZWYgR1BpZCBQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyOworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBwaWRfdCBQbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdCAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaAppbmRleCBkMzY4MmQyLi5iYmYwYmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vUnVuTG9vcC5oCkBAIC00MSw2ICs0MSw4IEBAIHR5cGVkZWYgc3RydWN0IF9H
U291cmNlIEdTb3VyY2U7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsKIHR5
cGVkZWYgc3RydWN0IF9HTWFpbkNvbnRleHQgR01haW5Db250ZXh0OwogdHlwZWRlZiBpbnQgZ2Jv
b2xlYW47CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC0xMDgsNiArMTEwLDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCBjbGVhclRpbWVyU291cmNlKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV90
aW1lclNvdXJjZTsKICAgICAgICAgZ2Jvb2xlYW4gbV9pc1JlcGVhdGluZzsKKyNlbGlmIFBMQVRG
T1JNKEVGTCkKKyAgICAgICAgc3RhdGljIGJvb2wgdGltZXJGaXJlZCh2b2lkKiBkYXRhKTsKKyAg
ICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CisgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZzsK
ICNlbmRpZgogICAgIH07CiAKQEAgLTE2Nyw2ICsxNzMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEdNYWluQ29udGV4dCogbV9ydW5Mb29wQ29udGV4dDsKICAgICBHTWFpbkxvb3AqIG1fcnVu
TG9vcE1haW47CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgRWNvcmVfUGlwZSogbV9QaXBlOwor
ICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWdu
ZWQgaW50IHNpemUpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5o
CmluZGV4IGMwZTViMzMuLjFiZWRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5o
CkBAIC01MSw2ICs1MSw5IEBAIGNsYXNzIFFUaHJlYWQ7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5D
b250ZXh0IEdNYWluQ29udGV4dDsKIHR5cGVkZWYgc3RydWN0IF9HTWFpbkxvb3AgR01haW5Mb29w
OwogdHlwZWRlZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5jKSAoZ3BvaW50ZXIgZGF0YSk7CisjZWxp
ZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPEVjb3JlLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw2ICs5
OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCwg
aW50LCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXZlbnRT
b3VyY2VIYW5kbGVyKGludCk7CiAgICAgdm9pZCBkaXNwYXRjaE9uVGVybWluYXRpb24oV2ViS2l0
OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCwg
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9u
KFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9pZCgp
PiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xODMsNiArMTg5LDgwIEBAIHByaXZhdGU6CiAg
ICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJj
ZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgVmVjdG9yPEV2
ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgY2xhc3MgV29ya0l0ZW1FZmwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8V29ya0l0ZW1FZmw+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdvcmtJdGVtRWZsKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAg
ICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAgICAgLCBtX3F1ZXVlKHF1ZXVl
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgfldvcmtJdGVtRWZsKCkgeyB9CisKKyAg
ICAgICAgdm9pZCBleGVjdXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcXVldWUt
Pm1faXNWYWxpZCkKKyAgICAgICAgICAgICAgICBtX2Z1bmN0aW9uKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBXb3JrUXVldWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgICAg
ICBXb3JrUXVldWUqIG1fcXVldWU7CisgICAgfTsKKworICAgIGNsYXNzIEZkV29ya0l0ZW0gOiBw
dWJsaWMgV29ya0l0ZW1FZmwgeworICAgIHB1YmxpYzoKKyAgICAgICAgRmRXb3JrSXRlbShpbnQg
ZmQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQor
ICAgICAgICAgICAgOiBXb3JrSXRlbUVmbChmdW5jdGlvbiwgcXVldWUpCisgICAgICAgICAgICAs
IG1fZmQoZmQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB+RmRXb3JrSXRlbSgpIHsg
fQorICAgICAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBtX2ZkOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBpbnQgbV9mZDsKKyAgICB9OworCisgICAgY2xhc3MgVGltZXJXb3JrSXRlbSA6
IHB1YmxpYyBXb3JrSXRlbUVmbCB7CisgICAgcHVibGljOgorICAgICAgICBUaW1lcldvcmtJdGVt
KGludCB0aW1lcklELCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVl
KiBxdWV1ZSkKKyAgICAgICAgICAgIDogV29ya0l0ZW1FZmwoZnVuY3Rpb24sIHF1ZXVlKQorICAg
ICAgICAgICAgLCBtX3RpbWVySUQodGltZXJJRCkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIH5UaW1lcldvcmtJdGVtKCkgeyB9CisgICAgICAgIGludCB0aW1lcklEKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lcklEOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV90aW1lcklE
OworICAgIH07CisKKyAgICBmZF9zZXQgbV9mZFNldDsKKyAgICBpbnQgbV9tYXhGZDsKKyAgICBp
bnQgbV9yZWFkRnJvbVBpcGVGZDsKKyAgICBpbnQgbV93cml0ZVRvUGlwZUZkOworICAgIGJvb2wg
bV90aHJlYWRMb29wOworCisgICAgVmVjdG9yPFJlZlB0cjxXb3JrSXRlbUVmbD4gPiBtX3dvcmtJ
dGVtUXVldWU7CisgICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKKyAgICBWZWN0b3I8UmVm
UHRyPEZkV29ya0l0ZW0+ID4gbV9GZFdvcmtJdGVtczsKKyAgICBNdXRleCBtX0ZkV29ya0l0ZW1z
TG9jazsKKworICAgIFZlY3RvcjxFY29yZV9UaW1lcio+IG1fdGltZXJzOworCisgICAgc3RhdGlj
IEhhc2hNYXA8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBSZWZQdHI8V29ya0l0
ZW1FZmw+ID4gbV90ZXJtV29ya0l0ZW1zOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFk
KGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1
ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3JrQW5kV2FrZVVwKFBhc3NSZWZQdHI8V29ya0l0ZW1F
Zmw+KTsKKyAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CisgICAgdm9pZCBwZXJmb3JtRmRXb3JrKCk7
CisgICAgc2l6ZV90IGdldE5leHRUaW1lcklEKCk7CisgICAgc3RhdGljIGJvb2wgdGltZXJGaXJl
ZCh2b2lkKik7CisgICAgc3RhdGljIGJvb2wgZXhpdEhhbmRsZXIodm9pZCosIGludCwgdm9pZCop
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwv
UnVuTG9vcEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0ZmEzMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcApAQCAt
MCwwICsxLDEyNCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJv
bmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgorCisj
aW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNv
cmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgPHVuaXN0ZC5oPgorCisjZGVmaW5lIFdBS0VVUF9FQ09SRV9QSVBFX01FU1NBR0UgICAiVyIK
KyNkZWZpbmUgRUNPUkVfUElQRV9NRVNTQUdFX1NJWkUgICAgIDEKKworUnVuTG9vcDo6UnVuTG9v
cCgpCit7CisgICAgaWYgKCFlY29yZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisKKyAgICBpZiAoIWVjb3JlX2ZpbGVfaW5pdCgpKQorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKworICAgIGlmICghZWRqZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgbV9QaXBlID0gZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQs
IHRoaXMpOworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgZWNvcmVfcGlwZV9kZWwo
bV9QaXBlKTsKKworICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICBlY29yZV9maWxlX3NodXRkb3du
KCk7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGVjb3JlX3NodXRkb3duKCk7Cit9
CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsK
K30KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgp
OworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1Ziwg
dW5zaWduZWQgaW50IHNpemUpCit7CisgICAgc3RhdGljX2Nhc3Q8UnVuTG9vcCo+KGRhdGEpLT5w
ZXJmb3JtV29yaygpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCit7CisgICAgZWNvcmVf
cGlwZV93cml0ZShtX1BpcGUsIFdBS0VVUF9FQ09SRV9QSVBFX01FU1NBR0UsIEVDT1JFX1BJUEVf
TUVTU0FHRV9TSVpFKTsKK30KKworUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9v
cCogcnVuTG9vcCkKKyAgICA6IG1fdGltZXIoMCkKKyAgICAsIG1faXNSZXBlYXRpbmcoZmFsc2Up
Cit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCit7CisgICAgc3RvcCgp
OworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCh2b2lkKiBkYXRhKQor
eworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpU
aW1lckJhc2UqPihkYXRhKTsKKworICAgIHRpbWVyLT5maXJlZCgpOworCisgICAgaWYgKCF0aW1l
ci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICB0aW1lci0+bV90aW1lciA9IDA7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBmaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQor
eworICAgIGlmIChtX3RpbWVyKQorICAgICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7CisK
KyAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OworICAgIG1fdGltZXIgPSBlY29yZV90aW1lcl9h
ZGQoZmlyZUludGVydmFsLCByZWludGVycHJldF9jYXN0PEVpbmFfQm9vbCgqKSh2b2lkKik+KHRp
bWVyRmlyZWQpLCB0aGlzKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQor
eworICAgIGlmIChtX3RpbWVyKQorICAgICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7Cisg
ICAgbV90aW1lciA9IDA7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxzZTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYWQxNTdmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC0wLDAgKzEsMTgwIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPGVycm5v
Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNkZWZpbmUgV0FLRVVQX1RIUkVBRF9NRVNTQUdF
ICAgIlciCisjZGVmaW5lIEZJTklTSF9USFJFQURfTUVTU0FHRSAgICJGIgorI2RlZmluZSBUSFJF
QURfTUVTU0FHRV9TSVpFICAgICAxCisKKy8vIFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBmZHNbMl07Cisg
ICAgaWYgKHBpcGUoZmRzKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9y
ZWFkRnJvbVBpcGVGZCA9IGZkc1swXTsKKyAgICBtX3dyaXRlVG9QaXBlRmQgPSBmZHNbMV07Cisg
ICAgRkRfWkVSTygmbV9mZFNldCk7CisgICAgRkRfU0VUKG1fcmVhZEZyb21QaXBlRmQsICZtX2Zk
U2V0KTsKKyAgICBtX21heEZkID0gbV9yZWFkRnJvbVBpcGVGZDsKKworICAgIGVjb3JlX2V2ZW50
X2hhbmRsZXJfYWRkKEVDT1JFX0VYRV9FVkVOVF9ERUwsIHJlaW50ZXJwcmV0X2Nhc3Q8RWluYV9C
b29sKCopKHZvaWQqLCBpbnQsIHZvaWQqKT4oZXhpdEhhbmRsZXIpLCAwKTsKKworICAgIG1fdGhy
ZWFkTG9vcCA9IHRydWU7CisgICAgY3JlYXRlVGhyZWFkKHJlaW50ZXJwcmV0X2Nhc3Q8V1RGOjpU
aHJlYWRGdW5jdGlvbj4oJldvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKSwgdGhpcywgbmFtZSk7
Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQoreworICAgIHNlbmRN
ZXNzYWdlVG9UaHJlYWQoRklOSVNIX1RIUkVBRF9NRVNTQUdFKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV90aW1lcnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGVjb3JlX3RpbWVyX2Rl
bChtX3RpbWVyc1tpXSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtV29yaygpCit7Cisg
ICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisKKyAgICB3aGlsZSAoIW1fd29ya0l0ZW1R
dWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxXb3JrSXRlbUVmbD4gPiB3
b3JrSXRlbVF1ZXVlOworICAgICAgICBtX3dvcmtJdGVtUXVldWUuc3dhcCh3b3JrSXRlbVF1ZXVl
KTsKKworICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9jaygpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHdvcmtJdGVtUXVldWUuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICB3b3JrSXRlbVF1ZXVlW2ldLT5leGVjdXRlKCk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVl
TG9jay5sb2NrKCk7CisgICAgfQorCisgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsK
K30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmsoKQoreworICAgIGZkX3NldCByZWFk
RmRTZXQgPSBtX2ZkU2V0OworCisgICAgaWYgKHNlbGVjdChtX21heEZkICsgMSwgJnJlYWRGZFNl
dCwgMCwgMCwgMCkgPj0gMCkgeworICAgICAgICBpZiAoRkRfSVNTRVQobV9yZWFkRnJvbVBpcGVG
ZCwgJnJlYWRGZFNldCkpIHsKKyAgICAgICAgICAgIGNoYXIgcmVhZEJ1ZltUSFJFQURfTUVTU0FH
RV9TSVpFXTsKKyAgICAgICAgICAgIGlmIChyZWFkKG1fcmVhZEZyb21QaXBlRmQsIHJlYWRCdWYs
IFRIUkVBRF9NRVNTQUdFX1NJWkUpID09IC0xKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHJlYWQgZnJvbSBXb3JrUXVldWVUaHJlYWQgcGlwZSIpOworICAgICAgICAgICAg
aWYgKCFzdHJuY21wKHJlYWRCdWYsIEZJTklTSF9USFJFQURfTUVTU0FHRSwgVEhSRUFEX01FU1NB
R0VfU0laRSkpCisgICAgICAgICAgICAgICAgbV90aHJlYWRMb29wID0gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fRmRXb3JrSXRlbXNMb2NrKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX0ZkV29ya0l0ZW1zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAoRkRfSVNTRVQobV9GZFdvcmtJdGVtc1tpXS0+ZmQoKSwgJnJlYWRGZFNl
dCkpCisgICAgICAgICAgICAgICAgbV9GZFdvcmtJdGVtc1tpXS0+ZXhlY3V0ZSgpOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZChjb25z
dCBjaGFyKiBtZXNzYWdlKQoreworICAgIGlmICh3cml0ZShtX3dyaXRlVG9QaXBlRmQsIG1lc3Nh
Z2UsIFRIUkVBRF9NRVNTQUdFX1NJWkUpID09IC0xKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byB3YWtlIHVwIFdvcmtRdWV1ZSBUaHJlYWQiKTsKK30KKwordm9pZCogV29ya1F1ZXVlOjp3
b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKiB3b3JrUXVldWUpCit7CisgICAgd2hpbGUgKHdvcmtR
dWV1ZS0+bV90aHJlYWRMb29wKSB7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybVdvcmsoKTsK
KyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtRmRXb3JrKCk7CisgICAgfQorCisgICAgY2xvc2Uo
d29ya1F1ZXVlLT5tX3JlYWRGcm9tUGlwZUZkKTsKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fd3Jp
dGVUb1BpcGVGZCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXb3JrUXVldWU6OnJlZ2lz
dGVyRmRFdmVudEhhbmRsZXIoaW50IGZkLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlv
bikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fRmRXb3JrSXRlbXNMb2NrKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fRmRXb3JrSXRlbXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGlm
IChtX0ZkV29ya0l0ZW1zW2ldLT5mZCgpICE9IGZkKQorICAgICAgICAgICAgTE9HX0VSUk9SKCIl
ZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iLCBmZCk7CisKKyAgICBtX0ZkV29ya0l0ZW1zLmFwcGVu
ZChhZG9wdFJlZihuZXcgRmRXb3JrSXRlbShmZCwgZnVuY3Rpb24sIHRoaXMpKSk7CisKKyAgICBp
ZiAoZmQgPiBtX21heEZkKQorICAgICAgICBtX21heEZkID0gZmQ7CisgICAgRkRfU0VUKGZkLCAm
bV9mZFNldCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtlVXAoUGFz
c1JlZlB0cjxXb3JrSXRlbUVmbD4gaXRlbSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93
b3JrSXRlbVF1ZXVlTG9jayk7CisgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChpdGVtKTsKKyAg
ICBzZW5kTWVzc2FnZVRvVGhyZWFkKFdBS0VVUF9USFJFQURfTUVTU0FHRSk7Cit9CisKK3ZvaWQg
V29ya1F1ZXVlOjpkaXNwYXRjaChjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKK3sK
KyAgICBzY2hlZHVsZVdvcmtBbmRXYWtlVXAoYWRvcHRSZWYobmV3IFdvcmtJdGVtRWZsKGZ1bmN0
aW9uLCB0aGlzKSkpOworfQorCitzaXplX3QgV29ya1F1ZXVlOjpnZXROZXh0VGltZXJJRCgpCit7
CisgICAgcmV0dXJuIG1fdGltZXJzLnNpemUoKTsKK30KKworYm9vbCBXb3JrUXVldWU6OnRpbWVy
RmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBUaW1lcldvcmtJdGVtKiBpdGVtID0gc3RhdGljX2Nh
c3Q8VGltZXJXb3JrSXRlbSo+KGRhdGEpOworCisgICAgaXRlbS0+cXVldWUoKS0+c2NoZWR1bGVX
b3JrQW5kV2FrZVVwKGFkb3B0UmVmKGl0ZW0pKTsKKyAgICBpdGVtLT5xdWV1ZSgpLT5tX3RpbWVy
cy5yZW1vdmUoaXRlbS0+dGltZXJJRCgpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXJEZWxheShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBm
dW5jdGlvbiwgZG91YmxlIGRlbGF5KQoreworICAgIHNpemVfdCB0aW1lcklkID0gZ2V0TmV4dFRp
bWVySUQoKTsKKyAgICBtX3RpbWVyc1t0aW1lcklkXSA9IGVjb3JlX3RpbWVyX2FkZChkZWxheSwg
cmVpbnRlcnByZXRfY2FzdDxFaW5hX0Jvb2woKikodm9pZCopPih0aW1lckZpcmVkKSwgbmV3IFRp
bWVyV29ya0l0ZW0odGltZXJJZCwgZnVuY3Rpb24sIHRoaXMpKTsKK30KKworSGFzaE1hcDxXZWJL
aXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFJlZlB0cjxXb3JrUXVldWU6OldvcmtJdGVt
RWZsPiA+IFdvcmtRdWV1ZTo6bV90ZXJtV29ya0l0ZW1zOworCitib29sIFdvcmtRdWV1ZTo6ZXhp
dEhhbmRsZXIodm9pZCogZGF0YSwgaW50IHR5cGUsIHZvaWQqIGV2ZW50KQoreworICAgIEVjb3Jl
X0V4ZV9FdmVudF9EZWwqIGV2ID0gc3RhdGljX2Nhc3Q8RWNvcmVfRXhlX0V2ZW50X0RlbCo+KGV2
ZW50KTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgZGVhZENoaWxkUGlk
ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyPihldi0+cGlk
KTsKKworICAgIEFTU0VSVF9BUkcoZGVhZENoaWxkUGlkLCBtX3Rlcm1Xb3JrSXRlbXMuY29udGFp
bnMoZGVhZENoaWxkUGlkKSk7CisgICAgUmVmUHRyPFdvcmtJdGVtRWZsPiBpdGVtID0gbV90ZXJt
V29ya0l0ZW1zLnRha2UoZGVhZENoaWxkUGlkKTsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgaXRl
bS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGl0ZW0pOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbikKK3sKKyAgICBBU1NFUlRfQVJHKHByb2Nlc3MsICFtX3Rlcm1Xb3JrSXRlbXMu
Y29udGFpbnMocHJvY2VzcykpOworICAgIG1fdGVybVdvcmtJdGVtcy5zZXQocHJvY2VzcywgbmV3
IFdvcmtJdGVtRWZsKGZ1bmN0aW9uLCB0aGlzKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMThmNzRh
OS4uZTBkYWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcywgQwogewogI2lmIE9TKERBUldJTikKICAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3Vs
ZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKLSNlbGlmIFBMQVRGT1JNKFFUKQor
I2VsaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBtX2Nvbm5lY3Rpb24tPnNl
dFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCkpOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120932</attachid>
            <date>2012-01-03 04:34:20 -0800</date>
            <delta_ts>2012-01-20 00:36:06 -0800</delta_ts>
            <desc>fetch for RunLoopEfl and WorkQueueEfl </desc>
            <filename>patch-[20120102]-[youngtaeck.song@samsung.com]-[Add_RunLoopEfl_and_WorkQueueEfl].patch</filename>
            <type>text/plain</type>
            <size>18868</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMDE5ZGUzLi5jMzI5OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTItMDEtMDIgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVF
ZmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGlu
aXRpYWwgdmVyc2lvbiBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwgZm9yIFdlYktpdDIgRWZs
LgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICog
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJ
UEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAqIFBsYXRmb3JtL1BsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9SdW5Mb29wLmg6CisgICAgICAgICog
UGxhdGZvcm0vV29ya1F1ZXVlLmg6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpX
b3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0ZW1F
ZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAgICAg
IChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChXb3JrUXVldWU6OkZk
V29ya0l0ZW06OkZkV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjp+
RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OmZkKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChX
b3JrUXVldWU6OlRpbWVyV29ya0l0ZW06On5UaW1lcldvcmtJdGVtKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6VGltZXJXb3JrSXRlbTo6dGltZXJJRCk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1J1
bkxvb3BFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAg
ICAoUnVuTG9vcDo6flJ1bkxvb3ApOgorICAgICAgICAoUnVuTG9vcDo6cnVuKToKKyAgICAgICAg
KFJ1bkxvb3A6OnN0b3ApOgorICAgICAgICAoUnVuTG9vcDo6d2FrZVVwRXZlbnQpOgorICAgICAg
ICAoUnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKToKKyAgICAgICAgKFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAg
IChSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQpOgorICAgICAgICAoUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSk6CisgICAgICAgICogUGxhdGZvcm0v
ZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9y
bUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnBl
cmZvcm1GZFdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRvVGhyZWFkKToK
KyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OnNjaGVkdWxl
V29ya0FuZFdha2VVcCk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6Z2V0TmV4dFRpbWVySUQpOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1lckZp
cmVkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaE9u
VGVybWluYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2Vi
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisKIDIwMTItMDEtMDEgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBFbnZpcm9ubWVudFV0aWxpdGllczo6c3RyaXBWYWx1
ZXNFbmRpbmdXaXRoU3RyaW5nIGVudGVycyBhbiBpbmZpbml0ZSBsb29wIGlmIHRoZSBzZWFyY2gg
dmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5k
ZXggNjBlYWQwMy4uYTMwMjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Db25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIGNsYXNzIFFTb2NrZXROb3RpZmllcjsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2VuZGlmCiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJs
aWM6CiAKICNpZiBPUyhEQVJXSU4pCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25P
bk1hY2hFeGNlcHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmluZGV4IGQ1NGFmZjguLjM0YWIzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cApAQCAtNDIzLDYgKzQyMyw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFU
Rk9STShHVEspCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRs
ZXIobV9zb2NrZXREZXNjcmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIGJpbmQoJkNvbm5l
Y3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogICAgIG1fY29ubmVjdGlvblF1ZXVl
LnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19JTiwg
YmluZCgmQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOworI2VsaWYgUExBVEZP
Uk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIobV9z
b2NrZXREZXNjcmlwdG9yLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlz
KSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVy
LiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFs
CkBAIC01NTIsNyArNTU0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShFRkwpCiB2b2lkIENvbm5lY3Rpb246OnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vz
c1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzKQog
ewogICAgIG1fY29ubmVjdGlvblF1ZXVlLmRpc3BhdGNoT25UZXJtaW5hdGlvbihwcm9jZXNzLCBi
aW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAppbmRleCA1
MDIyZGE3Li45Y2FmZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVkZWYgdm9pZCog
R1BpZDsKIHR5cGVkZWYgaW50IEdQaWQ7CiAjZW5kaWYKIHR5cGVkZWYgR1BpZCBQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyOworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBwaWRfdCBQbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdCAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1J1bkxvb3AuaAppbmRleCBkMzY4MmQyLi5iYmYwYmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vUnVuTG9vcC5oCkBAIC00MSw2ICs0MSw4IEBAIHR5cGVkZWYgc3RydWN0IF9H
U291cmNlIEdTb3VyY2U7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsKIHR5
cGVkZWYgc3RydWN0IF9HTWFpbkNvbnRleHQgR01haW5Db250ZXh0OwogdHlwZWRlZiBpbnQgZ2Jv
b2xlYW47CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC0xMDgsNiArMTEwLDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgdm9pZCBjbGVhclRpbWVyU291cmNlKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV90
aW1lclNvdXJjZTsKICAgICAgICAgZ2Jvb2xlYW4gbV9pc1JlcGVhdGluZzsKKyNlbGlmIFBMQVRG
T1JNKEVGTCkKKyAgICAgICAgc3RhdGljIGJvb2wgdGltZXJGaXJlZCh2b2lkKiBkYXRhKTsKKyAg
ICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CisgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZzsK
ICNlbmRpZgogICAgIH07CiAKQEAgLTE2Nyw2ICsxNzMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEdNYWluQ29udGV4dCogbV9ydW5Mb29wQ29udGV4dDsKICAgICBHTWFpbkxvb3AqIG1fcnVu
TG9vcE1haW47CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgRWNvcmVfUGlwZSogbV9QaXBlOwor
ICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWdu
ZWQgaW50IHNpemUpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5o
CmluZGV4IGMwZTViMzMuLmI4ZTY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5o
CkBAIC00MSwxNiArNDEsMjAgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgKFBMQVRGT1JNKFFUKSAmJiAhT1MoREFSV0lOKSkgfHwg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkgJiYgIU9TKERBUldJTikK
ICNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+Ci0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRl
bnRpZmllci5oIgogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFUaHJlYWQ7CiAjZWxpZiBQTEFURk9S
TShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogdHlwZWRlZiBz
dHJ1Y3QgX0dNYWluQ29udGV4dCBHTWFpbkNvbnRleHQ7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5M
b29wIEdNYWluTG9vcDsKIHR5cGVkZWYgZ2Jvb2xlYW4gKCpHU291cmNlRnVuYykgKGdwb2ludGVy
IGRhdGEpOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPEVjb3JlLmg+CiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdURiB7CkBAIC05Niw2ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQsIGludCwgY29uc3QgRnVuY3Rpb248dm9pZCgp
PiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQpOwogICAgIHZv
aWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHZv
aWQgcmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihpbnQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsK
KyAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lk
ZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICNlbmRpZgogCiBwcml2YXRlOgpA
QCAtMTgzLDYgKzE5MCw4MCBAQCBwcml2YXRlOgogICAgIGNsYXNzIEV2ZW50U291cmNlOwogICAg
IEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2UqPiA+IG1fZXZlbnRTb3VyY2VzOwogICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+ID46Oml0ZXJhdG9yIEV2
ZW50U291cmNlSXRlcmF0b3I7IAorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNsYXNzIFdvcmtJ
dGVtRWZsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtJdGVtRWZsPiB7CisgICAg
cHVibGljOgorICAgICAgICBXb3JrSXRlbUVmbChjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5j
dGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlv
bikKKyAgICAgICAgICAgICwgbV9xdWV1ZShxdWV1ZSkKKyAgICAgICAgeworICAgICAgICB9Cisg
ICAgICAgIH5Xb3JrSXRlbUVmbCgpIHsgfQorCisgICAgICAgIHZvaWQgZXhlY3V0ZSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChtX3F1ZXVlLT5tX2lzVmFsaWQpCisgICAgICAgICAgICAg
ICAgbV9mdW5jdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEZ1bmN0
aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKKyAgICAgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOworICAg
IH07CisKKyAgICBjbGFzcyBGZFdvcmtJdGVtIDogcHVibGljIFdvcmtJdGVtRWZsIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIEZkV29ya0l0ZW0oaW50IGZkLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgICAgIDogV29ya0l0ZW1FZmwo
ZnVuY3Rpb24sIHF1ZXVlKQorICAgICAgICAgICAgLCBtX2ZkKGZkKQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICAgICAgfkZkV29ya0l0ZW0oKSB7IH0KKyAgICAgICAgaW50IGZkKCkgY29uc3Qg
eyByZXR1cm4gbV9mZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1fZmQ7CisgICAg
fTsKKworICAgIGNsYXNzIFRpbWVyV29ya0l0ZW0gOiBwdWJsaWMgV29ya0l0ZW1FZmwgeworICAg
IHB1YmxpYzoKKyAgICAgICAgVGltZXJXb3JrSXRlbShpbnQgdGltZXJJRCwgY29uc3QgRnVuY3Rp
b248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgICAgICAgICA6IFdv
cmtJdGVtRWZsKGZ1bmN0aW9uLCBxdWV1ZSkKKyAgICAgICAgICAgICwgbV90aW1lcklEKHRpbWVy
SUQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB+VGltZXJXb3JrSXRlbSgpIHsgfQor
ICAgICAgICBpbnQgdGltZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXJJRDsgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgaW50IG1fdGltZXJJRDsKKyAgICB9OworCisgICAgZmRfc2V0IG1f
ZmRTZXQ7CisgICAgaW50IG1fbWF4RmQ7CisgICAgaW50IG1fcmVhZEZyb21QaXBlRmQ7CisgICAg
aW50IG1fd3JpdGVUb1BpcGVGZDsKKyAgICBib29sIG1fdGhyZWFkTG9vcDsKKworICAgIFZlY3Rv
cjxSZWZQdHI8V29ya0l0ZW1FZmw+ID4gbV93b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29y
a0l0ZW1RdWV1ZUxvY2s7CisgICAgVmVjdG9yPFJlZlB0cjxGZFdvcmtJdGVtPiA+IG1fRmRXb3Jr
SXRlbXM7CisgICAgTXV0ZXggbV9GZFdvcmtJdGVtc0xvY2s7CisKKyAgICBWZWN0b3I8RWNvcmVf
VGltZXIqPiBtX3RpbWVyczsKKworICAgIHN0YXRpYyBIYXNoTWFwPFdlYktpdDo6UGxhdGZvcm1Q
cm9jZXNzSWRlbnRpZmllciwgUmVmUHRyPFdvcmtJdGVtRWZsPiA+IG1fdGVybVdvcmtJdGVtczsK
KworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBjaGFyKik7CisgICAgc3RhdGlj
IHZvaWQqIHdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKKyAgICB2b2lkIHNjaGVkdWxlV29y
a0FuZFdha2VVcChQYXNzUmVmUHRyPFdvcmtJdGVtRWZsPik7CisgICAgdm9pZCBwZXJmb3JtV29y
aygpOworICAgIHZvaWQgcGVyZm9ybUZkV29yaygpOworICAgIHNpemVfdCBnZXROZXh0VGltZXJJ
RCgpOworICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCopOworICAgIHN0YXRpYyBib29s
IGV4aXRIYW5kbGVyKHZvaWQqLCBpbnQsIHZvaWQqKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjZjNGZhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVk
ZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0ZpbGUuaD4KKyNpbmNsdWRlIDxFZGpl
Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2RlZmluZSBX
QUtFVVBfRUNPUkVfUElQRV9NRVNTQUdFICAgIlciCisjZGVmaW5lIEVDT1JFX1BJUEVfTUVTU0FH
RV9TSVpFICAgICAxCisKK1J1bkxvb3A6OlJ1bkxvb3AoKQoreworICAgIGlmICghZWNvcmVfaW5p
dCgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGlmICghZWNvcmVfZXZh
c19pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgaWYgKCFlY29y
ZV9maWxlX2luaXQoKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBpZiAo
IWVkamVfaW5pdCgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIG1fUGlw
ZSA9IGVjb3JlX3BpcGVfYWRkKHdha2VVcEV2ZW50LCB0aGlzKTsKK30KKworUnVuTG9vcDo6flJ1
bkxvb3AoKQoreworICAgIGVjb3JlX3BpcGVfZGVsKG1fUGlwZSk7CisKKyAgICBlZGplX3NodXRk
b3duKCk7CisgICAgZWNvcmVfZmlsZV9zaHV0ZG93bigpOworICAgIGVjb3JlX2V2YXNfc2h1dGRv
d24oKTsKKyAgICBlY29yZV9zaHV0ZG93bigpOworfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7
CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgp
Cit7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtl
VXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAg
IHN0YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKK30KKwordm9pZCBS
dW5Mb29wOjp3YWtlVXAoKQoreworICAgIGVjb3JlX3BpcGVfd3JpdGUobV9QaXBlLCBXQUtFVVBf
RUNPUkVfUElQRV9NRVNTQUdFLCBFQ09SRV9QSVBFX01FU1NBR0VfU0laRSk7Cit9CisKK1J1bkxv
b3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AqIHJ1bkxvb3ApCisgICAgOiBtX3RpbWVy
KDApCisgICAgLCBtX2lzUmVwZWF0aW5nKGZhbHNlKQoreworfQorCitSdW5Mb29wOjpUaW1lckJh
c2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKworYm9vbCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpUaW1lckJhc2Uq
IHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9vcDo6VGltZXJCYXNlKj4oZGF0YSk7CisKKyAgICB0
aW1lci0+ZmlyZWQoKTsKKworICAgIGlmICghdGltZXItPm1faXNSZXBlYXRpbmcpIHsKKyAgICAg
ICAgdGltZXItPm1fdGltZXIgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3Vi
bGUgZmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBpZiAobV90aW1lcikKKyAgICAg
ICAgZWNvcmVfdGltZXJfZGVsKG1fdGltZXIpOworCisgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVh
dDsKKyAgICBtX3RpbWVyID0gZWNvcmVfdGltZXJfYWRkKGZpcmVJbnRlcnZhbCwgcmVpbnRlcnBy
ZXRfY2FzdDxFaW5hX0Jvb2woKikodm9pZCopPih0aW1lckZpcmVkKSwgdGhpcyk7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBpZiAobV90aW1lcikKKyAgICAg
ICAgZWNvcmVfdGltZXJfZGVsKG1fdGltZXIpOworICAgIG1fdGltZXIgPSAwOworfQorCitib29s
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAobV90
aW1lcikgPyB0cnVlIDogZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9X
b3JrUXVldWVFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMTU3
ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1
ZXVlRWZsLmNwcApAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEg
U2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgor
CisjZGVmaW5lIFdBS0VVUF9USFJFQURfTUVTU0FHRSAgICJXIgorI2RlZmluZSBGSU5JU0hfVEhS
RUFEX01FU1NBR0UgICAiRiIKKyNkZWZpbmUgVEhSRUFEX01FU1NBR0VfU0laRSAgICAgMQorCisv
LyBXb3JrUXVldWUKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hh
ciogbmFtZSkKK3sKKyAgICBpbnQgZmRzWzJdOworICAgIGlmIChwaXBlKGZkcykpCisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fcmVhZEZyb21QaXBlRmQgPSBmZHNbMF07Cisg
ICAgbV93cml0ZVRvUGlwZUZkID0gZmRzWzFdOworICAgIEZEX1pFUk8oJm1fZmRTZXQpOworICAg
IEZEX1NFVChtX3JlYWRGcm9tUGlwZUZkLCAmbV9mZFNldCk7CisgICAgbV9tYXhGZCA9IG1fcmVh
ZEZyb21QaXBlRmQ7CisKKyAgICBlY29yZV9ldmVudF9oYW5kbGVyX2FkZChFQ09SRV9FWEVfRVZF
TlRfREVMLCByZWludGVycHJldF9jYXN0PEVpbmFfQm9vbCgqKSh2b2lkKiwgaW50LCB2b2lkKik+
KGV4aXRIYW5kbGVyKSwgMCk7CisKKyAgICBtX3RocmVhZExvb3AgPSB0cnVlOworICAgIGNyZWF0
ZVRocmVhZChyZWludGVycHJldF9jYXN0PFdURjo6VGhyZWFkRnVuY3Rpb24+KCZXb3JrUXVldWU6
OndvcmtRdWV1ZVRocmVhZCksIHRoaXMsIG5hbWUpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxh
dGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBzZW5kTWVzc2FnZVRvVGhyZWFkKEZJTklTSF9USFJF
QURfTUVTU0FHRSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGltZXJzLnNpemUo
KTsgKytpKQorICAgICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcnNbaV0pOworfQorCit2b2lk
IFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmsoKQoreworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9j
aygpOworCisgICAgd2hpbGUgKCFtX3dvcmtJdGVtUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAg
IFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1FZmw+ID4gd29ya0l0ZW1RdWV1ZTsKKyAgICAgICAgbV93
b3JrSXRlbVF1ZXVlLnN3YXAod29ya0l0ZW1RdWV1ZSk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1
ZXVlTG9jay51bmxvY2soKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JrSXRl
bVF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgd29ya0l0ZW1RdWV1ZVtpXS0+ZXhlY3V0
ZSgpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworICAgIH0KKworICAg
IG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJm
b3JtRmRXb3JrKCkKK3sKKyAgICBmZF9zZXQgcmVhZEZkU2V0ID0gbV9mZFNldDsKKworICAgIGlm
IChzZWxlY3QobV9tYXhGZCArIDEsICZyZWFkRmRTZXQsIDAsIDAsIDApID49IDApIHsKKyAgICAg
ICAgaWYgKEZEX0lTU0VUKG1fcmVhZEZyb21QaXBlRmQsICZyZWFkRmRTZXQpKSB7CisgICAgICAg
ICAgICBjaGFyIHJlYWRCdWZbVEhSRUFEX01FU1NBR0VfU0laRV07CisgICAgICAgICAgICBpZiAo
cmVhZChtX3JlYWRGcm9tUGlwZUZkLCByZWFkQnVmLCBUSFJFQURfTUVTU0FHRV9TSVpFKSA9PSAt
MSkKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZWFkIGZyb20gV29ya1F1
ZXVlVGhyZWFkIHBpcGUiKTsKKyAgICAgICAgICAgIGlmICghc3RybmNtcChyZWFkQnVmLCBGSU5J
U0hfVEhSRUFEX01FU1NBR0UsIFRIUkVBRF9NRVNTQUdFX1NJWkUpKQorICAgICAgICAgICAgICAg
IG1fdGhyZWFkTG9vcCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgTXV0ZXhMb2NrZXIg
bG9jayhtX0ZkV29ya0l0ZW1zTG9jayk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9GZFdvcmtJdGVtcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKEZEX0lTU0VUKG1f
RmRXb3JrSXRlbXNbaV0tPmZkKCksICZyZWFkRmRTZXQpKQorICAgICAgICAgICAgICAgIG1fRmRX
b3JrSXRlbXNbaV0tPmV4ZWN1dGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXb3Jr
UXVldWU6OnNlbmRNZXNzYWdlVG9UaHJlYWQoY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBp
ZiAod3JpdGUobV93cml0ZVRvUGlwZUZkLCBtZXNzYWdlLCBUSFJFQURfTUVTU0FHRV9TSVpFKSA9
PSAtMSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gd2FrZSB1cCBXb3JrUXVldWUgVGhy
ZWFkIik7Cit9CisKK3ZvaWQqIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSog
d29ya1F1ZXVlKQoreworICAgIHdoaWxlICh3b3JrUXVldWUtPm1fdGhyZWFkTG9vcCkgeworICAg
ICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9y
bUZkV29yaygpOworICAgIH0KKworICAgIGNsb3NlKHdvcmtRdWV1ZS0+bV9yZWFkRnJvbVBpcGVG
ZCk7CisgICAgY2xvc2Uod29ya1F1ZXVlLT5tX3dyaXRlVG9QaXBlRmQpOworCisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCBmZCwg
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9j
ayhtX0ZkV29ya0l0ZW1zTG9jayk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX0ZkV29y
a0l0ZW1zLnNpemUoKTsgKytpKQorICAgICAgICBpZiAobV9GZFdvcmtJdGVtc1tpXS0+ZmQoKSAh
PSBmZCkKKyAgICAgICAgICAgIExPR19FUlJPUigiJWQgaXMgYWxyZWFkeSByZWdpc3RlcmQuIiwg
ZmQpOworCisgICAgbV9GZFdvcmtJdGVtcy5hcHBlbmQoYWRvcHRSZWYobmV3IEZkV29ya0l0ZW0o
ZmQsIGZ1bmN0aW9uLCB0aGlzKSkpOworCisgICAgaWYgKGZkID4gbV9tYXhGZCkKKyAgICAgICAg
bV9tYXhGZCA9IGZkOworICAgIEZEX1NFVChmZCwgJm1fZmRTZXQpOworfQorCit2b2lkIFdvcmtR
dWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2FrZVVwKFBhc3NSZWZQdHI8V29ya0l0ZW1FZmw+IGl0ZW0p
Cit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1ZUxvY2spOworICAgIG1f
d29ya0l0ZW1RdWV1ZS5hcHBlbmQoaXRlbSk7CisgICAgc2VuZE1lc3NhZ2VUb1RocmVhZChXQUtF
VVBfVEhSRUFEX01FU1NBR0UpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgc2NoZWR1bGVXb3JrQW5kV2FrZVVw
KGFkb3B0UmVmKG5ldyBXb3JrSXRlbUVmbChmdW5jdGlvbiwgdGhpcykpKTsKK30KKworc2l6ZV90
IFdvcmtRdWV1ZTo6Z2V0TmV4dFRpbWVySUQoKQoreworICAgIHJldHVybiBtX3RpbWVycy5zaXpl
KCk7Cit9CisKK2Jvb2wgV29ya1F1ZXVlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAg
VGltZXJXb3JrSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsK
KworICAgIGl0ZW0tPnF1ZXVlKCktPnNjaGVkdWxlV29ya0FuZFdha2VVcChhZG9wdFJlZihpdGVt
KSk7CisgICAgaXRlbS0+cXVldWUoKS0+bV90aW1lcnMucmVtb3ZlKGl0ZW0tPnRpbWVySUQoKSk7
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVy
RGVsYXkoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxheSkKK3sK
KyAgICBzaXplX3QgdGltZXJJZCA9IGdldE5leHRUaW1lcklEKCk7CisgICAgbV90aW1lcnNbdGlt
ZXJJZF0gPSBlY29yZV90aW1lcl9hZGQoZGVsYXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWluYV9Cb29s
KCopKHZvaWQqKT4odGltZXJGaXJlZCksIG5ldyBUaW1lcldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0
aW9uLCB0aGlzKSk7Cit9CisKK0hhc2hNYXA8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlm
aWVyLCBSZWZQdHI8V29ya1F1ZXVlOjpXb3JrSXRlbUVmbD4gPiBXb3JrUXVldWU6Om1fdGVybVdv
cmtJdGVtczsKKworYm9vbCBXb3JrUXVldWU6OmV4aXRIYW5kbGVyKHZvaWQqIGRhdGEsIGludCB0
eXBlLCB2b2lkKiBldmVudCkKK3sKKyAgICBFY29yZV9FeGVfRXZlbnRfRGVsKiBldiA9IHN0YXRp
Y19jYXN0PEVjb3JlX0V4ZV9FdmVudF9EZWwqPihldmVudCk7CisgICAgV2ViS2l0OjpQbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyIGRlYWRDaGlsZFBpZCA9IHN0YXRpY19jYXN0PFdlYktpdDo6UGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllcj4oZXYtPnBpZCk7CisKKyAgICBBU1NFUlRfQVJHKGRlYWRD
aGlsZFBpZCwgbV90ZXJtV29ya0l0ZW1zLmNvbnRhaW5zKGRlYWRDaGlsZFBpZCkpOworICAgIFJl
ZlB0cjxXb3JrSXRlbUVmbD4gaXRlbSA9IG1fdGVybVdvcmtJdGVtcy50YWtlKGRlYWRDaGlsZFBp
ZCk7CisgICAgaWYgKGl0ZW0pCisgICAgICAgIGl0ZW0tPnF1ZXVlKCktPnNjaGVkdWxlV29ya0Fu
ZFdha2VVcChpdGVtKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXb3JrUXVldWU6
OmRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2VzcywgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgQVNTRVJU
X0FSRyhwcm9jZXNzLCAhbV90ZXJtV29ya0l0ZW1zLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICBt
X3Rlcm1Xb3JrSXRlbXMuc2V0KHByb2Nlc3MsIG5ldyBXb3JrSXRlbUVmbChmdW5jdGlvbiwgdGhp
cykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDE4Zjc0YTkuLmUwZGFhYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MsIEMKIHsKICNpZiBPUyhEQVJX
SU4pCiAgICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNl
cHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShFRkwpCiAgICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICNlbmRpZgog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123263</attachid>
            <date>2012-01-20 00:36:06 -0800</date>
            <delta_ts>2012-02-26 22:48:30 -0800</delta_ts>
            <desc>fetch for RunLoopEfl and WorkQueueEfl </desc>
            <filename>patch-[20120120]-[youngtaeck.song@samsung.com]-[Add_RunLoopEfl_and_WorkQueueEfl].patch</filename>
            <type>text/plain</type>
            <size>20905</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWQxYmJiYS4uYWEyMmQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTEwNjYsNiArMTA2Niw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1FdmVu
dC5jcHAKICAgICBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisgICAgcGxh
dGZvcm0vUnVuTG9vcC5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKICAgICBw
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZGE3Y2E3ZS4uMWNlMzM1NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDEyLTAxLTIwICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gUnVuTG9vcEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0
Zm9ybS9SdW5Mb29wLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UnVuTG9vcDo6flJ1bkxvb3ApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6cnVu
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6
UnVuTG9vcDo6d2FrZVVwRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6d2FrZVVw
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJC
YXNlOjppc0FjdGl2ZSk6CisKIDIwMTItMDEtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBNb3ZlIFJ1bkxvb3AgdG8gV2ViQ29yZS9wbGF0Zm9ybQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCAxYjJlMWU0Li41MDM1OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtNDYsNiArNDYsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
cGxhdGZvcm0vZWZsL1BvcHVwTWVudUVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1JlZlB0ckVmbC5j
cHAKICAgcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAorICBwbGF0Zm9ybS9lZmwvUnVu
TG9vcEVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1Njcm9sbFZpZXdFZmwuY3BwCiAgIHBsYXRmb3Jt
L2VmbC9TY3JvbGxiYXJFZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaAppbmRleCA2ZTA0MzI2Li4yNTZmYWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oCkBAIC00MSw2ICs0MSw4IEBAIHR5cGVkZWYgc3RydWN0
IF9HU291cmNlIEdTb3VyY2U7CiB0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsK
IHR5cGVkZWYgc3RydWN0IF9HTWFpbkNvbnRleHQgR01haW5Db250ZXh0OwogdHlwZWRlZiBpbnQg
Z2Jvb2xlYW47CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05OCw2ICsxMDAsMTAgQEAgcHVibGljOgogICAg
ICAgICB2b2lkIGNsZWFyVGltZXJTb3VyY2UoKTsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBt
X3RpbWVyU291cmNlOwogICAgICAgICBnYm9vbGVhbiBtX2lzUmVwZWF0aW5nOworI2VsaWYgUExB
VEZPUk0oRUZMKQorICAgICAgICBzdGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQqIGRhdGEpOwor
ICAgICAgICBFY29yZV9UaW1lciogbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5n
OwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2Myw5IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgR01haW5Db250ZXh0KiBtX3J1bkxvb3BDb250ZXh0OwogICAgIEdNYWluTG9vcCogbV9y
dW5Mb29wTWFpbjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBFY29yZV9QaXBlKiBtX3BpcGU7
CisgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCogYnVmLCB1bnNp
Z25lZCBpbnQgc2l6ZSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9SdW5Mb29wRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWE1
NzE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxv
b3BFZmwuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICAgQ29weXJpZ2h0IChDKSAyMDExIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVu
TG9vcC5oIgorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+Cisj
aW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRlIDxzdGRp
by5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjZGVmaW5lIFdBS0VVUF9FQ09SRV9QSVBFX01F
U1NBR0UgICAiVyIKKyNkZWZpbmUgRUNPUkVfUElQRV9NRVNTQUdFX1NJWkUgICAgIDEKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSdW5Mb29wOjpSdW5Mb29wKCkKK3sKKyAgICBpZiAoIWVjb3Jl
X2luaXQoKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBpZiAoIWVjb3Jl
X2V2YXNfaW5pdCgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGlmICgh
ZWNvcmVfZmlsZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAg
aWYgKCFlZGplX2luaXQoKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBt
X3BpcGUgPSBlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhpcyk7Cit9CisKK1J1bkxvb3A6
On5SdW5Mb29wKCkKK3sKKyAgICBlY29yZV9waXBlX2RlbChtX3BpcGUpOworCisgICAgZWRqZV9z
aHV0ZG93bigpOworICAgIGVjb3JlX2ZpbGVfc2h1dGRvd24oKTsKKyAgICBlY29yZV9ldmFzX3No
dXRkb3duKCk7CisgICAgZWNvcmVfc2h1dGRvd24oKTsKK30KKwordm9pZCBSdW5Mb29wOjpydW4o
KQoreworICAgIGVjb3JlX21haW5fbG9vcF9iZWdpbigpOworfQorCit2b2lkIFJ1bkxvb3A6OnN0
b3AoKQoreworICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6
d2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCogYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sK
KyAgICBzdGF0aWNfY2FzdDxSdW5Mb29wKj4oZGF0YSktPnBlcmZvcm1Xb3JrKCk7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBlY29yZV9waXBlX3dyaXRlKG1fcGlwZSwgV0FL
RVVQX0VDT1JFX1BJUEVfTUVTU0FHRSwgRUNPUkVfUElQRV9NRVNTQUdFX1NJWkUpOworfQorCitS
dW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQorICAgIDogbV90
aW1lcigwKQorICAgICwgbV9pc1JlcGVhdGluZyhmYWxzZSkKK3sKK30KKworUnVuTG9vcDo6VGlt
ZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK2Jvb2wgUnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgUnVuTG9vcDo6VGltZXJC
YXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3A6OlRpbWVyQmFzZSo+KGRhdGEpOworCisg
ICAgdGltZXItPmZpcmVkKCk7CisKKyAgICBpZiAoIXRpbWVyLT5tX2lzUmVwZWF0aW5nKSB7Cisg
ICAgICAgIHRpbWVyLT5tX3RpbWVyID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQo
ZG91YmxlIGZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7CisgICAgaWYgKG1fdGltZXIpCisg
ICAgICAgIGVjb3JlX3RpbWVyX2RlbChtX3RpbWVyKTsKKworICAgIG1faXNSZXBlYXRpbmcgPSBy
ZXBlYXQ7CisgICAgbV90aW1lciA9IGVjb3JlX3RpbWVyX2FkZChmaXJlSW50ZXJ2YWwsIHJlaW50
ZXJwcmV0X2Nhc3Q8RWluYV9Cb29sKCopKHZvaWQqKT4odGltZXJGaXJlZCksIHRoaXMpOworfQor
Cit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYgKG1fdGltZXIpCisg
ICAgICAgIGVjb3JlX3RpbWVyX2RlbChtX3RpbWVyKTsKKyAgICBtX3RpbWVyID0gMDsKK30KKwor
Ym9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
KG1fdGltZXIpID8gdHJ1ZSA6IGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYzAyYWEwYy4uMGFhMTAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBA
CisyMDEyLTAxLTIwICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpv
cGVuKToKKyAgICAgICAgKiBQbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vV29ya1F1ZXVlLmg6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJ
dGVtRWZsOjpXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+
V29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6
CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChXb3Jr
UXVldWU6OkZkV29ya0l0ZW06OkZkV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdv
cmtJdGVtOjp+RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OmZk
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6VGltZXJXb3JrSXRlbSk6Cisg
ICAgICAgIChXb3JrUXVldWU6OlRpbWVyV29ya0l0ZW06On5UaW1lcldvcmtJdGVtKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6dGltZXJJRCk6CisgICAgICAgICogUGxhdGZv
cm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUp
OgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtV29yayk6CisgICAgICAgIChXb3JrUXVldWU6
OnBlcmZvcm1GZFdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRvVGhyZWFk
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OnNjaGVk
dWxlV29ya0FuZFdha2VVcCk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6Z2V0TmV4dFRpbWVySUQpOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1l
ckZpcmVkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRj
aE9uVGVybWluYXRpb24pOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6
CisKIDIwMTItMDEtMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXBsYWNlIGltcHJvcGVyICNpbXBvcnQgd2l0aCBhbiAjaW5jbHVkZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5kZXggODE1NTNhZS4uOTljZDk1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAKIGNsYXNzIFFTb2NrZXROb3RpZmllcjsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgogI2VuZGlmCiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAKICNpZiBPUyhEQVJXSU4p
CiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNlcHRpb25zKCk7Ci0j
ZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAg
ICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihXZWJL
aXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmlu
ZGV4IGQ1NGFmZjguLjM0YWIzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtNDIzLDYgKzQyMyw4IEBA
IGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgbV9jb25u
ZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9y
LCAoR19JT19IVVAgfCBHX0lPX0VSUiksIGJpbmQoJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRD
bG9zZSwgdGhpcykpOwogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VI
YW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19JTiwgYmluZCgmQ29ubmVjdGlvbjo6cmVh
ZHlSZWFkSGFuZGxlciwgdGhpcykpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIG1fY29ubmVj
dGlvblF1ZXVlLnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBiaW5k
KCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlzKSk7CiAjZW5kaWYKIAogICAgIC8v
IFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2
ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFsCkBAIC01NTIsNyArNTU0LDcgQEAg
Ym9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQs
IFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFBMQVRG
T1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiB2b2lkIENvbm5lY3Rp
b246OnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzKQogewogICAgIG1fY29ubmVjdGlvblF1
ZXVlLmRpc3BhdGNoT25UZXJtaW5hdGlvbihwcm9jZXNzLCBiaW5kKCZDb25uZWN0aW9uOjpjb25u
ZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAppbmRleCA1MDIyZGE3Li45Y2FmZDMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ci5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVkZWYgdm9pZCogR1BpZDsKIHR5cGVkZWYgaW50IEdQ
aWQ7CiAjZW5kaWYKIHR5cGVkZWYgR1BpZCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOworI2Vs
aWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBwaWRfdCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
OwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29y
a1F1ZXVlLmgKaW5kZXggNTg3ZWY4OS4uNWY0MzE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29y
a1F1ZXVlLmgKQEAgLTQxLDE2ICs0MSwyMCBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiAoUExBVEZPUk0oUVQpICYmICFPUyhEQVJX
SU4pKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKSAmJiAhT1Mo
REFSV0lOKQogI2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KLSNpbmNsdWRlICJQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmgiCiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUVRocmVhZDsKICNlbGlm
IFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiB0
eXBlZGVmIHN0cnVjdCBfR01haW5Db250ZXh0IEdNYWluQ29udGV4dDsKIHR5cGVkZWYgc3RydWN0
IF9HTWFpbkxvb3AgR01haW5Mb29wOwogdHlwZWRlZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5jKSAo
Z3BvaW50ZXIgZGF0YSk7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4K
ICNlbmRpZgogCiBjbGFzcyBXb3JrUXVldWUgewpAQCAtOTEsNiArOTUsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQsIGludCwgY29uc3QgRnVuY3Rp
b248dm9pZCgpPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQp
OwogICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworI2VsaWYgUExBVEZPUk0oRUZM
KQorICAgIHZvaWQgcmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihpbnQsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoKT4mKTsKKyAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICNlbmRpZgogCiBw
cml2YXRlOgpAQCAtMTc4LDYgKzE4NSw4MCBAQCBwcml2YXRlOgogICAgIGNsYXNzIEV2ZW50U291
cmNlOwogICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2UqPiA+IG1fZXZlbnRTb3Vy
Y2VzOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+ID46Oml0
ZXJhdG9yIEV2ZW50U291cmNlSXRlcmF0b3I7IAorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNs
YXNzIFdvcmtJdGVtRWZsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdvcmtJdGVtRWZs
PiB7CisgICAgcHVibGljOgorICAgICAgICBXb3JrSXRlbUVmbChjb25zdCBGdW5jdGlvbjx2b2lk
KCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgICAgIDogbV9mdW5jdGlv
bihmdW5jdGlvbikKKyAgICAgICAgICAgICwgbV9xdWV1ZShxdWV1ZSkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIH5Xb3JrSXRlbUVmbCgpIHsgfQorCisgICAgICAgIHZvaWQgZXhlY3V0
ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3F1ZXVlLT5tX2lzVmFsaWQpCisgICAg
ICAgICAgICAgICAgbV9mdW5jdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgV29ya1F1ZXVl
KiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKKyAgICAgICAgV29ya1F1ZXVlKiBtX3F1
ZXVlOworICAgIH07CisKKyAgICBjbGFzcyBGZFdvcmtJdGVtIDogcHVibGljIFdvcmtJdGVtRWZs
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEZkV29ya0l0ZW0oaW50IGZkLCBjb25zdCBGdW5jdGlv
bjx2b2lkKCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgICAgIDogV29y
a0l0ZW1FZmwoZnVuY3Rpb24sIHF1ZXVlKQorICAgICAgICAgICAgLCBtX2ZkKGZkKQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgfkZkV29ya0l0ZW0oKSB7IH0KKyAgICAgICAgaW50IGZk
KCkgY29uc3QgeyByZXR1cm4gbV9mZDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1f
ZmQ7CisgICAgfTsKKworICAgIGNsYXNzIFRpbWVyV29ya0l0ZW0gOiBwdWJsaWMgV29ya0l0ZW1F
ZmwgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGltZXJXb3JrSXRlbShpbnQgdGltZXJJRCwgY29u
c3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgICAg
ICAgICA6IFdvcmtJdGVtRWZsKGZ1bmN0aW9uLCBxdWV1ZSkKKyAgICAgICAgICAgICwgbV90aW1l
cklEKHRpbWVySUQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICB+VGltZXJXb3JrSXRl
bSgpIHsgfQorICAgICAgICBpbnQgdGltZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXJJRDsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1fdGltZXJJRDsKKyAgICB9OworCisgICAg
ZmRfc2V0IG1fZmRTZXQ7CisgICAgaW50IG1fbWF4RmQ7CisgICAgaW50IG1fcmVhZEZyb21QaXBl
RmQ7CisgICAgaW50IG1fd3JpdGVUb1BpcGVGZDsKKyAgICBib29sIG1fdGhyZWFkTG9vcDsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1FZmw+ID4gbV93b3JrSXRlbVF1ZXVlOworICAgIE11
dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisgICAgVmVjdG9yPFJlZlB0cjxGZFdvcmtJdGVtPiA+
IG1fRmRXb3JrSXRlbXM7CisgICAgTXV0ZXggbV9GZFdvcmtJdGVtc0xvY2s7CisKKyAgICBWZWN0
b3I8RWNvcmVfVGltZXIqPiBtX3RpbWVyczsKKworICAgIHN0YXRpYyBIYXNoTWFwPFdlYktpdDo6
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgUmVmUHRyPFdvcmtJdGVtRWZsPiA+IG1fdGVybVdv
cmtJdGVtczsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBjaGFyKik7Cisg
ICAgc3RhdGljIHZvaWQqIHdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKKyAgICB2b2lkIHNj
aGVkdWxlV29ya0FuZFdha2VVcChQYXNzUmVmUHRyPFdvcmtJdGVtRWZsPik7CisgICAgdm9pZCBw
ZXJmb3JtV29yaygpOworICAgIHZvaWQgcGVyZm9ybUZkV29yaygpOworICAgIHNpemVfdCBnZXRO
ZXh0VGltZXJJRCgpOworICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCopOworICAgIHN0
YXRpYyBib29sIGV4aXRIYW5kbGVyKHZvaWQqLCBpbnQsIHZvaWQqKTsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDE1N2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKQEAgLTAsMCArMSwxODAg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8
ZXJybm8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2RlZmluZSBXQUtFVVBfVEhSRUFEX01F
U1NBR0UgICAiVyIKKyNkZWZpbmUgRklOSVNIX1RIUkVBRF9NRVNTQUdFICAgIkYiCisjZGVmaW5l
IFRIUkVBRF9NRVNTQUdFX1NJWkUgICAgIDEKKworLy8gV29ya1F1ZXVlCit2b2lkIFdvcmtRdWV1
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgaW50IGZkc1sy
XTsKKyAgICBpZiAocGlwZShmZHMpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBtX3JlYWRGcm9tUGlwZUZkID0gZmRzWzBdOworICAgIG1fd3JpdGVUb1BpcGVGZCA9IGZkc1sx
XTsKKyAgICBGRF9aRVJPKCZtX2ZkU2V0KTsKKyAgICBGRF9TRVQobV9yZWFkRnJvbVBpcGVGZCwg
Jm1fZmRTZXQpOworICAgIG1fbWF4RmQgPSBtX3JlYWRGcm9tUGlwZUZkOworCisgICAgZWNvcmVf
ZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfRVhFX0VWRU5UX0RFTCwgcmVpbnRlcnByZXRfY2FzdDxF
aW5hX0Jvb2woKikodm9pZCosIGludCwgdm9pZCopPihleGl0SGFuZGxlciksIDApOworCisgICAg
bV90aHJlYWRMb29wID0gdHJ1ZTsKKyAgICBjcmVhdGVUaHJlYWQocmVpbnRlcnByZXRfY2FzdDxX
VEY6OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBu
YW1lKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAg
c2VuZE1lc3NhZ2VUb1RocmVhZChGSU5JU0hfVEhSRUFEX01FU1NBR0UpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RpbWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgZWNvcmVfdGlt
ZXJfZGVsKG1fdGltZXJzW2ldKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKCkK
K3sKKyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKworICAgIHdoaWxlICghbV93b3Jr
SXRlbVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8UmVmUHRyPFdvcmtJdGVtRWZs
PiA+IHdvcmtJdGVtUXVldWU7CisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5zd2FwKHdvcmtJdGVt
UXVldWUpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya0l0ZW1RdWV1ZS5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIHdvcmtJdGVtUXVldWVbaV0tPmV4ZWN1dGUoKTsKKworICAgICAgICBtX3dvcmtJdGVt
UXVldWVMb2NrLmxvY2soKTsKKyAgICB9CisKKyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9j
aygpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybUZkV29yaygpCit7CisgICAgZmRfc2V0
IHJlYWRGZFNldCA9IG1fZmRTZXQ7CisKKyAgICBpZiAoc2VsZWN0KG1fbWF4RmQgKyAxLCAmcmVh
ZEZkU2V0LCAwLCAwLCAwKSA+PSAwKSB7CisgICAgICAgIGlmIChGRF9JU1NFVChtX3JlYWRGcm9t
UGlwZUZkLCAmcmVhZEZkU2V0KSkgeworICAgICAgICAgICAgY2hhciByZWFkQnVmW1RIUkVBRF9N
RVNTQUdFX1NJWkVdOworICAgICAgICAgICAgaWYgKHJlYWQobV9yZWFkRnJvbVBpcGVGZCwgcmVh
ZEJ1ZiwgVEhSRUFEX01FU1NBR0VfU0laRSkgPT0gLTEpCisgICAgICAgICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gcmVhZCBmcm9tIFdvcmtRdWV1ZVRocmVhZCBwaXBlIik7CisgICAgICAg
ICAgICBpZiAoIXN0cm5jbXAocmVhZEJ1ZiwgRklOSVNIX1RIUkVBRF9NRVNTQUdFLCBUSFJFQURf
TUVTU0FHRV9TSVpFKSkKKyAgICAgICAgICAgICAgICBtX3RocmVhZExvb3AgPSBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9GZFdvcmtJdGVtc0xvY2spOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fRmRXb3JrSXRlbXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChGRF9JU1NFVChtX0ZkV29ya0l0ZW1zW2ldLT5mZCgpLCAmcmVh
ZEZkU2V0KSkKKyAgICAgICAgICAgICAgICBtX0ZkV29ya0l0ZW1zW2ldLT5leGVjdXRlKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRvVGhyZWFk
KGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgaWYgKHdyaXRlKG1fd3JpdGVUb1BpcGVGZCwg
bWVzc2FnZSwgVEhSRUFEX01FU1NBR0VfU0laRSkgPT0gLTEpCisgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHdha2UgdXAgV29ya1F1ZXVlIFRocmVhZCIpOworfQorCit2b2lkKiBXb3JrUXVl
dWU6OndvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqIHdvcmtRdWV1ZSkKK3sKKyAgICB3aGlsZSAo
d29ya1F1ZXVlLT5tX3RocmVhZExvb3ApIHsKKyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtV29y
aygpOworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1GZFdvcmsoKTsKKyAgICB9CisKKyAgICBj
bG9zZSh3b3JrUXVldWUtPm1fcmVhZEZyb21QaXBlRmQpOworICAgIGNsb3NlKHdvcmtRdWV1ZS0+
bV93cml0ZVRvUGlwZUZkKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIFdvcmtRdWV1ZTo6
cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihpbnQgZmQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1
bmN0aW9uKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9GZFdvcmtJdGVtc0xvY2spOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9GZFdvcmtJdGVtcy5zaXplKCk7ICsraSkKKyAgICAg
ICAgaWYgKG1fRmRXb3JrSXRlbXNbaV0tPmZkKCkgIT0gZmQpCisgICAgICAgICAgICBMT0dfRVJS
T1IoIiVkIGlzIGFscmVhZHkgcmVnaXN0ZXJkLiIsIGZkKTsKKworICAgIG1fRmRXb3JrSXRlbXMu
YXBwZW5kKGFkb3B0UmVmKG5ldyBGZFdvcmtJdGVtKGZkLCBmdW5jdGlvbiwgdGhpcykpKTsKKwor
ICAgIGlmIChmZCA+IG1fbWF4RmQpCisgICAgICAgIG1fbWF4RmQgPSBmZDsKKyAgICBGRF9TRVQo
ZmQsICZtX2ZkU2V0KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FuZFdha2VV
cChQYXNzUmVmUHRyPFdvcmtJdGVtRWZsPiBpdGVtKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX3dvcmtJdGVtUXVldWVMb2NrKTsKKyAgICBtX3dvcmtJdGVtUXVldWUuYXBwZW5kKGl0ZW0p
OworICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQoV0FLRVVQX1RIUkVBRF9NRVNTQUdFKTsKK30KKwor
dm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQoreworICAgIHNjaGVkdWxlV29ya0FuZFdha2VVcChhZG9wdFJlZihuZXcgV29ya0l0ZW1FZmwo
ZnVuY3Rpb24sIHRoaXMpKSk7Cit9CisKK3NpemVfdCBXb3JrUXVldWU6OmdldE5leHRUaW1lcklE
KCkKK3sKKyAgICByZXR1cm4gbV90aW1lcnMuc2l6ZSgpOworfQorCitib29sIFdvcmtRdWV1ZTo6
dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFRpbWVyV29ya0l0ZW0qIGl0ZW0gPSBzdGF0
aWNfY2FzdDxUaW1lcldvcmtJdGVtKj4oZGF0YSk7CisKKyAgICBpdGVtLT5xdWV1ZSgpLT5zY2hl
ZHVsZVdvcmtBbmRXYWtlVXAoYWRvcHRSZWYoaXRlbSkpOworICAgIGl0ZW0tPnF1ZXVlKCktPm1f
dGltZXJzLnJlbW92ZShpdGVtLT50aW1lcklEKCkpOworCisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mIGZ1bmN0aW9uLCBkb3VibGUgZGVsYXkpCit7CisgICAgc2l6ZV90IHRpbWVySWQgPSBnZXRO
ZXh0VGltZXJJRCgpOworICAgIG1fdGltZXJzW3RpbWVySWRdID0gZWNvcmVfdGltZXJfYWRkKGRl
bGF5LCByZWludGVycHJldF9jYXN0PEVpbmFfQm9vbCgqKSh2b2lkKik+KHRpbWVyRmlyZWQpLCBu
ZXcgVGltZXJXb3JrSXRlbSh0aW1lcklkLCBmdW5jdGlvbiwgdGhpcykpOworfQorCitIYXNoTWFw
PFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgUmVmUHRyPFdvcmtRdWV1ZTo6V29y
a0l0ZW1FZmw+ID4gV29ya1F1ZXVlOjptX3Rlcm1Xb3JrSXRlbXM7CisKK2Jvb2wgV29ya1F1ZXVl
OjpleGl0SGFuZGxlcih2b2lkKiBkYXRhLCBpbnQgdHlwZSwgdm9pZCogZXZlbnQpCit7CisgICAg
RWNvcmVfRXhlX0V2ZW50X0RlbCogZXYgPSBzdGF0aWNfY2FzdDxFY29yZV9FeGVfRXZlbnRfRGVs
Kj4oZXZlbnQpOworICAgIFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBkZWFkQ2hp
bGRQaWQgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI+KGV2
LT5waWQpOworCisgICAgQVNTRVJUX0FSRyhkZWFkQ2hpbGRQaWQsIG1fdGVybVdvcmtJdGVtcy5j
b250YWlucyhkZWFkQ2hpbGRQaWQpKTsKKyAgICBSZWZQdHI8V29ya0l0ZW1FZmw+IGl0ZW0gPSBt
X3Rlcm1Xb3JrSXRlbXMudGFrZShkZWFkQ2hpbGRQaWQpOworICAgIGlmIChpdGVtKQorICAgICAg
ICBpdGVtLT5xdWV1ZSgpLT5zY2hlZHVsZVdvcmtBbmRXYWtlVXAoaXRlbSk7CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaE9uVGVybWluYXRpb24oV2Vi
S2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3MsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoKT4mIGZ1bmN0aW9uKQoreworICAgIEFTU0VSVF9BUkcocHJvY2VzcywgIW1fdGVybVdvcmtJ
dGVtcy5jb250YWlucyhwcm9jZXNzKSk7CisgICAgbV90ZXJtV29ya0l0ZW1zLnNldChwcm9jZXNz
LCBuZXcgV29ya0l0ZW1FZmwoZnVuY3Rpb24sIHRoaXMpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggMTU5MWRmYi4uOGZhZDg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTksNyArOSw2IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfTElOS19GTEFHUwogCiBMSVNUKEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBQbGF0Zm9ybS9lZmwvTW9kdWxlRWZsLmNwcAotICAg
IFBsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAogICAgIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVF
ZmwuY3BwCiAgICAgUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggYmU4MTRjMC4uMzJhMzc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDUsNyArNDUsNyBA
QCBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcywgQwogewogI2lmIE9TKERBUldJTikKICAgICBtX2Nvbm5l
Y3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKLSNlbGlm
IFBMQVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICBt
X2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9u
KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128957</attachid>
            <date>2012-02-26 22:48:41 -0800</date>
            <delta_ts>2012-03-02 01:59:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120227154839.patch</filename>
            <type>text/plain</type>
            <size>21891</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I2ZjQyYjZkNDY5MTI1
NjdmZWQ3YTlkYmQzMjI1YTYyMDQwZWE1ZC4uNjRmYzQ5Yzc0ZmQ1YmQzMjBmYzk3MWQwYzI1NzQz
Mjg2ZDQwNDM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTI2ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bkxvb3A6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6d2FrZVVwRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29w
OjpUaW1lckJhc2U6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0
b3ApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSk6CisK
IDIwMTItMDItMjYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBF
eHRyYWN0IFN1cHBsZW1lbnRhYmxlIGJhc2UgY2xhc3MgZnJvbSBQYWdlIGFuZCBOYXZpZ2F0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxN2M2ODk3ZWQ4MGM2ZDY2ODA4NGMxYzE5ODI1ZTgwNGNhZGZkMzdkLi5i
ZDA1NTIxNWNjZTEwYWU1ZGUyODk1NjFmYTEyNGM5ZmMzYjY3Nzg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDYgQEAKKzIwMTItMDItMjYgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29u
Z0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBX
b3JrUXVldWVFZmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyNzc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGluaXRpYWwgdmVyc2lvbiBXb3JrUXVldWVFZmwgZm9yIFdlYktpdDIgRWZsLgorCisg
ICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZv
cm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNv
bm5lY3Rpb246Om9wZW4pOgorICAgICAgICAqIFBsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtR
dWV1ZTo6V29ya0l0ZW1FZmw6OldvcmtJdGVtRWZsKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29y
a0l0ZW1FZmw6On5Xb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZs
OjpleGVjdXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OnF1ZXVlKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3Jr
UXVldWU6OkZkV29ya0l0ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRX
b3JrSXRlbTo6ZmQpOgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjpUaW1lcldv
cmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6flRpbWVyV29ya0l0
ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjp0aW1lcklEKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6cGVyZm9ybUZkV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnNlbmRNZXNz
YWdlVG9UaHJlYWQpOgorICAgICAgICAoV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpOgorICAg
ICAgICAoV29ya1F1ZXVlOjpyZWdpc3RlckZkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2FrZVVwKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0
Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpnZXROZXh0VGltZXJJRCk6CisgICAgICAgIChXb3Jr
UXVldWU6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVs
YXkpOgorICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVl
dWU6OmRpc3BhdGNoT25UZXJtaW5hdGlvbik6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKToKKwogMjAxMi0wMi0yNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBNb3ZlIENocm9tZUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkg
dG8gQ29udGV4dE1lbnVDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2Y0MDgwNjM5NzZk
MzBmMDFlMjQ1ODQyM2Y3YjgyZDQyYTU5Y2IzNy4uODYzNmE1OWY2MDgwYzBhNjYyMjE3ZTBkMmYw
ODA5NWI3MGJiOGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwOTMsNiArMTA5Myw3IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1FdmVudC5jcHAKICAgICBwbGF0Zm9ybS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuY3BwCisgICAgcGxhdGZvcm0vUnVuTG9vcC5jcHAKICAgICBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
ICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDVkOThjODkwNDliOTJkZmEyZGI3NmI1ZTE0NzJlOWMyNGIyM2EwNWQuLjZlYzk4ZDY5NGViZmQz
NWRkZGExYTEwZjIzNWEyMzgxMzg3M2NjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC00Nyw2ICs0Nyw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICBwbGF0Zm9ybS9l
ZmwvUG9wdXBNZW51RWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvUmVmUHRyRWZsLmNwcAogICBwbGF0
Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisgIHBsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNw
cAogICBwbGF0Zm9ybS9lZmwvU2Nyb2xsVmlld0VmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1Njcm9s
bGJhckVmbC5jcHAKICAgcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUnVuTG9vcC5oCmluZGV4IDFmMTljODM2ZDNjYzdkZTE2YmMxZGJmNmVkNjdiODhj
MGZhNDVlN2IuLmIyZTRkMzNhZjFmODMwOGYyYTI0MDlkOGJiNGM2M2U4YzdhM2JhZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKQEAgLTQxLDYgKzQxLDggQEAgdHlwZWRlZiBzdHJ1Y3Qg
X0dTb3VyY2UgR1NvdXJjZTsKIHR5cGVkZWYgc3RydWN0IF9HTWFpbkxvb3AgR01haW5Mb29wOwog
dHlwZWRlZiBzdHJ1Y3QgX0dNYWluQ29udGV4dCBHTWFpbkNvbnRleHQ7CiB0eXBlZGVmIGludCBn
Ym9vbGVhbjsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk5LDYgKzEwMSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1f
dGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7Cisg
ICAgICAgIEVjb3JlX1RpbWVyKiBtX3RpbWVyOworICAgICAgICBib29sIG1faXNSZXBlYXRpbmc7
CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNTksNiArMTY1LDkgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBHTWFpbkNvbnRleHQqIG1fcnVuTG9vcENvbnRleHQ7CiAgICAgR01haW5Mb29wKiBtX3J1
bkxvb3BNYWluOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIE93blB0cjxFY29yZV9QaXBlPiBt
X3BpcGU7CisgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCogYnVm
LCB1bnNpZ25lZCBpbnQgc2l6ZSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9SdW5Mb29wRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTgwOTAyMzQyNzYyMGM0OTIwY2Zj
ZjQzMzVkYjFmN2VlMGJkOTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8
RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0ZpbGUuaD4KKyNpbmNsdWRlIDxFZGplLmg+
CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworI2RlZmluZSBXQUtFVVBf
RUNPUkVfUElQRV9NRVNTQUdFICAgIlciCisjZGVmaW5lIEVDT1JFX1BJUEVfTUVTU0FHRV9TSVpF
ICAgICAxCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUnVuTG9vcDo6UnVuTG9vcCgpCit7Cisg
ICAgaWYgKCFlY29yZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisg
ICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisKKyAgICBpZiAoIWVjb3JlX2ZpbGVfaW5pdCgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKworICAgIGlmICghZWRqZV9pbml0KCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgbV9waXBlID0gYWRvcHRQdHIoZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQs
IHRoaXMpKTsKK30KKworUnVuTG9vcDo6flJ1bkxvb3AoKQoreworICAgIGVkamVfc2h1dGRvd24o
KTsKKyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigp
OworICAgIGVjb3JlX3NodXRkb3duKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKKyAg
ICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sK
KyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcEV2
ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpCit7CisgICAgc3Rh
dGljX2Nhc3Q8UnVuTG9vcCo+KGRhdGEpLT5wZXJmb3JtV29yaygpOworfQorCit2b2lkIFJ1bkxv
b3A6Ondha2VVcCgpCit7CisgICAgZWNvcmVfcGlwZV93cml0ZShtX3BpcGUuZ2V0KCksIFdBS0VV
UF9FQ09SRV9QSVBFX01FU1NBR0UsIEVDT1JFX1BJUEVfTUVTU0FHRV9TSVpFKTsKK30KKworUnVu
TG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCogcnVuTG9vcCkKKyAgICA6IG1fdGlt
ZXIoMCkKKyAgICAsIG1faXNSZXBlYXRpbmcoZmFsc2UpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVy
QmFzZTo6flRpbWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCitib29sIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFz
ZSogdGltZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKworICAg
IHRpbWVyLT5maXJlZCgpOworCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAg
ICAgICB0aW1lci0+bV90aW1lciA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRv
dWJsZSBmaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQoreworICAgIGlmIChtX3RpbWVyKQorICAg
ICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7CisKKyAgICBtX2lzUmVwZWF0aW5nID0gcmVw
ZWF0OworICAgIG1fdGltZXIgPSBlY29yZV90aW1lcl9hZGQoZmlyZUludGVydmFsLCByZWludGVy
cHJldF9jYXN0PEVpbmFfQm9vbCgqKSh2b2lkKik+KHRpbWVyRmlyZWQpLCB0aGlzKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3RpbWVyKQorICAg
ICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcik7CisgICAgbV90aW1lciA9IDA7Cit9CisKK2Jv
b2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICht
X3RpbWVyKSA/IHRydWUgOiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4MTU1M2Fl
Yjc2YmYwNGRhNzhiNzlkNzMwZDYyMzhlY2JlNGEzNWYwLi45OWNkOTUyNjIzZTY1YzdkYmE2Njk3
YzA4YjZkN2JhYzdmMjI3NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYsNyBAQAogY2xhc3MgUVNvY2tldE5vdGlmaWVyOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJQbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjZW5kaWYKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1Ymxp
YzoKIAogI2lmIE9TKERBUldJTikKICAgICB2b2lkIHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9u
TWFjaEV4Y2VwdGlvbnMoKTsKLSNlbGlmIFBMQVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lkIHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJv
Y2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcik7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKaW5kZXggZDU0YWZmODgyYjVkNzUzMjkyMWUwMDg0ODEzOWZhOTJk
ZmNjOTkyMC4uMzRhYjMwOTBjNTM1MTRjNzAyZGNjNTI1ZTY3OGQ0M2ZmNGJhMDhlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwCkBAIC00MjMsNiArNDIzLDggQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICNl
bGlmIFBMQVRGT1JNKEdUSykKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291
cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIChHX0lPX0hVUCB8IEdfSU9fRVJSKSwgYmlu
ZCgmQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlLCB0aGlzKSk7CiAgICAgbV9jb25uZWN0
aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBH
X0lPX0lOLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlzKSk7CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJGZEV2ZW50SGFu
ZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIGJpbmQoJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRs
ZXIsIHRoaXMpKTsKICNlbmRpZgogCiAgICAgLy8gU2NoZWR1bGUgYSBjYWxsIHRvIHJlYWR5UmVh
ZEhhbmRsZXIuIERhdGEgbWF5IGhhdmUgYXJyaXZlZCBiZWZvcmUgaW5zdGFsbGF0aW9uIG9mIHRo
ZSBzaWduYWwKQEAgLTU1Miw3ICs1NTQsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2lu
Z01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAg
IHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEVGTCkKIHZvaWQgQ29ubmVjdGlvbjo6c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9u
T25Qcm9jZXNzVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHBy
b2Nlc3MpCiB7CiAgICAgbV9jb25uZWN0aW9uUXVldWUuZGlzcGF0Y2hPblRlcm1pbmF0aW9uKHBy
b2Nlc3MsIGJpbmQoJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
CmluZGV4IDUwMjJkYTc5MmMzODllM2FkMDZmNTk3ODU3ZTgxMjk4NTBhMzBlYTUuLjljYWZkMzI5
NGM2MzJiYzZhNThkZWFlYmY1NDQ1MDk1MjJlZjFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKQEAgLTQ2LDYgKzQ2LDgg
QEAgdHlwZWRlZiB2b2lkKiBHUGlkOwogdHlwZWRlZiBpbnQgR1BpZDsKICNlbmRpZgogdHlwZWRl
ZiBHUGlkIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CisjZWxpZiBQTEFURk9STShFRkwpCit0
eXBlZGVmIHBpZF90IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29y
a1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAppbmRleCA3YjRh
ZmY3MWM2MjBhMGE0ZTM4MWQ2MThlN2Y5ZTgzZWQ4MTk1N2I0Li41YjE1NzljYzc3YmM1NDdiNzIz
YWM0M2FlMzkwZWNiNDJlZjc5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApA
QCAtNDEsMTYgKzQxLDIwIEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAorI2lmIChQTEFURk9STShRVCkgJiYgIU9TKERBUldJTikpIHx8IFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lk
ZW50aWZpZXIuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQpICYmICFPUyhEQVJXSU4pCiAj
aW5jbHVkZSA8UVNvY2tldE5vdGlmaWVyPgotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIuaCIKIGNsYXNzIFFPYmplY3Q7CiBjbGFzcyBRVGhyZWFkOwogI2VsaWYgUExBVEZPUk0o
R1RLKQotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKIHR5cGVkZWYgc3Ry
dWN0IF9HTWFpbkNvbnRleHQgR01haW5Db250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX0dNYWluTG9v
cCBHTWFpbkxvb3A7CiB0eXBlZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMpIChncG9pbnRlciBk
YXRhKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgogI2VuZGlmCiAK
IGNsYXNzIFdvcmtRdWV1ZSB7CkBAIC05MSw2ICs5NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
Z2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCwgaW50LCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+
Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCk7CiAgICAgdm9p
ZCBkaXNwYXRjaE9uVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
LCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9p
ZCByZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwor
ICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRl
bnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBA
IC0xNzgsNiArMTg1LDgwIEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAg
SGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZl
bnRTb3VyY2VJdGVyYXRvcjsgCisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY2xhc3MgV29ya0l0
ZW1FZmwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya0l0ZW1FZmw+IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIFdvcmtJdGVtRWZsKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0
aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KQorICAgICAgICAgICAgLCBtX3F1ZXVlKHF1ZXVlKQorICAgICAgICB7CisgICAgICAgIH0KKyAg
ICAgICAgfldvcmtJdGVtRWZsKCkgeyB9CisKKyAgICAgICAgdm9pZCBleGVjdXRlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKG1fcXVldWUtPm1faXNWYWxpZCkKKyAgICAgICAgICAgICAg
ICBtX2Z1bmN0aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICBXb3JrUXVldWUqIHF1ZXVlKCkg
Y29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgRnVuY3Rp
b248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgICAgICBXb3JrUXVldWUqIG1fcXVldWU7CisgICAg
fTsKKworICAgIGNsYXNzIEZkV29ya0l0ZW0gOiBwdWJsaWMgV29ya0l0ZW1FZmwgeworICAgIHB1
YmxpYzoKKyAgICAgICAgRmRXb3JrSXRlbShpbnQgZmQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4m
IGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBXb3JrSXRlbUVmbChm
dW5jdGlvbiwgcXVldWUpCisgICAgICAgICAgICAsIG1fZmQoZmQpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICB+RmRXb3JrSXRlbSgpIHsgfQorICAgICAgICBpbnQgZmQoKSBjb25zdCB7
IHJldHVybiBtX2ZkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9mZDsKKyAgICB9
OworCisgICAgY2xhc3MgVGltZXJXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbUVmbCB7CisgICAg
cHVibGljOgorICAgICAgICBUaW1lcldvcmtJdGVtKGludCB0aW1lcklELCBjb25zdCBGdW5jdGlv
bjx2b2lkKCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgICAgIDogV29y
a0l0ZW1FZmwoZnVuY3Rpb24sIHF1ZXVlKQorICAgICAgICAgICAgLCBtX3RpbWVySUQodGltZXJJ
RCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIH5UaW1lcldvcmtJdGVtKCkgeyB9Cisg
ICAgICAgIGludCB0aW1lcklEKCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklEOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBpbnQgbV90aW1lcklEOworICAgIH07CisKKyAgICBmZF9zZXQgbV9m
ZFNldDsKKyAgICBpbnQgbV9tYXhGZDsKKyAgICBpbnQgbV9yZWFkRnJvbVBpcGVGZDsKKyAgICBp
bnQgbV93cml0ZVRvUGlwZUZkOworICAgIGJvb2wgbV90aHJlYWRMb29wOworCisgICAgVmVjdG9y
PFJlZlB0cjxXb3JrSXRlbUVmbD4gPiBtX3dvcmtJdGVtUXVldWU7CisgICAgTXV0ZXggbV93b3Jr
SXRlbVF1ZXVlTG9jazsKKyAgICBWZWN0b3I8UmVmUHRyPEZkV29ya0l0ZW0+ID4gbV9GZFdvcmtJ
dGVtczsKKyAgICBNdXRleCBtX0ZkV29ya0l0ZW1zTG9jazsKKworICAgIFZlY3RvcjxFY29yZV9U
aW1lcio+IG1fdGltZXJzOworCisgICAgc3RhdGljIEhhc2hNYXA8V2ViS2l0OjpQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLCBSZWZQdHI8V29ya0l0ZW1FZmw+ID4gbV90ZXJtV29ya0l0ZW1zOwor
CisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0aWMg
dm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3Jr
QW5kV2FrZVVwKFBhc3NSZWZQdHI8V29ya0l0ZW1FZmw+KTsKKyAgICB2b2lkIHBlcmZvcm1Xb3Jr
KCk7CisgICAgdm9pZCBwZXJmb3JtRmRXb3JrKCk7CisgICAgc2l6ZV90IGdldE5leHRUaW1lcklE
KCk7CisgICAgc3RhdGljIGJvb2wgdGltZXJGaXJlZCh2b2lkKik7CisgICAgc3RhdGljIGJvb2wg
ZXhpdEhhbmRsZXIodm9pZCosIGludCwgdm9pZCopOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMTU3Zjdi
MDBjYzMxOWJjMzFkYTE5ZjgwNWE0YjQwYjdjMTUyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcApAQCAtMCwwICsxLDE4MCBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxl
cnJuby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjZGVmaW5lIFdBS0VVUF9USFJFQURfTUVT
U0FHRSAgICJXIgorI2RlZmluZSBGSU5JU0hfVEhSRUFEX01FU1NBR0UgICAiRiIKKyNkZWZpbmUg
VEhSRUFEX01FU1NBR0VfU0laRSAgICAgMQorCisvLyBXb3JrUXVldWUKK3ZvaWQgV29ya1F1ZXVl
OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpbnQgZmRzWzJd
OworICAgIGlmIChwaXBlKGZkcykpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IG1fcmVhZEZyb21QaXBlRmQgPSBmZHNbMF07CisgICAgbV93cml0ZVRvUGlwZUZkID0gZmRzWzFd
OworICAgIEZEX1pFUk8oJm1fZmRTZXQpOworICAgIEZEX1NFVChtX3JlYWRGcm9tUGlwZUZkLCAm
bV9mZFNldCk7CisgICAgbV9tYXhGZCA9IG1fcmVhZEZyb21QaXBlRmQ7CisKKyAgICBlY29yZV9l
dmVudF9oYW5kbGVyX2FkZChFQ09SRV9FWEVfRVZFTlRfREVMLCByZWludGVycHJldF9jYXN0PEVp
bmFfQm9vbCgqKSh2b2lkKiwgaW50LCB2b2lkKik+KGV4aXRIYW5kbGVyKSwgMCk7CisKKyAgICBt
X3RocmVhZExvb3AgPSB0cnVlOworICAgIGNyZWF0ZVRocmVhZChyZWludGVycHJldF9jYXN0PFdU
Rjo6VGhyZWFkRnVuY3Rpb24+KCZXb3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCksIHRoaXMsIG5h
bWUpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBz
ZW5kTWVzc2FnZVRvVGhyZWFkKEZJTklTSF9USFJFQURfTUVTU0FHRSk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdGltZXJzLnNpemUoKTsgKytpKQorICAgICAgICBlY29yZV90aW1l
cl9kZWwobV90aW1lcnNbaV0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmsoKQor
eworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworCisgICAgd2hpbGUgKCFtX3dvcmtJ
dGVtUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0ZW1FZmw+
ID4gd29ya0l0ZW1RdWV1ZTsKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlLnN3YXAod29ya0l0ZW1R
dWV1ZSk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JrSXRlbVF1ZXVlLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgd29ya0l0ZW1RdWV1ZVtpXS0+ZXhlY3V0ZSgpOworCisgICAgICAgIG1fd29ya0l0ZW1R
dWV1ZUxvY2subG9jaygpOworICAgIH0KKworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2Nr
KCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3JrKCkKK3sKKyAgICBmZF9zZXQg
cmVhZEZkU2V0ID0gbV9mZFNldDsKKworICAgIGlmIChzZWxlY3QobV9tYXhGZCArIDEsICZyZWFk
RmRTZXQsIDAsIDAsIDApID49IDApIHsKKyAgICAgICAgaWYgKEZEX0lTU0VUKG1fcmVhZEZyb21Q
aXBlRmQsICZyZWFkRmRTZXQpKSB7CisgICAgICAgICAgICBjaGFyIHJlYWRCdWZbVEhSRUFEX01F
U1NBR0VfU0laRV07CisgICAgICAgICAgICBpZiAocmVhZChtX3JlYWRGcm9tUGlwZUZkLCByZWFk
QnVmLCBUSFJFQURfTUVTU0FHRV9TSVpFKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byByZWFkIGZyb20gV29ya1F1ZXVlVGhyZWFkIHBpcGUiKTsKKyAgICAgICAg
ICAgIGlmICghc3RybmNtcChyZWFkQnVmLCBGSU5JU0hfVEhSRUFEX01FU1NBR0UsIFRIUkVBRF9N
RVNTQUdFX1NJWkUpKQorICAgICAgICAgICAgICAgIG1fdGhyZWFkTG9vcCA9IGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX0ZkV29ya0l0ZW1zTG9jayk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9GZFdvcmtJdGVtcy5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgaWYgKEZEX0lTU0VUKG1fRmRXb3JrSXRlbXNbaV0tPmZkKCksICZyZWFk
RmRTZXQpKQorICAgICAgICAgICAgICAgIG1fRmRXb3JrSXRlbXNbaV0tPmV4ZWN1dGUoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OnNlbmRNZXNzYWdlVG9UaHJlYWQo
Y29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBpZiAod3JpdGUobV93cml0ZVRvUGlwZUZkLCBt
ZXNzYWdlLCBUSFJFQURfTUVTU0FHRV9TSVpFKSA9PSAtMSkKKyAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gd2FrZSB1cCBXb3JrUXVldWUgVGhyZWFkIik7Cit9CisKK3ZvaWQqIFdvcmtRdWV1
ZTo6d29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVlKQoreworICAgIHdoaWxlICh3
b3JrUXVldWUtPm1fdGhyZWFkTG9vcCkgeworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3Jr
KCk7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybUZkV29yaygpOworICAgIH0KKworICAgIGNs
b3NlKHdvcmtRdWV1ZS0+bV9yZWFkRnJvbVBpcGVGZCk7CisgICAgY2xvc2Uod29ya1F1ZXVlLT5t
X3dyaXRlVG9QaXBlRmQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpy
ZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCBmZCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVu
Y3Rpb24pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX0ZkV29ya0l0ZW1zTG9jayk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX0ZkV29ya0l0ZW1zLnNpemUoKTsgKytpKQorICAgICAg
ICBpZiAobV9GZFdvcmtJdGVtc1tpXS0+ZmQoKSAhPSBmZCkKKyAgICAgICAgICAgIExPR19FUlJP
UigiJWQgaXMgYWxyZWFkeSByZWdpc3RlcmQuIiwgZmQpOworCisgICAgbV9GZFdvcmtJdGVtcy5h
cHBlbmQoYWRvcHRSZWYobmV3IEZkV29ya0l0ZW0oZmQsIGZ1bmN0aW9uLCB0aGlzKSkpOworCisg
ICAgaWYgKGZkID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOworICAgIEZEX1NFVChm
ZCwgJm1fZmRTZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2FrZVVw
KFBhc3NSZWZQdHI8V29ya0l0ZW1FZmw+IGl0ZW0pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fd29ya0l0ZW1RdWV1ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoaXRlbSk7
CisgICAgc2VuZE1lc3NhZ2VUb1RocmVhZChXQUtFVVBfVEhSRUFEX01FU1NBR0UpOworfQorCit2
b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24p
Cit7CisgICAgc2NoZWR1bGVXb3JrQW5kV2FrZVVwKGFkb3B0UmVmKG5ldyBXb3JrSXRlbUVmbChm
dW5jdGlvbiwgdGhpcykpKTsKK30KKworc2l6ZV90IFdvcmtRdWV1ZTo6Z2V0TmV4dFRpbWVySUQo
KQoreworICAgIHJldHVybiBtX3RpbWVycy5zaXplKCk7Cit9CisKK2Jvb2wgV29ya1F1ZXVlOjp0
aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgVGltZXJXb3JrSXRlbSogaXRlbSA9IHN0YXRp
Y19jYXN0PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsKKworICAgIGl0ZW0tPnF1ZXVlKCktPnNjaGVk
dWxlV29ya0FuZFdha2VVcChhZG9wdFJlZihpdGVtKSk7CisgICAgaXRlbS0+cXVldWUoKS0+bV90
aW1lcnMucmVtb3ZlKGl0ZW0tPnRpbWVySUQoKSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkoY29uc3QgRnVuY3Rpb248dm9pZCgp
PiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxheSkKK3sKKyAgICBzaXplX3QgdGltZXJJZCA9IGdldE5l
eHRUaW1lcklEKCk7CisgICAgbV90aW1lcnNbdGltZXJJZF0gPSBlY29yZV90aW1lcl9hZGQoZGVs
YXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWluYV9Cb29sKCopKHZvaWQqKT4odGltZXJGaXJlZCksIG5l
dyBUaW1lcldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0aW9uLCB0aGlzKSk7Cit9CisKK0hhc2hNYXA8
V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBSZWZQdHI8V29ya1F1ZXVlOjpXb3Jr
SXRlbUVmbD4gPiBXb3JrUXVldWU6Om1fdGVybVdvcmtJdGVtczsKKworYm9vbCBXb3JrUXVldWU6
OmV4aXRIYW5kbGVyKHZvaWQqIGRhdGEsIGludCB0eXBlLCB2b2lkKiBldmVudCkKK3sKKyAgICBF
Y29yZV9FeGVfRXZlbnRfRGVsKiBldiA9IHN0YXRpY19jYXN0PEVjb3JlX0V4ZV9FdmVudF9EZWwq
PihldmVudCk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIGRlYWRDaGls
ZFBpZCA9IHN0YXRpY19jYXN0PFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcj4oZXYt
PnBpZCk7CisKKyAgICBBU1NFUlRfQVJHKGRlYWRDaGlsZFBpZCwgbV90ZXJtV29ya0l0ZW1zLmNv
bnRhaW5zKGRlYWRDaGlsZFBpZCkpOworICAgIFJlZlB0cjxXb3JrSXRlbUVmbD4gaXRlbSA9IG1f
dGVybVdvcmtJdGVtcy50YWtlKGRlYWRDaGlsZFBpZCk7CisgICAgaWYgKGl0ZW0pCisgICAgICAg
IGl0ZW0tPnF1ZXVlKCktPnNjaGVkdWxlV29ya0FuZFdha2VVcChpdGVtKTsKKworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJL
aXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2VzcywgY29uc3QgRnVuY3Rpb248dm9p
ZCgpPiYgZnVuY3Rpb24pCit7CisgICAgQVNTRVJUX0FSRyhwcm9jZXNzLCAhbV90ZXJtV29ya0l0
ZW1zLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICBtX3Rlcm1Xb3JrSXRlbXMuc2V0KHByb2Nlc3Ms
IG5ldyBXb3JrSXRlbUVmbChmdW5jdGlvbiwgdGhpcykpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCBkOGE3OTdhNmNiNjI0OTZjNmQzNzkzZmEzYmM1OWJiYjkxMTlkNzg5Li45YTFm
MDliNGI2ZjQ5YWQ3Mjc4NzRkZjUxMTU1MjYyMzk4NzAyMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtNyw3ICs3LDYgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9MSU5LX0ZMQUdTCiAK
IExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL2VmbC9Nb2R1bGVFZmwu
Y3BwCi0gICAgUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZsL1dv
cmtRdWV1ZUVmbC5jcHAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA4NDI4MGE3M2Q5OWU2M2YwYmNiZmZiMTU5YmM3MWYwZjhlMjNlODc5
Li43MjI1NWYyNTc5NDNkZDdjMmRkZGNlYTQ5YjQ0ODNiMDdhYjJmNjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzLCBDCiB7CiAjaWYgT1MoREFS
V0lOKQogICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhj
ZXB0aW9ucygpOwotI2VsaWYgUExBVEZPUk0oUVQpCisjZWxpZiBQTEFURk9STShRVCkgfHwgUExB
VEZPUk0oRUZMKQogICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Q
cm9jZXNzVGVybWluYXRpb24ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAjZW5kaWYK
IH0K
</data>
<flag name="review"
          id="131480"
          type_id="1"
          status="-"
          setter="rakuco"
    />
    <flag name="commit-queue"
          id="131481"
          type_id="3"
          status="-"
          setter="rakuco"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129848</attachid>
            <date>2012-03-02 01:59:12 -0800</date>
            <delta_ts>2012-03-08 00:32:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch-[20120302]-[youngtaeck.song@samsung.com]-[Add_RunLoopEfl_and_WorkQueueEfl].patch</filename>
            <type>text/plain</type>
            <size>21768</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NjY1NmJiLi5mZDUwY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTItMDMtMDIgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5n
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVF
ZmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGlu
aXRpYWwgdmVyc2lvbiBSdW5Mb29wRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIHBs
YXRmb3JtL1J1bkxvb3AuaDoKKyAgICAgICAgKFRpbWVyQmFzZSk6CisgICAgICAgIChSdW5Mb29w
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6On5SdW5M
b29wKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6cnVu
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6
UnVuTG9vcDo6d2FrZVVwRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6d2FrZVVw
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJC
YXNlOjppc0FjdGl2ZSk6CisKIDIwMTItMDMtMDIgIEpvaG4gQmF1bWFuICA8amJhdW1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTZW5kIGRpZENvbW1pdEFuZERyYXdGcmFt
ZSBhZnRlciBzd2FwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0Mi4uNTQz
NGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzksMTAgQEAKICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVG
TCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQg
Y2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZXJTb3Vy
Y2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7CisgICAgICAgIE93
blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwog
I2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fcnVuTG9vcENvbnRleHQ7CiAgICAgVmVjdG9yPEdS
ZWZQdHI8R01haW5Mb29wPiA+IG1fcnVuTG9vcE1haW5Mb29wczsKKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyAgICBPd25QdHI8RWNvcmVfUGlwZT4gbV9waXBlOworICAgIHN0YXRpYyB2b2lkIHdha2VV
cEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVm
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKaW5kZXgg
ZTgyMDc4OC4uNGMwNjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1J1bkxvb3BFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29w
RWZsLmNwcApAQCAtMSw0OCArMSwxMzkgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgUHJv
RlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLworICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9FdmFz
Lmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworc3RhdGljIGNv
bnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgd2FrdXBFY29yZVBpcGVNZXNzYWdlID0gIlciOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJ1bkxvb3A6OlJ1bkxvb3AoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFl
Y29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4i
KTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlOworICAgIH0KKworICAgIGlmICghZWNvcmVfZXZh
c19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZV9ldmFz
LiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFzOworICAgIH0KKworICAgIGlmICghZWNv
cmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29y
ZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVGaWxlOworICAgIH0KKworICAgIGlm
ICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlZGpl
LiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAgICB9CisKKyAgICBtX3BpcGUgPSBhZG9w
dFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhpcykpOworCisgICAgcmV0dXJuOwor
CitlcnJvckVkamU6CisgICAgZWNvcmVfZmlsZV9zaHV0ZG93bigpOworZXJyb3JFY29yZUZpbGU6
CisgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworZXJyb3JFY29yZUV2YXM6CisgICAgZWNvcmVf
c2h1dGRvd24oKTsKK2Vycm9yRWNvcmU6CisgICAgcmV0dXJuOwogfQogCiBSdW5Mb29wOjp+UnVu
TG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBlZGplX3NodXRkb3duKCk7Cisg
ICAgZWNvcmVfZmlsZV9zaHV0ZG93bigpOworICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAg
ICBlY29yZV9zaHV0ZG93bigpOworfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAgZWNv
cmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7CisgICAg
ZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXBFdmVudCh2
b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0YXRpY19j
YXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKIH0KIAogdm9pZCBSdW5Mb29wOjp3
YWtlVXAoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZWNvcmVfcGlwZV93cml0ZSht
X3BpcGUuZ2V0KCksIHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVzc2FnZVNpemUp
OworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQor
ICAgIDogbV9pc1JlcGVhdGluZyhmYWxzZSkKK3sKK30KKworUnVuTG9vcDo6VGltZXJCYXNlOjp+
VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNl
Ojp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgUnVuTG9vcDo6VGltZXJCYXNlKiB0aW1l
ciA9IHN0YXRpY19jYXN0PFJ1bkxvb3A6OlRpbWVyQmFzZSo+KGRhdGEpOworCisgICAgdGltZXIt
PmZpcmVkKCk7CisKKyAgICBpZiAoIXRpbWVyLT5tX2lzUmVwZWF0aW5nKSB7CisgICAgICAgIHRp
bWVyLT5tX3RpbWVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91
YmxlIGZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7CisgICAgbV9pc1JlcGVhdGluZyA9IHJl
cGVhdDsKKyAgICBtX3RpbWVyID0gYWRvcHRQdHIoZWNvcmVfdGltZXJfYWRkKGZpcmVJbnRlcnZh
bCwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9UYXNrX0NiPih0aW1lckZpcmVkKSwgdGhpcykpOwor
fQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgbV90aW1lciA9IG51
bGxwdHI7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQyMDUxZmQuLjVkMDJiODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAxMi0wMy0wMiAgWW91bmdUYWVjayBTb25nICA8eW91bmd0YWVjay5z
b25nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFJ1bkxvb3BFZmwgYW5k
IFdvcmtRdWV1ZUVmbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjI3NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgaW5pdGlhbCB2ZXJzaW9uIFdvcmtRdWV1ZUVmbCBmb3IgV2ViS2l0MiBFZmwuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvbm5l
Y3Rpb24pOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAqIFBsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogUGxhdGZvcm0vV29ya1F1ZXVlLmg6CisgICAgICAg
IChXb3JrUXVldWUpOgorICAgICAgICAoV29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVl
OjpXb3JrSXRlbUVmbDo6V29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRl
bUVmbDo6fldvcmtJdGVtRWZsKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OmV4
ZWN1dGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6cXVldWUpOgorICAgICAg
ICAoRmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OkZkV29ya0l0
ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjp+RmRXb3JrSXRlbSk6CisgICAg
ICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OmZkKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW0p
OgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6flRpbWVyV29ya0l0ZW0pOgorICAgICAg
ICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjp0aW1lcklEKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9lZmwvV29ya1F1ZXVlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXb3JrUXVldWU6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6
CisgICAgICAgIChXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
cGVyZm9ybUZkV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnNlbmRNZXNzYWdlVG9UaHJlYWQp
OgorICAgICAgICAoV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpOgorICAgICAgICAoV29ya1F1
ZXVlOjpyZWdpc3RlckZkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1
bGVXb3JrQW5kV2FrZVVwKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAg
ICAoV29ya1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hB
ZnRlckRlbGF5KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIpOgorICAgICAgICAo
V29ya1F1ZXVlOjpkaXNwYXRjaE9uVGVybWluYXRpb24pOgorICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyk6CisKIDIwMTItMDMtMDEgIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5i
ZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIE1ha2UgdGhlIGludGVyYWN0aW9u
IHdpdGggdGhlIEZsaWNrYWJsZSB3b3JrIG9uIHRoZSBOOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4MTU1M2FlLi45OWNkOTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYs
NyBAQAogY2xhc3MgUVNvY2tldE5vdGlmaWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjZW5k
aWYKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogI2lmIE9TKERBUldJTikKICAgICB2
b2lkIHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKLSNlbGlmIFBM
QVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lk
IHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggZDU0
YWZmOC4uMzRhYjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC00MjMsNiArNDIzLDggQEAgYm9vbCBD
b25uZWN0aW9uOjpvcGVuKCkKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBtX2Nvbm5lY3Rpb25R
dWV1ZS5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIChHX0lP
X0hVUCB8IEdfSU9fRVJSKSwgYmluZCgmQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlLCB0
aGlzKSk7CiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIo
bV9zb2NrZXREZXNjcmlwdG9yLCBHX0lPX0lOLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRI
YW5kbGVyLCB0aGlzKSk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVl
dWUucmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIGJpbmQoJkNvbm5l
Y3Rpb246OnJlYWR5UmVhZEhhbmRsZXIsIHRoaXMpKTsKICNlbmRpZgogCiAgICAgLy8gU2NoZWR1
bGUgYSBjYWxsIHRvIHJlYWR5UmVhZEhhbmRsZXIuIERhdGEgbWF5IGhhdmUgYXJyaXZlZCBiZWZv
cmUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzaWduYWwKQEAgLTU1Miw3ICs1NTQsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJRCwgUGFzc093
blB0cjxBcmd1bWVudEVuYwogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oUVQp
CisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKIHZvaWQgQ29ubmVjdGlvbjo6c2V0
U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3MpCiB7CiAgICAgbV9jb25uZWN0aW9uUXVldWUuZGlz
cGF0Y2hPblRlcm1pbmF0aW9uKHByb2Nlc3MsIGJpbmQoJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25E
aWRDbG9zZSwgdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oCmluZGV4IDUwMjJkYTcuLjljYWZkMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKQEAg
LTQ2LDYgKzQ2LDggQEAgdHlwZWRlZiB2b2lkKiBHUGlkOwogdHlwZWRlZiBpbnQgR1BpZDsKICNl
bmRpZgogdHlwZWRlZiBHUGlkIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CisjZWxpZiBQTEFU
Rk9STShFRkwpCit0eXBlZGVmIHBpZF90IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUu
aAppbmRleCBlZDg5NGNiLi5iOTEzMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUu
aApAQCAtNDEsMTUgKzQxLDE5IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIChQTEFURk9STShRVCkgJiYgIU9TKERBUldJTikpIHx8
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQpICYmICFPUyhEQVJXSU4p
CiAjaW5jbHVkZSA8UVNvY2tldE5vdGlmaWVyPgotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lk
ZW50aWZpZXIuaCIKIGNsYXNzIFFPYmplY3Q7CiBjbGFzcyBRVGhyZWFkOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiB0eXBlZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMp
IChncG9pbnRlciBkYXRhKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5o
PgogI2VuZGlmCiAKIGNsYXNzIFdvcmtRdWV1ZSB7CkBAIC05MCw2ICs5NCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCwgaW50LCBjb25zdCBGdW5j
dGlvbjx2b2lkKCk+Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGlu
dCk7CiAgICAgdm9pZCBkaXNwYXRjaE9uVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgdm9pZCByZWdpc3RlckZkRXZlbnRIYW5kbGVyKGludCwgY29uc3QgRnVuY3Rpb248
dm9pZCgpPiYpOworICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogI2VuZGlmCiAK
IHByaXZhdGU6CkBAIC0xNzcsNiArMTg0LDc5IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgRXZlbnRT
b3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+ID4gbV9ldmVudFNv
dXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPjo6
aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisjZWxpZiBQTEFURk9STShFRkwpCisgICAg
Y2xhc3MgV29ya0l0ZW1FZmwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya0l0ZW1F
Zmw+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdvcmtJdGVtRWZsKGNvbnN0IEZ1bmN0aW9uPHZv
aWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQorICAgICAgICAgICAgLCBtX3F1ZXVlKHF1ZXVlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKyAgICAgICAgfldvcmtJdGVtRWZsKCkgeyB9CisKKyAgICAgICAgdm9pZCBleGVj
dXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fcXVldWUtPm1faXNWYWxpZCkKKyAg
ICAgICAgICAgICAgICBtX2Z1bmN0aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICBXb3JrUXVl
dWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgICAgICBXb3JrUXVldWUqIG1f
cXVldWU7CisgICAgfTsKKworICAgIGNsYXNzIEZkV29ya0l0ZW0gOiBwdWJsaWMgV29ya0l0ZW1F
ZmwgeworICAgIHB1YmxpYzoKKyAgICAgICAgRmRXb3JrSXRlbShpbnQgZmQsIGNvbnN0IEZ1bmN0
aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgICAgICAgICAgOiBX
b3JrSXRlbUVmbChmdW5jdGlvbiwgcXVldWUpCisgICAgICAgICAgICAsIG1fZmQoZmQpCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICB+RmRXb3JrSXRlbSgpIHsgfQorICAgICAgICBpbnQg
ZmQoKSBjb25zdCB7IHJldHVybiBtX2ZkOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQg
bV9mZDsKKyAgICB9OworCisgICAgY2xhc3MgVGltZXJXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRl
bUVmbCB7CisgICAgcHVibGljOgorICAgICAgICBUaW1lcldvcmtJdGVtKGludCB0aW1lcklELCBj
b25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAg
ICAgICAgIDogV29ya0l0ZW1FZmwoZnVuY3Rpb24sIHF1ZXVlKQorICAgICAgICAgICAgLCBtX3Rp
bWVySUQodGltZXJJRCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIH5UaW1lcldvcmtJ
dGVtKCkgeyB9CisgICAgICAgIGludCB0aW1lcklEKCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklE
OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV90aW1lcklEOworICAgIH07CisKKyAg
ICBmZF9zZXQgbV9mZFNldDsKKyAgICBpbnQgbV9tYXhGZDsKKyAgICBpbnQgbV9yZWFkRnJvbVBp
cGVGZDsKKyAgICBpbnQgbV93cml0ZVRvUGlwZUZkOworICAgIGJvb2wgbV90aHJlYWRMb29wOwor
CisgICAgVmVjdG9yPFJlZlB0cjxXb3JrSXRlbUVmbD4gPiBtX3dvcmtJdGVtUXVldWU7CisgICAg
TXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKKyAgICBWZWN0b3I8UmVmUHRyPEZkV29ya0l0ZW0+
ID4gbV9mZFdvcmtJdGVtczsKKyAgICBNdXRleCBtX2ZkV29ya0l0ZW1zTG9jazsKKworICAgIFZl
Y3RvcjxFY29yZV9UaW1lcio+IG1fdGltZXJzOworCisgICAgc3RhdGljIEhhc2hNYXA8V2ViS2l0
OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBSZWZQdHI8V29ya0l0ZW1FZmw+ID4gbV90ZXJt
V29ya0l0ZW1zOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsK
KyAgICBzdGF0aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQg
c2NoZWR1bGVXb3JrQW5kV2FrZVVwKFBhc3NSZWZQdHI8V29ya0l0ZW1FZmw+KTsKKyAgICB2b2lk
IHBlcmZvcm1Xb3JrKCk7CisgICAgdm9pZCBwZXJmb3JtRmRXb3JrKCk7CisgICAgc3RhdGljIGJv
b2wgdGltZXJGaXJlZCh2b2lkKik7CisgICAgc3RhdGljIGJvb2wgZXhpdEhhbmRsZXIodm9pZCos
IGludCwgdm9pZCopOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2Vm
bC9Xb3JrUXVldWVFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4
MWUzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcApAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV29ya1F1ZXVlLmgiCisKK3N0YXRpYyBjb25zdCBpbnQgdGhyZWFkTWVzc2FnZVNpemUgPSAx
OworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZmluaXNoVGhyZWFkTWVzc2FnZSA9ICJGIjsK
K3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3YWt1cFRocmVhZE1lc3NhZ2UgPSAiVyI7CisKKy8v
IFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFy
KiBuYW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBpcGUoZmRzKSkKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9yZWFkRnJvbVBpcGVGZCA9IGZkc1swXTsKKyAg
ICBtX3dyaXRlVG9QaXBlRmQgPSBmZHNbMV07CisgICAgRkRfWkVSTygmbV9mZFNldCk7CisgICAg
RkRfU0VUKG1fcmVhZEZyb21QaXBlRmQsICZtX2ZkU2V0KTsKKyAgICBtX21heEZkID0gbV9yZWFk
RnJvbVBpcGVGZDsKKworICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfYWRkKEVDT1JFX0VYRV9FVkVO
VF9ERUwsIHJlaW50ZXJwcmV0X2Nhc3Q8RWNvcmVfRXZlbnRfSGFuZGxlcl9DYj4oZXhpdEhhbmRs
ZXIpLCAwKTsKKworICAgIG1fdGhyZWFkTG9vcCA9IHRydWU7CisgICAgY3JlYXRlVGhyZWFkKHJl
aW50ZXJwcmV0X2Nhc3Q8V1RGOjpUaHJlYWRGdW5jdGlvbj4oJldvcmtRdWV1ZTo6d29ya1F1ZXVl
VGhyZWFkKSwgdGhpcywgbmFtZSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFs
aWRhdGUoKQoreworICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQoZmluaXNoVGhyZWFkTWVzc2FnZSk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGltZXJzLnNpemUoKTsgKytpKQorICAg
ICAgICBlY29yZV90aW1lcl9kZWwobV90aW1lcnNbaV0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6
cGVyZm9ybVdvcmsoKQoreworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworCisgICAg
d2hpbGUgKCFtX3dvcmtJdGVtUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8V29ya0l0ZW1FZmw+ID4gd29ya0l0ZW1RdWV1ZTsKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVl
LnN3YXAod29ya0l0ZW1RdWV1ZSk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxv
Y2soKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JrSXRlbVF1ZXVlLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgd29ya0l0ZW1RdWV1ZVtpXS0+ZXhlY3V0ZSgpOworCisgICAg
ICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworICAgIH0KKworICAgIG1fd29ya0l0ZW1R
dWV1ZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3JrKCkK
K3sKKyAgICBmZF9zZXQgcmVhZEZkU2V0ID0gbV9mZFNldDsKKworICAgIGlmIChzZWxlY3QobV9t
YXhGZCArIDEsICZyZWFkRmRTZXQsIDAsIDAsIDApID49IDApIHsKKyAgICAgICAgaWYgKEZEX0lT
U0VUKG1fcmVhZEZyb21QaXBlRmQsICZyZWFkRmRTZXQpKSB7CisgICAgICAgICAgICBjaGFyIHJl
YWRCdWZbdGhyZWFkTWVzc2FnZVNpemVdOworICAgICAgICAgICAgaWYgKHJlYWQobV9yZWFkRnJv
bVBpcGVGZCwgcmVhZEJ1ZiwgdGhyZWFkTWVzc2FnZVNpemUpID09IC0xKQorICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJlYWQgZnJvbSBXb3JrUXVldWVUaHJlYWQgcGlwZSIp
OworICAgICAgICAgICAgaWYgKCFzdHJuY21wKHJlYWRCdWYsIGZpbmlzaFRocmVhZE1lc3NhZ2Us
IHRocmVhZE1lc3NhZ2VTaXplKSkKKyAgICAgICAgICAgICAgICBtX3RocmVhZExvb3AgPSBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9mZFdvcmtJdGVtc0xv
Y2spOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZmRXb3JrSXRlbXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChGRF9JU1NFVChtX2ZkV29ya0l0ZW1zW2ldLT5mZCgp
LCAmcmVhZEZkU2V0KSkKKyAgICAgICAgICAgICAgICBtX2ZkV29ya0l0ZW1zW2ldLT5leGVjdXRl
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRv
VGhyZWFkKGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgaWYgKHdyaXRlKG1fd3JpdGVUb1Bp
cGVGZCwgbWVzc2FnZSwgdGhyZWFkTWVzc2FnZVNpemUpID09IC0xKQorICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byB3YWtlIHVwIFdvcmtRdWV1ZSBUaHJlYWQiKTsKK30KKwordm9pZCogV29y
a1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKiB3b3JrUXVldWUpCit7CisgICAgd2hp
bGUgKHdvcmtRdWV1ZS0+bV90aHJlYWRMb29wKSB7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9y
bVdvcmsoKTsKKyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtRmRXb3JrKCk7CisgICAgfQorCisg
ICAgY2xvc2Uod29ya1F1ZXVlLT5tX3JlYWRGcm9tUGlwZUZkKTsKKyAgICBjbG9zZSh3b3JrUXVl
dWUtPm1fd3JpdGVUb1BpcGVGZCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXb3JrUXVl
dWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50IGZkLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fZmRXb3JrSXRlbXNMb2NrKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZmRXb3JrSXRlbXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIGlmIChtX2ZkV29ya0l0ZW1zW2ldLT5mZCgpICE9IGZkKQorICAgICAgICAgICAgTE9H
X0VSUk9SKCIlZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iLCBmZCk7CisKKyAgICBtX2ZkV29ya0l0
ZW1zLmFwcGVuZChhZG9wdFJlZihuZXcgRmRXb3JrSXRlbShmZCwgZnVuY3Rpb24sIHRoaXMpKSk7
CisKKyAgICBpZiAoZmQgPiBtX21heEZkKQorICAgICAgICBtX21heEZkID0gZmQ7CisgICAgRkRf
U0VUKGZkLCAmbV9mZFNldCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRX
YWtlVXAoUGFzc1JlZlB0cjxXb3JrSXRlbUVmbD4gaXRlbSkKK3sKKyAgICBNdXRleExvY2tlciBs
b2NrZXIobV93b3JrSXRlbVF1ZXVlTG9jayk7CisgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChp
dGVtKTsKKyAgICBzZW5kTWVzc2FnZVRvVGhyZWFkKHdha3VwVGhyZWFkTWVzc2FnZSk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlv
bikKK3sKKyAgICBzY2hlZHVsZVdvcmtBbmRXYWtlVXAoYWRvcHRSZWYobmV3IFdvcmtJdGVtRWZs
KGZ1bmN0aW9uLCB0aGlzKSkpOworfQorCitib29sIFdvcmtRdWV1ZTo6dGltZXJGaXJlZCh2b2lk
KiBkYXRhKQoreworICAgIFRpbWVyV29ya0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxUaW1lcldv
cmtJdGVtKj4oZGF0YSk7CisKKyAgICBpdGVtLT5xdWV1ZSgpLT5zY2hlZHVsZVdvcmtBbmRXYWtl
VXAoYWRvcHRSZWYoaXRlbSkpOworICAgIGl0ZW0tPnF1ZXVlKCktPm1fdGltZXJzLnJlbW92ZShp
dGVtLT50aW1lcklEKCkpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBk
b3VibGUgZGVsYXkpCit7CisgICAgc2l6ZV90IHRpbWVySWQgPSBtX3RpbWVycy5zaXplKCk7IC8v
IGdldCBuZXh0IHRpbWVySWQKKyAgICBtX3RpbWVyc1t0aW1lcklkXSA9IGVjb3JlX3RpbWVyX2Fk
ZChkZWxheSwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9UYXNrX0NiPih0aW1lckZpcmVkKSwgbmV3
IFRpbWVyV29ya0l0ZW0odGltZXJJZCwgZnVuY3Rpb24sIHRoaXMpKTsKK30KKworSGFzaE1hcDxX
ZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIFJlZlB0cjxXb3JrUXVldWU6OldvcmtJ
dGVtRWZsPiA+IFdvcmtRdWV1ZTo6bV90ZXJtV29ya0l0ZW1zOworCitib29sIFdvcmtRdWV1ZTo6
ZXhpdEhhbmRsZXIodm9pZCogZGF0YSwgaW50IHR5cGUsIHZvaWQqIGV2ZW50KQoreworICAgIEVj
b3JlX0V4ZV9FdmVudF9EZWwqIGV2ID0gc3RhdGljX2Nhc3Q8RWNvcmVfRXhlX0V2ZW50X0RlbCo+
KGV2ZW50KTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgZGVhZENoaWxk
UGlkID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyPihldi0+
cGlkKTsKKworICAgIEFTU0VSVF9BUkcoZGVhZENoaWxkUGlkLCBtX3Rlcm1Xb3JrSXRlbXMuY29u
dGFpbnMoZGVhZENoaWxkUGlkKSk7CisgICAgUmVmUHRyPFdvcmtJdGVtRWZsPiBpdGVtID0gbV90
ZXJtV29ya0l0ZW1zLnRha2UoZGVhZENoaWxkUGlkKTsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAg
aXRlbS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGl0ZW0pOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktp
dDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzLCBjb25zdCBGdW5jdGlvbjx2b2lk
KCk+JiBmdW5jdGlvbikKK3sKKyAgICBBU1NFUlRfQVJHKHByb2Nlc3MsICFtX3Rlcm1Xb3JrSXRl
bXMuY29udGFpbnMocHJvY2VzcykpOworICAgIG1fdGVybVdvcmtJdGVtcy5zZXQocHJvY2Vzcywg
YWRvcHRSZWYobmV3IFdvcmtJdGVtRWZsKGZ1bmN0aW9uLCB0aGlzKSkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCBkOGE3OTdhLi45YTFmMDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtNyw3ICs3LDYgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9MSU5LX0ZMQUdTCiAK
IExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL2VmbC9Nb2R1bGVFZmwu
Y3BwCi0gICAgUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZsL1dv
cmtRdWV1ZUVmbC5jcHAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCA4NDI4MGE3Li43MjI1NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzLCBDCiB7CiAjaWYgT1MoREFSV0lOKQogICAg
IG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygp
OwotI2VsaWYgUExBVEZPUk0oUVQpCisjZWxpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZM
KQogICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVy
bWluYXRpb24ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130789</attachid>
            <date>2012-03-08 00:32:22 -0800</date>
            <delta_ts>2012-03-08 01:06:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120308173220.patch</filename>
            <type>text/plain</type>
            <size>22396</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEzODJhNzllZTI1NTU0
ZmQ1M2EyMjRhMWI2YTk4MDllZTdhODkzNi4uNDVhMDhjMjFmYzA4M2E1NzNmNjgwMTBjZmIwYmIw
YWFjN2UxMDYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTA4ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29u
dGFpbmVyTm9kZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQgYW5kIHJlbW92ZWRGcm9tRG9jdW1lbnQg
dXNlIHdlYWsgaXRlcmF0aW9uIHBhdHRlcm5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2YxY2Q0Y2JiMTQ2MzZk
MzA1ODFhODFiNGMwODdiM2RlYTE0MmJlNS4uZTY4OGI3Mjg4MjdkMmI3YTNhM2ZjODU5OGM4ZWFm
MjIzZmUwMmQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAzLTA4ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gV29ya1F1
ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZvcm0vQ29y
ZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rp
b246Om9wZW4pOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogUGxhdGZvcm0vUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBQbGF0
Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6CisgICAgICAgIChXb3JrSXRl
bUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpXb3JrSXRlbUVmbCk6Cisg
ICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0ZW1FZmwpOgorICAgICAgICAo
V29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAgICAgIChXb3JrUXVldWU6Oldv
cmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChGZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29y
a0l0ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6ZmQp
OgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OlRpbWVyV29y
a0l0ZW06OlRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVt
Ojp+VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OlRpbWVyV29ya0l0ZW06OnRp
bWVySUQpOgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGVyZm9ybVdv
cmspOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3JrKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZCk6CisgICAgICAgIChXb3JrUXVldWU6OndvcmtRdWV1
ZVRocmVhZCk6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtlVXApOgorICAgICAgICAoV29y
a1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXb3JrUXVldWU6OnRpbWVyRmlyZWQpOgorICAg
ICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkpOgorICAgICAgICAoV29ya1F1ZXVl
OjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoT25UZXJtaW5hdGlv
bik6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKwogMjAxMi0wMy0w
NyAgRGludSBKYWNvYiAgPGRpbnUuamFjb2JAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gQXV0
aGVudGljYXRpb24gZGlhbG9nIGRvZXMgbm90IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1J1bkxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3Au
aAppbmRleCBmMDhhMDQyMjQ1YTgzZmM3ZjE5ZDAwNzdkY2EyZWE4MTYxNjlmMTZiLi5jZWQ3OGFi
YzI4NmMwYzhhYmUwNGUyYzJiYjdlZjhmNzFhZTU5NDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVu
TG9vcC5oCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIu
aD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPEVjb3JlLmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSdW5Mb29wIHsKQEAgLTk1LDYgKzk5
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBjbGVhclRpbWVyU291cmNlKCk7CiAgICAgICAg
IEdSZWZQdHI8R1NvdXJjZT4gbV90aW1lclNvdXJjZTsKICAgICAgICAgZ2Jvb2xlYW4gbV9pc1Jl
cGVhdGluZzsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKiBkYXRhKTsKKyAgICAgICAgT3duUHRyPEVjb3JlX1RpbWVyPiBtX3RpbWVyOwor
ICAgICAgICBib29sIG1faXNSZXBlYXRpbmc7CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNTcsNiAr
MTY1LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1f
cnVuTG9vcENvbnRleHQ7CiAgICAgVmVjdG9yPEdSZWZQdHI8R01haW5Mb29wPiA+IG1fcnVuTG9v
cE1haW5Mb29wczsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBib29sIG1faW5pdEVmbDsKKyAg
ICBPd25QdHI8RWNvcmVfUGlwZT4gbV9waXBlOworICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50
KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKaW5kZXggZTgyMDc4
OGQ2YWJiMDkzODJlOWUxOGNjZWVkZTY3NTMxMTExNzU2My4uMmMxZjIwZWYzYmFiNjVhZDJjZGRk
MzRjM2ZlNGYwOGQzNWJmNzVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1J1bkxvb3BFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5M
b29wRWZsLmNwcApAQCAtMSw0OCArMSwxNDQgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLworICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9F
dmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworc3RhdGlj
IGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hhciog
Y29uc3Qgd2FrdXBFY29yZVBpcGVNZXNzYWdlID0gIlciOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFJ1bkxvb3A6OlJ1bkxvb3AoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9p
bml0RWZsID0gZmFsc2U7CisKKyAgICBpZiAoIWVjb3JlX2luaXQoKSkgeworICAgICAgICBMT0df
RVJST1IoImNvdWxkIG5vdCBpbml0IGVjb3JlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmU7
CisgICAgfQorCisgICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkgeworICAgICAgICBMT0dfRVJS
T1IoImNvdWxkIG5vdCBpbml0IGVjb3JlX2V2YXMuIik7CisgICAgICAgIGdvdG8gZXJyb3JFY29y
ZUV2YXM7CisgICAgfQorCisgICAgaWYgKCFlY29yZV9maWxlX2luaXQoKSkgeworICAgICAgICBM
T0dfRVJST1IoImNvdWxkIG5vdCBpbml0IGVjb3JlX2ZpbGUuIik7CisgICAgICAgIGdvdG8gZXJy
b3JFY29yZUZpbGU7CisgICAgfQorCisgICAgaWYgKCFlZGplX2luaXQoKSkgeworICAgICAgICBM
T0dfRVJST1IoImNvdWxkIG5vdCBpbml0IGVkamUuIik7CisgICAgICAgIGdvdG8gZXJyb3JFZGpl
OworICAgIH0KKworICAgIG1fcGlwZSA9IGFkb3B0UHRyKGVjb3JlX3BpcGVfYWRkKHdha2VVcEV2
ZW50LCB0aGlzKSk7CisgICAgbV9pbml0RWZsID0gdHJ1ZTsKKworICAgIHJldHVybjsKKworZXJy
b3JFZGplOgorICAgIGVjb3JlX2ZpbGVfc2h1dGRvd24oKTsKK2Vycm9yRWNvcmVGaWxlOgorICAg
IGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKK2Vycm9yRWNvcmVFdmFzOgorICAgIGVjb3JlX3NodXRk
b3duKCk7CitlcnJvckVjb3JlOgorICAgIHJldHVybjsKIH0KIAogUnVuTG9vcDo6flJ1bkxvb3Ao
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1faW5pdEVmbCkgeworICAgICAg
ICBlZGplX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX2ZpbGVfc2h1dGRvd24oKTsKKyAgICAg
ICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgICAgICBlY29yZV9zaHV0ZG93bigpOworICAg
IH0KK30KKwordm9pZCBSdW5Mb29wOjpydW4oKQoreworICAgIGVjb3JlX21haW5fbG9vcF9iZWdp
bigpOworfQorCit2b2lkIFJ1bkxvb3A6OnN0b3AoKQoreworICAgIGVjb3JlX21haW5fbG9vcF9x
dWl0KCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCog
YnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxSdW5Mb29wKj4oZGF0
YSktPnBlcmZvcm1Xb3JrKCk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGVjb3JlX3BpcGVfd3JpdGUobV9waXBlLmdldCgpLCB3YWt1
cEVjb3JlUGlwZU1lc3NhZ2UsIGVjb3JlUGlwZU1lc3NhZ2VTaXplKTsKK30KKworUnVuTG9vcDo6
VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCogcnVuTG9vcCkKKyAgICA6IG1faXNSZXBlYXRp
bmcoZmFsc2UpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCit7Cisg
ICAgc3RvcCgpOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCh2b2lk
KiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxS
dW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKworICAgIHRpbWVyLT5maXJlZCgpOworCisgICAg
aWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICB0aW1lci0+bV90aW1lciA9IG51
bGxwdHI7CisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7CisgICAgfQorCisg
ICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQoZG91YmxlIGZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7CisgICAgbV9p
c1JlcGVhdGluZyA9IHJlcGVhdDsKKyAgICBtX3RpbWVyID0gYWRvcHRQdHIoZWNvcmVfdGltZXJf
YWRkKGZpcmVJbnRlcnZhbCwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9UYXNrX0NiPih0aW1lckZp
cmVkKSwgdGhpcykpOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7Cisg
ICAgbV90aW1lciA9IG51bGxwdHI7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0Fj
dGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxzZTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4MTU1M2FlYjc2YmYwNGRhNzhiNzlkNzMwZDYyMzhlY2Jl
NGEzNWYwLi45OWNkOTUyNjIzZTY1YzdkYmE2Njk3YzA4YjZkN2JhYzdmMjI3NmM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDYsNyArNDYs
NyBAQAogY2xhc3MgUVNvY2tldE5vdGlmaWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjZW5k
aWYKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKIAogI2lmIE9TKERBUldJTikKICAgICB2
b2lkIHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKLSNlbGlmIFBM
QVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKICAgICB2b2lk
IHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggZDU0
YWZmODgyYjVkNzUzMjkyMWUwMDg0ODEzOWZhOTJkZmNjOTkyMC4uMzRhYjMwOTBjNTM1MTRjNzAy
ZGNjNTI1ZTY3OGQ0M2ZmNGJhMDhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC00MjMsNiArNDIzLDgg
QEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBtX2Nv
bm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0
b3IsIChHX0lPX0hVUCB8IEdfSU9fRVJSKSwgYmluZCgmQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRp
ZENsb3NlLCB0aGlzKSk7CiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJj
ZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBHX0lPX0lOLCBiaW5kKCZDb25uZWN0aW9uOjpy
ZWFkeVJlYWRIYW5kbGVyLCB0aGlzKSk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgbV9jb25u
ZWN0aW9uUXVldWUucmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIGJp
bmQoJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIsIHRoaXMpKTsKICNlbmRpZgogCiAgICAg
Ly8gU2NoZWR1bGUgYSBjYWxsIHRvIHJlYWR5UmVhZEhhbmRsZXIuIERhdGEgbWF5IGhhdmUgYXJy
aXZlZCBiZWZvcmUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzaWduYWwKQEAgLTU1Miw3ICs1NTQsNyBA
QCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoTWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgUGFzc093blB0cjxBcmd1bWVudEVuYwogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgUExB
VEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKIHZvaWQgQ29ubmVj
dGlvbjo6c2V0U2hvdWxkQ2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24oV2ViS2l0
OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3MpCiB7CiAgICAgbV9jb25uZWN0aW9u
UXVldWUuZGlzcGF0Y2hPblRlcm1pbmF0aW9uKHByb2Nlc3MsIGJpbmQoJkNvbm5lY3Rpb246OmNv
bm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCmluZGV4IDUwMjJkYTc5MmMzODllM2FkMDZm
NTk3ODU3ZTgxMjk4NTBhMzBlYTUuLjljYWZkMzI5NGM2MzJiYzZhNThkZWFlYmY1NDQ1MDk1MjJl
ZjFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgdHlwZWRlZiB2b2lkKiBHUGlkOwogdHlw
ZWRlZiBpbnQgR1BpZDsKICNlbmRpZgogdHlwZWRlZiBHUGlkIFBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXI7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVmIHBpZF90IFBsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXI7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0IApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Xb3JrUXVldWUuaAppbmRleCBlZDg5NGNiZDM0NzllMDVhNDUzMjZjNzgzYjZlM2Mx
ZjM3ZDE5ZWRiLi5iZThhYzEwNmRjZWFiOWI1NDk3ZjQxNjM4YTIwMDZmMzMzOWY5OGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApAQCAtNDEsMTUgKzQxLDE5IEBACiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIChQTEFU
Rk9STShRVCkgJiYgIU9TKERBUldJTikpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KQorI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oUVQpICYmICFPUyhEQVJXSU4pCiAjaW5jbHVkZSA8UVNvY2tldE5vdGlmaWVyPgot
I2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKIGNsYXNzIFFPYmplY3Q7CiBj
bGFzcyBRVGhyZWFkOwogI2VsaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgIlBsYXRmb3JtUHJv
Y2Vzc0lkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiB0eXBl
ZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMpIChncG9pbnRlciBkYXRhKTsKKyNlbGlmIFBMQVRG
T1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgogI2VuZGlmCiAKIGNsYXNzIFdvcmtRdWV1ZSB7
CkBAIC05MCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRXZlbnRTb3VyY2VI
YW5kbGVyKGludCwgaW50LCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCk7CiAgICAgdm9pZCBkaXNwYXRjaE9uVGVybWlu
YXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBjb25zdCBGdW5jdGlvbjx2
b2lkKCk+Jik7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgdm9pZCByZWdpc3RlckZkRXZlbnRI
YW5kbGVyKGludCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgZGlzcGF0Y2hP
blRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzcsNiArMTg0LDM0IEBA
IHByaXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3Rv
cjxFdmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGlu
dCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsg
CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY2xhc3MgVGltZXJXb3JrSXRlbTsKKworICAgIGZk
X3NldCBtX2ZkU2V0OworICAgIGludCBtX21heEZkOworICAgIGludCBtX3JlYWRGcm9tUGlwZUZk
OworICAgIGludCBtX3dyaXRlVG9QaXBlRmQ7CisgICAgYm9vbCBtX3RocmVhZExvb3A7CisKKyAg
ICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiA+IG1fd29ya0l0ZW1RdWV1ZTsKKyAgICBNdXRleCBt
X3dvcmtJdGVtUXVldWVMb2NrOworCisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgRnVuY3Rpb248
dm9pZCgpPiA+IEZkV29ya01hcDsKKyAgICBGZFdvcmtNYXAgbV9mZFdvcmtJdGVtczsKKyAgICBN
dXRleCBtX2ZkV29ya0l0ZW1zTG9jazsKKworICAgIFZlY3RvcjxFY29yZV9UaW1lcio+IG1fdGlt
ZXJzOworCisgICAgRWNvcmVfRXZlbnRfSGFuZGxlciogbV9wcm9jZXNzRXhpdEhhbmRsZXI7Cisg
ICAgc3RhdGljIEhhc2hNYXA8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKCk+ID4gbV90ZXJtV29ya0l0ZW1zOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRv
VGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdv
cmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3JrQW5kV2FrZVVwKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoKT4mKTsKKyAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CisgICAgdm9pZCBwZXJmb3JtRmRX
b3JrKCk7CisgICAgc3RhdGljIGJvb2wgdGltZXJGaXJlZCh2b2lkKik7CisgICAgc3RhdGljIGJv
b2wgcHJvY2Vzc0V4aXRDYWxsQmFjayh2b2lkKiwgaW50LCB2b2lkKik7CiAjZW5kaWYKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3Bw
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmE0MDAxNzM0MDRkMjdkZjU1YTk3NDRjMTdkM2FhM2MyODRiNDYyYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC0w
LDAgKzEsMjA5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK2NsYXNzIFdvcmtRdWV1ZTo6VGltZXJXb3Jr
SXRlbSB7CitwdWJsaWM6CisgICAgVGltZXJXb3JrSXRlbShpbnQgdGltZXJJRCwgY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgICAgIDogbV9m
dW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX3F1ZXVlKHF1ZXVlKQorICAgICAgICAsIG1f
dGltZXJJRCh0aW1lcklEKQorICAgIHsKKyAgICB9CisgICAgflRpbWVyV29ya0l0ZW0oKSB7IH0K
KworICAgIHZvaWQgZXhlY3V0ZSgpCisgICAgeworICAgICAgICBpZiAobV9xdWV1ZS0+bV9pc1Zh
bGlkKQorICAgICAgICAgICAgbV9mdW5jdGlvbigpOworICAgIH0KKworICAgIEZ1bmN0aW9uPHZv
aWQoKT4gZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1
ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKworICAgIGludCB0aW1lcklE
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklEOyB9CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb248
dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIFdvcmtRdWV1ZSogbV9xdWV1ZTsKKyAgICBpbnQgbV90
aW1lcklEOworfTsKKworc3RhdGljIGNvbnN0IGludCB0aHJlYWRNZXNzYWdlU2l6ZSA9IDE7CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBmaW5pc2hUaHJlYWRNZXNzYWdlID0gIkYiOworc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IHdha3VwVGhyZWFkTWVzc2FnZSA9ICJXIjsKKworLy8gV29y
a1F1ZXVlCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5h
bWUpCit7CisgICAgaW50IGZkc1syXTsKKyAgICBpZiAocGlwZShmZHMpKQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX3JlYWRGcm9tUGlwZUZkID0gZmRzWzBdOworICAgIG1f
d3JpdGVUb1BpcGVGZCA9IGZkc1sxXTsKKyAgICBGRF9aRVJPKCZtX2ZkU2V0KTsKKyAgICBGRF9T
RVQobV9yZWFkRnJvbVBpcGVGZCwgJm1fZmRTZXQpOworICAgIG1fbWF4RmQgPSBtX3JlYWRGcm9t
UGlwZUZkOworCisgICAgbV9wcm9jZXNzRXhpdEhhbmRsZXIgPSBlY29yZV9ldmVudF9oYW5kbGVy
X2FkZChFQ09SRV9FWEVfRVZFTlRfREVMLCByZWludGVycHJldF9jYXN0PEVjb3JlX0V2ZW50X0hh
bmRsZXJfQ2I+KHByb2Nlc3NFeGl0Q2FsbEJhY2spLCB0aGlzKTsKKworICAgIG1fdGhyZWFkTG9v
cCA9IHRydWU7CisgICAgY3JlYXRlVGhyZWFkKHJlaW50ZXJwcmV0X2Nhc3Q8V1RGOjpUaHJlYWRG
dW5jdGlvbj4oJldvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKSwgdGhpcywgbmFtZSk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQoreworICAgIGlmIChtX3Byb2Nl
c3NFeGl0SGFuZGxlcikKKyAgICAgICAgZWNvcmVfZXZlbnRfaGFuZGxlcl9kZWwobV9wcm9jZXNz
RXhpdEhhbmRsZXIpOworICAgIG1fcHJvY2Vzc0V4aXRIYW5kbGVyID0gMDsKKworICAgIHNlbmRN
ZXNzYWdlVG9UaHJlYWQoZmluaXNoVGhyZWFkTWVzc2FnZSk7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fdGltZXJzLnNpemUoKTsgKytpKQorICAgICAgICBlY29yZV90aW1lcl9kZWwo
bV90aW1lcnNbaV0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmsoKQoreworICAg
IG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworCisgICAgd2hpbGUgKCFtX3dvcmtJdGVtUXVl
dWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gd29ya0l0
ZW1RdWV1ZTsKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlLnN3YXAod29ya0l0ZW1RdWV1ZSk7CisK
KyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3b3JrSXRlbVF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgd29y
a0l0ZW1RdWV1ZVtpXSgpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOwor
ICAgIH0KKworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgV29y
a1F1ZXVlOjpwZXJmb3JtRmRXb3JrKCkKK3sKKyAgICBmZF9zZXQgcmVhZEZkU2V0ID0gbV9mZFNl
dDsKKworICAgIGlmIChzZWxlY3QobV9tYXhGZCArIDEsICZyZWFkRmRTZXQsIDAsIDAsIDApID49
IDApIHsKKyAgICAgICAgaWYgKEZEX0lTU0VUKG1fcmVhZEZyb21QaXBlRmQsICZyZWFkRmRTZXQp
KSB7CisgICAgICAgICAgICBjaGFyIHJlYWRCdWZbdGhyZWFkTWVzc2FnZVNpemVdOworICAgICAg
ICAgICAgaWYgKHJlYWQobV9yZWFkRnJvbVBpcGVGZCwgcmVhZEJ1ZiwgdGhyZWFkTWVzc2FnZVNp
emUpID09IC0xKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJlYWQgZnJv
bSBXb3JrUXVldWVUaHJlYWQgcGlwZSIpOworICAgICAgICAgICAgaWYgKCFzdHJuY21wKHJlYWRC
dWYsIGZpbmlzaFRocmVhZE1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VTaXplKSkKKyAgICAgICAgICAg
ICAgICBtX3RocmVhZExvb3AgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIE11dGV4TG9j
a2VyIGxvY2sobV9mZFdvcmtJdGVtc0xvY2spOworICAgICAgICBGZFdvcmtNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1fZmRXb3JrSXRlbXMuZW5kKCk7CisgICAgICAgIGZvciAoRmRXb3JrTWFwOjppdGVy
YXRvciBpdGVyID0gbV9mZFdvcmtJdGVtcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CisgICAgICAgICAgICBpZiAoRkRfSVNTRVQoaXRlci0+Zmlyc3QsICZyZWFkRmRTZXQpKQorICAg
ICAgICAgICAgICAgICBpdGVyLT5zZWNvbmQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBXb3JrUXVldWU6OnNlbmRNZXNzYWdlVG9UaHJlYWQoY29uc3QgY2hhciogbWVzc2FnZSkKK3sK
KyAgICBpZiAod3JpdGUobV93cml0ZVRvUGlwZUZkLCBtZXNzYWdlLCB0aHJlYWRNZXNzYWdlU2l6
ZSkgPT0gLTEpCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHdha2UgdXAgV29ya1F1ZXVl
IFRocmVhZCIpOworfQorCit2b2lkKiBXb3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZChXb3JrUXVl
dWUqIHdvcmtRdWV1ZSkKK3sKKyAgICB3aGlsZSAod29ya1F1ZXVlLT5tX3RocmVhZExvb3ApIHsK
KyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtV29yaygpOworICAgICAgICB3b3JrUXVldWUtPnBl
cmZvcm1GZFdvcmsoKTsKKyAgICB9CisKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fcmVhZEZyb21Q
aXBlRmQpOworICAgIGNsb3NlKHdvcmtRdWV1ZS0+bV93cml0ZVRvUGlwZUZkKTsKKworICAgIHJl
dHVybiAwOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihpbnQg
ZmQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIE11dGV4TG9ja2Vy
IGxvY2sobV9mZFdvcmtJdGVtc0xvY2spOworICAgIGlmIChtX2ZkV29ya0l0ZW1zLmNvbnRhaW5z
KGZkKSkKKyAgICAgICAgTE9HX0VSUk9SKCIlZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iLCBmZCk7
CisKKyAgICBtX2ZkV29ya0l0ZW1zLnNldChmZCwgZnVuY3Rpb24pOworCisgICAgaWYgKGZkID4g
bV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOworICAgIEZEX1NFVChmZCwgJm1fZmRTZXQp
OworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGNvbnN0IEZ1bmN0
aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJ
dGVtUXVldWVMb2NrKTsKKyAgICBtX3dvcmtJdGVtUXVldWUuYXBwZW5kKGZ1bmN0aW9uKTsKKyAg
ICBzZW5kTWVzc2FnZVRvVGhyZWFkKHdha3VwVGhyZWFkTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKK3sKKyAg
ICBzY2hlZHVsZVdvcmtBbmRXYWtlVXAoZnVuY3Rpb24pOworfQorCitib29sIFdvcmtRdWV1ZTo6
dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFRpbWVyV29ya0l0ZW0qIGl0ZW0gPSBzdGF0
aWNfY2FzdDxUaW1lcldvcmtJdGVtKj4oZGF0YSk7CisgICAgaWYgKGl0ZW0tPnF1ZXVlKCktPm1f
aXNWYWxpZCkgeworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5zY2hlZHVsZVdvcmtBbmRXYWtlVXAo
aXRlbS0+ZnVuY3Rpb24oKSk7CisgICAgICAgIGl0ZW0tPnF1ZXVlKCktPm1fdGltZXJzLnJlbW92
ZShpdGVtLT50aW1lcklEKCkpOworICAgIH0KKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19D
QU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkoY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxheSkKK3sKKyAgICBzaXplX3QgdGlt
ZXJJZCA9IG1fdGltZXJzLnNpemUoKTsgLy8gZ2V0IG5leHQgdGltZXJJZAorICAgIG1fdGltZXJz
W3RpbWVySWRdID0gZWNvcmVfdGltZXJfYWRkKGRlbGF5LCByZWludGVycHJldF9jYXN0PEVjb3Jl
X1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCBuZXcgVGltZXJXb3JrSXRlbSh0aW1lcklkLCBmdW5jdGlv
biwgdGhpcykpOworfQorCitIYXNoTWFwPFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZCgpPiA+IFdvcmtRdWV1ZTo6bV90ZXJtV29ya0l0ZW1zOworCitib29s
IFdvcmtRdWV1ZTo6cHJvY2Vzc0V4aXRDYWxsQmFjayh2b2lkKiBkYXRhLCBpbnQgdHlwZSwgdm9p
ZCogZXZlbnQpCit7CisgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V29y
a1F1ZXVlKj4oZGF0YSk7CisgICAgaWYgKHF1ZXVlLT5tX2lzVmFsaWQpIHsKKyAgICAgICAgRWNv
cmVfRXhlX0V2ZW50X0RlbCogZXYgPSBzdGF0aWNfY2FzdDxFY29yZV9FeGVfRXZlbnRfRGVsKj4o
ZXZlbnQpOworICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgZGVhZENo
aWxkUGlkID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyPihl
di0+cGlkKTsKKworICAgICAgICBBU1NFUlRfQVJHKGRlYWRDaGlsZFBpZCwgbV90ZXJtV29ya0l0
ZW1zLmNvbnRhaW5zKGRlYWRDaGlsZFBpZCkpOworICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1
bmN0aW9uID0gbV90ZXJtV29ya0l0ZW1zLnRha2UoZGVhZENoaWxkUGlkKTsKKyAgICAgICAgcXVl
dWUtPnNjaGVkdWxlV29ya0FuZFdha2VVcChmdW5jdGlvbik7CisgICAgfQorCisgICAgcmV0dXJu
IEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoT25U
ZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2VzcywgY29u
c3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgQVNTRVJUX0FSRyhwcm9jZXNz
LCAhbV90ZXJtV29ya0l0ZW1zLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICBtX3Rlcm1Xb3JrSXRl
bXMuc2V0KHByb2Nlc3MsIGZ1bmN0aW9uKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggZDhhNzk3YTZjYjYyNDk2YzZkMzc5M2ZhM2JjNTliYmI5MTE5ZDc4OS4uOWExZjA5YjRiNmY0
OWFkNzI3ODc0ZGY1MTE1NTI2MjM5ODcwMjI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTcsNyArNyw2IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfTElOS19GTEFHUwogCiBMSVNUKEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBQbGF0Zm9ybS9lZmwvTW9kdWxlRWZsLmNwcAotICAg
IFBsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAogICAgIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVF
ZmwuY3BwCiAgICAgUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggODQyODBhNzNkOTllNjNmMGJjYmZmYjE1OWJjNzFmMGY4ZTIzZTg3OS4uNzIyNTVm
MjU3OTQzZGQ3YzJkZGRjZWE0OWI0NDgzYjA3YWIyZjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDUs
NyArNDUsNyBAQCBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcywgQwogewogI2lmIE9TKERBUldJTikKICAg
ICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMo
KTsKLSNlbGlmIFBMQVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVG
TCkKICAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rl
cm1pbmF0aW9uKHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130792</attachid>
            <date>2012-03-08 01:06:46 -0800</date>
            <delta_ts>2012-03-15 21:53:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120308180645.patch</filename>
            <type>text/plain</type>
            <size>22308</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA2YWVkOTU0ZWQwNWI2
MGIwYTM0MWVhNTIxMzc0YjkwZDQxNmYxMC4uNDVjYzQ4YmJlY2Y4NDczYjkyZDllYmNlNzZiMWU1
YTI5YTJkYTNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTA4ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTA3ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZWZhY3RvcmluZzogUmVtb3ZlIE5vZGU6OmlzQ29udGVudEVsZW1lbnQgYW5kIE5vZGU6
OmlzU2hhZG93RWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzZjFjZDRjYmIxNDYzNmQzMDU4MWE4MWI0
YzA4N2IzZGVhMTQyYmU1Li5lNjg4YjcyODgyN2QyYjdhM2EzZmM4NTk4YzhlYWYyMjNmZTAyZDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTItMDMtMDggIFlvdW5nVGFlY2sgU29u
ZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSdW5Mb29wRWZsIGFuZCBXb3JrUXVldWVFZmwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWwgdmVyc2lvbiBXb3JrUXVldWVFZmwgZm9y
IFdlYktpdDIgRWZsLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6
CisgICAgICAgIChDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6b3Blbik6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBQbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFBsYXRmb3JtL1dvcmtR
dWV1ZS5oOgorICAgICAgICAoV29ya1F1ZXVlKToKKyAgICAgICAgKFdvcmtJdGVtRWZsKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OldvcmtJdGVtRWZsKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6V29ya0l0ZW1FZmw6On5Xb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6
OldvcmtJdGVtRWZsOjpleGVjdXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6
OnF1ZXVlKToKKyAgICAgICAgKEZkV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdv
cmtJdGVtOjpGZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6fkZk
V29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjpmZCk6CisgICAgICAg
IChUaW1lcldvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6VGlt
ZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OlRpbWVyV29ya0l0ZW06On5UaW1lcldv
cmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6dGltZXJJRCk6Cisg
ICAgICAgICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtV29yayk6CisgICAg
ICAgIChXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpzZW5k
TWVzc2FnZVRvVGhyZWFkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToK
KyAgICAgICAgKFdvcmtRdWV1ZTo6cmVnaXN0ZXJGZEV2ZW50SGFuZGxlcik6CisgICAgICAgIChX
b3JrUXVldWU6OnNjaGVkdWxlV29ya0FuZFdha2VVcCk6CisgICAgICAgIChXb3JrUXVldWU6OmRp
c3BhdGNoKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6dGltZXJGaXJlZCk6CisgICAgICAgIChXb3Jr
UXVldWU6OmRpc3BhdGNoQWZ0ZXJEZWxheSk6CisgICAgICAgIChXb3JrUXVldWU6OmV4aXRIYW5k
bGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hPblRlcm1pbmF0aW9uKToKKyAgICAg
ICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorCiAyMDEyLTAzLTA3ICBEaW51IEph
Y29iICA8ZGludS5qYWNvYkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBBdXRoZW50aWNhdGlv
biBkaWFsb2cgZG9lcyBub3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVuTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oCmluZGV4IGYw
OGEwNDIyNDVhODNmYzdmMTlkMDA3N2RjYTJlYTgxNjE2OWYxNmIuLmNlZDc4YWJjMjg2YzBjOGFi
ZTA0ZTJjMmJiN2VmOGY3MWFlNTk0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKQEAg
LTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJ1bkxvb3AgewpAQCAtOTUsNiArOTksMTAgQEAgcHVi
bGljOgogICAgICAgICB2b2lkIGNsZWFyVGltZXJTb3VyY2UoKTsKICAgICAgICAgR1JlZlB0cjxH
U291cmNlPiBtX3RpbWVyU291cmNlOwogICAgICAgICBnYm9vbGVhbiBtX2lzUmVwZWF0aW5nOwor
I2VsaWYgUExBVEZPUk0oRUZMKQorICAgICAgICBzdGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQq
IGRhdGEpOworICAgICAgICBPd25QdHI8RWNvcmVfVGltZXI+IG1fdGltZXI7CisgICAgICAgIGJv
b2wgbV9pc1JlcGVhdGluZzsKICNlbmRpZgogICAgIH07CiAKQEAgLTE1Nyw2ICsxNjUsMTAgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBHUmVmUHRyPEdNYWluQ29udGV4dD4gbV9ydW5Mb29wQ29u
dGV4dDsKICAgICBWZWN0b3I8R1JlZlB0cjxHTWFpbkxvb3A+ID4gbV9ydW5Mb29wTWFpbkxvb3Bz
OworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGJvb2wgbV9pbml0RWZsOworICAgIE93blB0cjxF
Y29yZV9QaXBlPiBtX3BpcGU7CisgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0
YSwgdm9pZCogYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAppbmRleCBlODIwNzg4ZDZhYmIwOTM4
MmU5ZTE4Y2NlZWRlNjc1MzExMTE3NTYzLi4yYzFmMjBlZjNiYWI2NWFkMmNkZGQzNGMzZmU0ZjA4
ZDM1YmY3NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9v
cEVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3Bw
CkBAIC0xLDQ4ICsxLDE0NCBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBQcm9GVVNJT04g
ZW1iZWRkZWQgc3lzdGVtcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
CisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUnVuTG9vcC5oIgogCi0jaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KKyNp
bmNsdWRlIDxFY29yZV9GaWxlLmg+CisjaW5jbHVkZSA8RWRqZS5oPgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitzdGF0aWMgY29uc3QgaW50
IGVjb3JlUGlwZU1lc3NhZ2VTaXplID0gMTsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3YWt1
cEVjb3JlUGlwZU1lc3NhZ2UgPSAiVyI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUnVuTG9v
cDo6UnVuTG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2luaXRFZmwgPSBm
YWxzZTsKKworICAgIGlmICghZWNvcmVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291
bGQgbm90IGluaXQgZWNvcmUuIik7CisgICAgICAgIGdvdG8gZXJyb3JFY29yZTsKKyAgICB9CisK
KyAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291bGQg
bm90IGluaXQgZWNvcmVfZXZhcy4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlRXZhczsKKyAg
ICB9CisKKyAgICBpZiAoIWVjb3JlX2ZpbGVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigi
Y291bGQgbm90IGluaXQgZWNvcmVfZmlsZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlRmls
ZTsKKyAgICB9CisKKyAgICBpZiAoIWVkamVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigi
Y291bGQgbm90IGluaXQgZWRqZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVkamU7CisgICAgfQor
CisgICAgbV9waXBlID0gYWRvcHRQdHIoZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQsIHRoaXMp
KTsKKyAgICBtX2luaXRFZmwgPSB0cnVlOworCisgICAgcmV0dXJuOworCitlcnJvckVkamU6Cisg
ICAgZWNvcmVfZmlsZV9zaHV0ZG93bigpOworZXJyb3JFY29yZUZpbGU6CisgICAgZWNvcmVfZXZh
c19zaHV0ZG93bigpOworZXJyb3JFY29yZUV2YXM6CisgICAgZWNvcmVfc2h1dGRvd24oKTsKK2Vy
cm9yRWNvcmU6CisgICAgcmV0dXJuOwogfQogCiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9pbml0RWZsKSB7CisgICAgICAgIGVkamVfc2h1
dGRvd24oKTsKKyAgICAgICAgZWNvcmVfZmlsZV9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgfQorfQorCit2
b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisK
K3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30K
Kwordm9pZCBSdW5Mb29wOjp3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2ln
bmVkIGludCBzaXplKQoreworICAgIHN0YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9y
bVdvcmsoKTsKIH0KIAogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgZWNvcmVfcGlwZV93cml0ZShtX3BpcGUuZ2V0KCksIHdha3VwRWNvcmVQaXBl
TWVzc2FnZSwgZWNvcmVQaXBlTWVzc2FnZVNpemUpOworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6
OlRpbWVyQmFzZShSdW5Mb29wKiBydW5Mb29wKQorICAgIDogbV9pc1JlcGVhdGluZyhmYWxzZSkK
K3sKK30KKworUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7
Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7
CisgICAgUnVuTG9vcDo6VGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3A6OlRp
bWVyQmFzZSo+KGRhdGEpOworCisgICAgdGltZXItPmZpcmVkKCk7CisKKyAgICBpZiAoIXRpbWVy
LT5tX2lzUmVwZWF0aW5nKSB7CisgICAgICAgIHRpbWVyLT5tX3RpbWVyID0gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKKyAgICB9CisKKyAgICByZXR1cm4g
RUNPUkVfQ0FMTEJBQ0tfUkVORVc7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFy
dChkb3VibGUgZmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBtX2lzUmVwZWF0aW5n
ID0gcmVwZWF0OworICAgIG1fdGltZXIgPSBhZG9wdFB0cihlY29yZV90aW1lcl9hZGQoZmlyZUlu
dGVydmFsLCByZWludGVycHJldF9jYXN0PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCB0aGlz
KSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBtX3RpbWVy
ID0gbnVsbHB0cjsKK30KKworYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKG1fdGltZXIpID8gdHJ1ZSA6IGZhbHNlOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oCmluZGV4IDgxNTUzYWViNzZiZjA0ZGE3OGI3OWQ3MzBkNjIzOGVjYmU0YTM1ZjAuLjk5
Y2Q5NTI2MjNlNjVjN2RiYTY2OTdjMDhiNmQ3YmFjN2YyMjc2YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBACiBjbGFz
cyBRU29ja2V0Tm90aWZpZXI7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShHVEspCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KQogI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNlbmRpZgogCkBAIC0x
MjYsNyArMTI2LDcgQEAgcHVibGljOgogCiAjaWYgT1MoREFSV0lOKQogICAgIHZvaWQgc2V0U2hv
dWxkQ2xvc2VDb25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygpOwotI2VsaWYgUExBVEZPUk0oUVQp
CisjZWxpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgc2V0U2hvdWxk
Q2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBkNTRhZmY4ODJiNWQ3
NTMyOTIxZTAwODQ4MTM5ZmE5MmRmY2M5OTIwLi4zNGFiMzA5MGM1MzUxNGM3MDJkY2M1MjVlNjc4
ZDQzZmY0YmEwOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTQyMyw2ICs0MjMsOCBAQCBib29sIENv
bm5lY3Rpb246Om9wZW4oKQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIG1fY29ubmVjdGlvblF1
ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgKEdfSU9f
SFVQIHwgR19JT19FUlIpLCBiaW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UsIHRo
aXMpKTsKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlciht
X3NvY2tldERlc2NyaXB0b3IsIEdfSU9fSU4sIGJpbmQoJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhh
bmRsZXIsIHRoaXMpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBtX2Nvbm5lY3Rpb25RdWV1
ZS5yZWdpc3RlckZkRXZlbnRIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgYmluZCgmQ29ubmVj
dGlvbjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOwogI2VuZGlmCiAKICAgICAvLyBTY2hlZHVs
ZSBhIGNhbGwgdG8gcmVhZHlSZWFkSGFuZGxlci4gRGF0YSBtYXkgaGF2ZSBhcnJpdmVkIGJlZm9y
ZSBpbnN0YWxsYXRpb24gb2YgdGhlIHNpZ25hbApAQCAtNTUyLDcgKzU1NCw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBQYXNzT3du
UHRyPEFyZ3VtZW50RW5jCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShRVCkK
KyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogdm9pZCBDb25uZWN0aW9uOjpzZXRT
aG91bGRDbG9zZUNvbm5lY3Rpb25PblByb2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2VzcykKIHsKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5kaXNw
YXRjaE9uVGVybWluYXRpb24ocHJvY2VzcywgYmluZCgmQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRp
ZENsb3NlLCB0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmgKaW5kZXggNTAyMmRhNzkyYzM4OWUzYWQwNmY1OTc4NTdlODEy
OTg1MGEzMGVhNS4uOWNhZmQzMjk0YzYzMmJjNmE1OGRlYWViZjU0NDUwOTUyMmVmMWMzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZp
ZXIuaApAQCAtNDYsNiArNDYsOCBAQCB0eXBlZGVmIHZvaWQqIEdQaWQ7CiB0eXBlZGVmIGludCBH
UGlkOwogI2VuZGlmCiB0eXBlZGVmIEdQaWQgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKKyNl
bGlmIFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgcGlkX3QgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
cjsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dv
cmtRdWV1ZS5oCmluZGV4IGVkODk0Y2JkMzQ3OWUwNWE0NTMyNmM3ODNiNmUzYzFmMzdkMTllZGIu
LmJlOGFjMTA2ZGNlYWI5YjU0OTdmNDE2MzhhMjAwNmYzMzM5Zjk4YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL1dvcmtRdWV1ZS5oCkBAIC00MSwxNSArNDEsMTkgQEAKICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgKFBMQVRGT1JNKFFUKSAm
JiAhT1MoREFSV0lOKSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaW5jbHVk
ZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShR
VCkgJiYgIU9TKERBUldJTikKICNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+Ci0jaW5jbHVkZSAi
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFUaHJl
YWQ7CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIHR5cGVkZWYgZ2Jvb2xl
YW4gKCpHU291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOworI2VsaWYgUExBVEZPUk0oRUZMKQor
I2luY2x1ZGUgPEVjb3JlLmg+CiAjZW5kaWYKIAogY2xhc3MgV29ya1F1ZXVlIHsKQEAgLTkwLDYg
Kzk0LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50
LCBpbnQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFdmVu
dFNvdXJjZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJL
aXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsK
KyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50
LCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CisgICAgdm9pZCBkaXNwYXRjaE9uVGVybWluYXRp
b24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBjb25zdCBGdW5jdGlvbjx2b2lk
KCk+Jik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTE3Nyw2ICsxODQsMzQgQEAgcHJpdmF0ZToK
ICAgICBjbGFzcyBFdmVudFNvdXJjZTsKICAgICBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50U291
cmNlKj4gPiBtX2V2ZW50U291cmNlczsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBWZWN0b3I8
RXZlbnRTb3VyY2UqPiA+OjppdGVyYXRvciBFdmVudFNvdXJjZUl0ZXJhdG9yOyAKKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyAgICBjbGFzcyBUaW1lcldvcmtJdGVtOworCisgICAgZmRfc2V0IG1fZmRT
ZXQ7CisgICAgaW50IG1fbWF4RmQ7CisgICAgaW50IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgaW50
IG1fd3JpdGVUb1BpcGVGZDsKKyAgICBib29sIG1fdGhyZWFkTG9vcDsKKworICAgIFZlY3RvcjxG
dW5jdGlvbjx2b2lkKCk+ID4gbV93b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1R
dWV1ZUxvY2s7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBGdW5jdGlvbjx2b2lkKCk+ID4g
RmRXb3JrTWFwOworICAgIEZkV29ya01hcCBtX2ZkV29ya0l0ZW1zOworICAgIE11dGV4IG1fZmRX
b3JrSXRlbXNMb2NrOworCisgICAgVmVjdG9yPEVjb3JlX1RpbWVyKj4gbV90aW1lcnM7CisKKyAg
ICBFY29yZV9FdmVudF9IYW5kbGVyKiBtX3Byb2Nlc3NFeGl0SGFuZGxlcjsKKyAgICBzdGF0aWMg
SGFzaE1hcDxXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQo
KT4gPiBtX3Rlcm1Xb3JrSXRlbXM7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UaHJlYWQoY29u
c3QgY2hhciopOworICAgIHN0YXRpYyB2b2lkKiB3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKik7
CisgICAgdm9pZCBzY2hlZHVsZVdvcmtBbmRXYWtlVXAoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYp
OworICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKKyAgICB2b2lkIHBlcmZvcm1GZFdvcmsoKTsKKyAg
ICBzdGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQqKTsKKyAgICBzdGF0aWMgYm9vbCBwcm9jZXNz
RXhpdENhbGxCYWNrKHZvaWQqLCBpbnQsIHZvaWQqKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDliNzk5
NGE3YjM2OTViOGQ5MTc3YTZmOTQ1OTMxY2Y5MWJkNWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKQEAgLTAsMCArMSwyMDQg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KKworY2xhc3MgV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtIHsKK3B1
YmxpYzoKKyAgICBUaW1lcldvcmtJdGVtKGludCB0aW1lcklELCBjb25zdCBGdW5jdGlvbjx2b2lk
KCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1
bmN0aW9uKQorICAgICAgICAsIG1fcXVldWUocXVldWUpCisgICAgICAgICwgbV90aW1lcklEKHRp
bWVySUQpCisgICAgeworICAgIH0KKyAgICB+VGltZXJXb3JrSXRlbSgpIHsgfQorCisgICAgRnVu
Y3Rpb248dm9pZCgpPiBmdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAg
ICBXb3JrUXVldWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorCisgICAgaW50
IHRpbWVySUQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVySUQ7IH0KKworcHJpdmF0ZToKKyAgICBG
dW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOworICAg
IGludCBtX3RpbWVySUQ7Cit9OworCitzdGF0aWMgY29uc3QgaW50IHRocmVhZE1lc3NhZ2VTaXpl
ID0gMTsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGZpbmlzaFRocmVhZE1lc3NhZ2UgPSAi
RiI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2FrdXBUaHJlYWRNZXNzYWdlID0gIlciOwor
CisvLyBXb3JrUXVldWUKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3Qg
Y2hhciogbmFtZSkKK3sKKyAgICBpbnQgZmRzWzJdOworICAgIGlmIChwaXBlKGZkcykpCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fcmVhZEZyb21QaXBlRmQgPSBmZHNbMF07
CisgICAgbV93cml0ZVRvUGlwZUZkID0gZmRzWzFdOworICAgIEZEX1pFUk8oJm1fZmRTZXQpOwor
ICAgIEZEX1NFVChtX3JlYWRGcm9tUGlwZUZkLCAmbV9mZFNldCk7CisgICAgbV9tYXhGZCA9IG1f
cmVhZEZyb21QaXBlRmQ7CisKKyAgICBtX3Byb2Nlc3NFeGl0SGFuZGxlciA9IGVjb3JlX2V2ZW50
X2hhbmRsZXJfYWRkKEVDT1JFX0VYRV9FVkVOVF9ERUwsIHJlaW50ZXJwcmV0X2Nhc3Q8RWNvcmVf
RXZlbnRfSGFuZGxlcl9DYj4ocHJvY2Vzc0V4aXRDYWxsQmFjayksIHRoaXMpOworCisgICAgbV90
aHJlYWRMb29wID0gdHJ1ZTsKKyAgICBjcmVhdGVUaHJlYWQocmVpbnRlcnByZXRfY2FzdDxXVEY6
OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBuYW1l
KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgaWYg
KG1fcHJvY2Vzc0V4aXRIYW5kbGVyKQorICAgICAgICBlY29yZV9ldmVudF9oYW5kbGVyX2RlbCht
X3Byb2Nlc3NFeGl0SGFuZGxlcik7CisgICAgbV9wcm9jZXNzRXhpdEhhbmRsZXIgPSAwOworCisg
ICAgc2VuZE1lc3NhZ2VUb1RocmVhZChmaW5pc2hUaHJlYWRNZXNzYWdlKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV90aW1lcnMuc2l6ZSgpOyArK2kpCisgICAgICAgIGVjb3JlX3Rp
bWVyX2RlbChtX3RpbWVyc1tpXSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtV29yaygp
Cit7CisgICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisKKyAgICB3aGlsZSAoIW1fd29y
a0l0ZW1RdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4g
PiB3b3JrSXRlbVF1ZXVlOworICAgICAgICBtX3dvcmtJdGVtUXVldWUuc3dhcCh3b3JrSXRlbVF1
ZXVlKTsKKworICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9jaygpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmtJdGVtUXVldWUuc2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICB3b3JrSXRlbVF1ZXVlW2ldKCk7CisKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay5s
b2NrKCk7CisgICAgfQorCisgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKK30KKwor
dm9pZCBXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmsoKQoreworICAgIGZkX3NldCByZWFkRmRTZXQg
PSBtX2ZkU2V0OworCisgICAgaWYgKHNlbGVjdChtX21heEZkICsgMSwgJnJlYWRGZFNldCwgMCwg
MCwgMCkgPj0gMCkgeworICAgICAgICBpZiAoRkRfSVNTRVQobV9yZWFkRnJvbVBpcGVGZCwgJnJl
YWRGZFNldCkpIHsKKyAgICAgICAgICAgIGNoYXIgcmVhZEJ1Zlt0aHJlYWRNZXNzYWdlU2l6ZV07
CisgICAgICAgICAgICBpZiAocmVhZChtX3JlYWRGcm9tUGlwZUZkLCByZWFkQnVmLCB0aHJlYWRN
ZXNzYWdlU2l6ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
cmVhZCBmcm9tIFdvcmtRdWV1ZVRocmVhZCBwaXBlIik7CisgICAgICAgICAgICBpZiAoIXN0cm5j
bXAocmVhZEJ1ZiwgZmluaXNoVGhyZWFkTWVzc2FnZSwgdGhyZWFkTWVzc2FnZVNpemUpKQorICAg
ICAgICAgICAgICAgIG1fdGhyZWFkTG9vcCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX2ZkV29ya0l0ZW1zTG9jayk7CisgICAgICAgIEZkV29ya01hcDo6
aXRlcmF0b3IgZW5kID0gbV9mZFdvcmtJdGVtcy5lbmQoKTsKKyAgICAgICAgZm9yIChGZFdvcmtN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2ZkV29ya0l0ZW1zLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpIHsKKyAgICAgICAgICAgIGlmIChGRF9JU1NFVChpdGVyLT5maXJzdCwgJnJlYWRGZFNl
dCkpCisgICAgICAgICAgICAgICAgIGl0ZXItPnNlY29uZCgpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBjaGFyKiBtZXNz
YWdlKQoreworICAgIGlmICh3cml0ZShtX3dyaXRlVG9QaXBlRmQsIG1lc3NhZ2UsIHRocmVhZE1l
c3NhZ2VTaXplKSA9PSAtMSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gd2FrZSB1cCBX
b3JrUXVldWUgVGhyZWFkIik7Cit9CisKK3ZvaWQqIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFk
KFdvcmtRdWV1ZSogd29ya1F1ZXVlKQoreworICAgIHdoaWxlICh3b3JrUXVldWUtPm1fdGhyZWFk
TG9vcCkgeworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtR
dWV1ZS0+cGVyZm9ybUZkV29yaygpOworICAgIH0KKworICAgIGNsb3NlKHdvcmtRdWV1ZS0+bV9y
ZWFkRnJvbVBpcGVGZCk7CisgICAgY2xvc2Uod29ya1F1ZXVlLT5tX3dyaXRlVG9QaXBlRmQpOwor
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlckZkRXZlbnRIYW5k
bGVyKGludCBmZCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgTXV0
ZXhMb2NrZXIgbG9jayhtX2ZkV29ya0l0ZW1zTG9jayk7CisgICAgaWYgKG1fZmRXb3JrSXRlbXMu
Y29udGFpbnMoZmQpKQorICAgICAgICBMT0dfRVJST1IoIiVkIGlzIGFscmVhZHkgcmVnaXN0ZXJk
LiIsIGZkKTsKKworICAgIG1fZmRXb3JrSXRlbXMuc2V0KGZkLCBmdW5jdGlvbik7CisKKyAgICBp
ZiAoZmQgPiBtX21heEZkKQorICAgICAgICBtX21heEZkID0gZmQ7CisgICAgRkRfU0VUKGZkLCAm
bV9mZFNldCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtlVXAoY29u
c3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fd29ya0l0ZW1RdWV1ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoZnVuY3Rp
b24pOworICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQod2FrdXBUaHJlYWRNZXNzYWdlKTsKK30KKwor
dm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQoreworICAgIHNjaGVkdWxlV29ya0FuZFdha2VVcChmdW5jdGlvbik7Cit9CisKK2Jvb2wgV29y
a1F1ZXVlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgVGltZXJXb3JrSXRlbSogaXRl
bSA9IHN0YXRpY19jYXN0PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsKKyAgICBpZiAoaXRlbS0+cXVl
dWUoKS0+bV9pc1ZhbGlkKSB7CisgICAgICAgIGl0ZW0tPnF1ZXVlKCktPnNjaGVkdWxlV29ya0Fu
ZFdha2VVcChpdGVtLT5mdW5jdGlvbigpKTsKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+bV90aW1l
cnMucmVtb3ZlKGl0ZW0tPnRpbWVySUQoKSk7CisgICAgfQorICAgIGRlbGV0ZSBpdGVtOworCisg
ICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoQWZ0ZXJEZWxheShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbiwgZG91Ymxl
IGRlbGF5KQoreworICAgIHNpemVfdCB0aW1lcklkID0gbV90aW1lcnMuc2l6ZSgpOyAvLyBnZXQg
bmV4dCB0aW1lcklkCisgICAgbV90aW1lcnNbdGltZXJJZF0gPSBlY29yZV90aW1lcl9hZGQoZGVs
YXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWNvcmVfVGFza19DYj4odGltZXJGaXJlZCksIG5ldyBUaW1l
cldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0aW9uLCB0aGlzKSk7Cit9CisKK0hhc2hNYXA8V2ViS2l0
OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKCk+ID4gV29ya1F1ZXVl
OjptX3Rlcm1Xb3JrSXRlbXM7CisKK2Jvb2wgV29ya1F1ZXVlOjpwcm9jZXNzRXhpdENhbGxCYWNr
KHZvaWQqIGRhdGEsIGludCB0eXBlLCB2b2lkKiBldmVudCkKK3sKKyAgICBXb3JrUXVldWUqIHF1
ZXVlID0gcmVpbnRlcnByZXRfY2FzdDxXb3JrUXVldWUqPihkYXRhKTsKKyAgICBpZiAocXVldWUt
Pm1faXNWYWxpZCkgeworICAgICAgICBFY29yZV9FeGVfRXZlbnRfRGVsKiBldiA9IHN0YXRpY19j
YXN0PEVjb3JlX0V4ZV9FdmVudF9EZWwqPihldmVudCk7CisgICAgICAgIFdlYktpdDo6UGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllciBkZWFkQ2hpbGRQaWQgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OlBs
YXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI+KGV2LT5waWQpOworCisgICAgICAgIEFTU0VSVF9BUkco
ZGVhZENoaWxkUGlkLCBtX3Rlcm1Xb3JrSXRlbXMuY29udGFpbnMoZGVhZENoaWxkUGlkKSk7Cisg
ICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24gPSBtX3Rlcm1Xb3JrSXRlbXMudGFrZShk
ZWFkQ2hpbGRQaWQpOworICAgICAgICBxdWV1ZS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGZ1bmN0
aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2
b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikK
K3sKKyAgICBBU1NFUlRfQVJHKHByb2Nlc3MsICFtX3Rlcm1Xb3JrSXRlbXMuY29udGFpbnMocHJv
Y2VzcykpOworICAgIG1fdGVybVdvcmtJdGVtcy5zZXQocHJvY2VzcywgZnVuY3Rpb24pOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBkOGE3OTdhNmNiNjI0OTZjNmQzNzkzZmEzYmM1
OWJiYjkxMTlkNzg5Li45YTFmMDliNGI2ZjQ5YWQ3Mjc4NzRkZjUxMTU1MjYyMzk4NzAyMjU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNyw3ICs3LDYgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9MSU5LX0ZMQUdTCiAKIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRm
b3JtL2VmbC9Nb2R1bGVFZmwuY3BwCi0gICAgUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCiAg
ICAgUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJl
ZE1lbW9yeVVuaXguY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA4NDI4MGE3M2Q5OWU2M2YwYmNiZmZi
MTU5YmM3MWYwZjhlMjNlODc5Li43MjI1NWYyNTc5NDNkZDdjMmRkZGNlYTQ5YjQ0ODNiMDdhYjJm
NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFdlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
LCBDCiB7CiAjaWYgT1MoREFSV0lOKQogICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxkQ2xvc2VD
b25uZWN0aW9uT25NYWNoRXhjZXB0aW9ucygpOwotI2VsaWYgUExBVEZPUk0oUVQpCisjZWxpZiBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIG1fY29ubmVjdGlvbi0+c2V0U2hvdWxk
Q2xvc2VDb25uZWN0aW9uT25Qcm9jZXNzVGVybWluYXRpb24ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132195</attachid>
            <date>2012-03-15 21:54:09 -0700</date>
            <delta_ts>2012-03-22 18:42:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120316135407.patch</filename>
            <type>text/plain</type>
            <size>22289</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVkZjcyNzQ0ODBhNzE3
ZDdlYmRjMmMxM2M5ODA0YTkzNmNiZWI1NC4uOGZkN2Q0NzU5ZDBjNTdkOTU5MDU0ODAyODVjM2E4
NTZkNDIwNDcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTE1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTE1ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIE1lZGlhU3RyZWFtIEFQSSAoSlNFUCk6IEludHJvZHVjaW5nIFNlc3Npb25EZXNjcmlwdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDlhN2I1MDVkNmE1MjdiM2U3MmI3MDliNjE5NWJmZWI4NzIwM2VkZGUu
LjI4NDIyZjgxNzg2NDAzZDM0ZjcxMzkzNjMxMTMwNzM3ZTFlNGQ5N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAxMi0wMy0xNSAgWW91bmdUYWVjayBTb25nICA8eW91bmd0YWVjay5z
b25nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFJ1bkxvb3BFZmwgYW5k
IFdvcmtRdWV1ZUVmbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjI3NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgaW5pdGlhbCB2ZXJzaW9uIFdvcmtRdWV1ZUVmbCBmb3IgV2ViS2l0MiBFZmwuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvbm5l
Y3Rpb24pOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAqIFBsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogUGxhdGZvcm0vV29ya1F1ZXVlLmg6CisgICAgICAg
IChXb3JrUXVldWUpOgorICAgICAgICAoV29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVl
OjpXb3JrSXRlbUVmbDo6V29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRl
bUVmbDo6fldvcmtJdGVtRWZsKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OmV4
ZWN1dGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6cXVldWUpOgorICAgICAg
ICAoRmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OkZkV29ya0l0
ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjp+RmRXb3JrSXRlbSk6CisgICAg
ICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OmZkKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW0p
OgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6flRpbWVyV29ya0l0ZW0pOgorICAgICAg
ICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjp0aW1lcklEKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9lZmwvV29ya1F1ZXVlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXb3JrUXVldWU6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6
CisgICAgICAgIChXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
cGVyZm9ybUZkV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnNlbmRNZXNzYWdlVG9UaHJlYWQp
OgorICAgICAgICAoV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpOgorICAgICAgICAoV29ya1F1
ZXVlOjpyZWdpc3RlckZkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1
bGVXb3JrQW5kV2FrZVVwKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAg
ICAoV29ya1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hB
ZnRlckRlbGF5KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIpOgorICAgICAgICAo
V29ya1F1ZXVlOjpkaXNwYXRjaE9uVGVybWluYXRpb24pOgorICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyk6CisKIDIwMTItMDMtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRoZSBTbm93IExlb3BhcmQgYnVp
bGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0NWE4M2ZjN2YxOWQw
MDc3ZGNhMmVhODE2MTY5ZjE2Yi4uY2VkNzhhYmMyODZjMGM4YWJlMDRlMmMyYmI3ZWY4ZjcxYWU1
OTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzksMTAgQEAKICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVG
TCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQg
Y2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZXJTb3Vy
Y2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7CisgICAgICAgIE93
blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwog
I2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0OwogICAgIFZlY3RvcjxH
UmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxpZiBQTEFURk9STShF
RkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1BpcGU+IG1fcGlwZTsK
KyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2ln
bmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThjY2VlZGU2NzUzMTEx
MTc1NjMuLjJjMWYyMGVmM2JhYjY1YWQyY2RkZDM0YzNmZTRmMDhkMzViZjc1ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEsNDggKzEsMTQ0IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJSdW5Mb29wLmgiCiAKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
PEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0ZpbGUu
aD4KKyNpbmNsdWRlIDxFZGplLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK3N0YXRpYyBjb25zdCBpbnQgZWNvcmVQaXBlTWVzc2FnZVNp
emUgPSAxOworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdha3VwRWNvcmVQaXBlTWVzc2FnZSA9
ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSdW5Mb29wOjpSdW5Mb29wKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faW5pdEVmbCA9IGZhbHNlOworCisgICAgaWYgKCFl
Y29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4i
KTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlOworICAgIH0KKworICAgIGlmICghZWNvcmVfZXZh
c19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZV9ldmFz
LiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFzOworICAgIH0KKworICAgIGlmICghZWNv
cmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29y
ZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVGaWxlOworICAgIH0KKworICAgIGlm
ICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlZGpl
LiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAgICB9CisKKyAgICBtX3BpcGUgPSBhZG9w
dFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhpcykpOworICAgIG1faW5pdEVmbCA9
IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vycm9yRWRqZToKKyAgICBlY29yZV9maWxlX3NodXRk
b3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CitlcnJv
ckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigpOworZXJyb3JFY29yZToKKyAgICByZXR1
cm47CiB9CiAKIFJ1bkxvb3A6On5SdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmIChtX2luaXRFZmwpIHsKKyAgICAgICAgZWRqZV9zaHV0ZG93bigpOworICAgICAgICBl
Y29yZV9maWxlX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAg
ICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkK
K3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30KKwordm9pZCBSdW5Mb29wOjpzdG9w
KCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondh
a2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpCit7Cisg
ICAgc3RhdGljX2Nhc3Q8UnVuTG9vcCo+KGRhdGEpLT5wZXJmb3JtV29yaygpOwogfQogCiB2b2lk
IFJ1bkxvb3A6Ondha2VVcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBlY29yZV9w
aXBlX3dyaXRlKG1fcGlwZS5nZXQoKSwgd2FrdXBFY29yZVBpcGVNZXNzYWdlLCBlY29yZVBpcGVN
ZXNzYWdlU2l6ZSk7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3Aq
IHJ1bkxvb3ApCisgICAgOiBtX2lzUmVwZWF0aW5nKGZhbHNlKQoreworfQorCitSdW5Mb29wOjpU
aW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKworYm9vbCBSdW5Mb29w
OjpUaW1lckJhc2U6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpUaW1l
ckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9vcDo6VGltZXJCYXNlKj4oZGF0YSk7CisK
KyAgICB0aW1lci0+ZmlyZWQoKTsKKworICAgIGlmICghdGltZXItPm1faXNSZXBlYXRpbmcpIHsK
KyAgICAgICAgdGltZXItPm1fdGltZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm4gRUNPUkVf
Q0FMTEJBQ0tfQ0FOQ0VMOworICAgIH0KKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5F
VzsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBmaXJlSW50ZXJ2
YWwsIGJvb2wgcmVwZWF0KQoreworICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7CisgICAgbV90
aW1lciA9IGFkb3B0UHRyKGVjb3JlX3RpbWVyX2FkZChmaXJlSW50ZXJ2YWwsIHJlaW50ZXJwcmV0
X2Nhc3Q8RWNvcmVfVGFza19DYj4odGltZXJGaXJlZCksIHRoaXMpKTsKK30KKwordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIG1fdGltZXIgPSBudWxscHRyOworfQorCiti
b29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAo
bV90aW1lcikgPyB0cnVlIDogZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5kZXggODE1NTNh
ZWI3NmJmMDRkYTc4Yjc5ZDczMGQ2MjM4ZWNiZTRhMzVmMC4uOTljZDk1MjYyM2U2NWM3ZGJhNjY5
N2MwOGI2ZDdiYWM3ZjIyNzZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
Q29yZUlQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy9Db25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIGNsYXNzIFFTb2NrZXROb3RpZmllcjsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2VuZGlmCiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJs
aWM6CiAKICNpZiBPUyhEQVJXSU4pCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25P
bk1hY2hFeGNlcHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFU
KSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmluZGV4IGQ1NGFmZjg4MmI1ZDc1MzI5MjFlMDA4NDgxMzlmYTky
ZGZjYzk5MjAuLjM0YWIzMDkwYzUzNTE0YzcwMmRjYzUyNWU2NzhkNDNmZjRiYTA4ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcApAQCAtNDIzLDYgKzQyMyw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNv
dXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIGJp
bmQoJkNvbm5lY3Rpb246OmNvbm5lY3Rpb25EaWRDbG9zZSwgdGhpcykpOwogICAgIG1fY29ubmVj
dGlvblF1ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwg
R19JT19JTiwgYmluZCgmQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOworI2Vs
aWYgUExBVEZPUk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRmRFdmVudEhh
bmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5k
bGVyLCB0aGlzKSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJl
YWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0
aGUgc2lnbmFsCkBAIC01NTIsNyArNTU0LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29p
bmdNZXNzYWdlKE1lc3NhZ2VJRCBtZXNzYWdlSUQsIFBhc3NPd25QdHI8QXJndW1lbnRFbmMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKQorI2lmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShFRkwpCiB2b2lkIENvbm5lY3Rpb246OnNldFNob3VsZENsb3NlQ29ubmVjdGlv
bk9uUHJvY2Vzc1Rlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBw
cm9jZXNzKQogewogICAgIG1fY29ubmVjdGlvblF1ZXVlLmRpc3BhdGNoT25UZXJtaW5hdGlvbihw
cm9jZXNzLCBiaW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIu
aAppbmRleCA1MDIyZGE3OTJjMzg5ZTNhZDA2ZjU5Nzg1N2U4MTI5ODUwYTMwZWE1Li45Y2FmZDMy
OTRjNjMyYmM2YTU4ZGVhZWJmNTQ0NTA5NTIyZWYxYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCkBAIC00Niw2ICs0Niw4
IEBAIHR5cGVkZWYgdm9pZCogR1BpZDsKIHR5cGVkZWYgaW50IEdQaWQ7CiAjZW5kaWYKIHR5cGVk
ZWYgR1BpZCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOworI2VsaWYgUExBVEZPUk0oRUZMKQor
dHlwZWRlZiBwaWRfdCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOwogI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dv
cmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKaW5kZXggZWQ4
OTRjYmQzNDc5ZTA1YTQ1MzI2Yzc4M2I2ZTNjMWYzN2QxOWVkYi4uYmU4YWMxMDZkY2VhYjliNTQ5
N2Y0MTYzOGEyMDA2ZjMzMzlmOThiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgK
QEAgLTQxLDE1ICs0MSwxOSBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKKyNpZiAoUExBVEZPUk0oUVQpICYmICFPUyhEQVJXSU4pKSB8fCBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKSAmJiAhT1MoREFSV0lOKQog
I2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyLmgiCiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUVRocmVhZDsKICNlbGlmIFBMQVRGT1JN
KEdUSykKLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogdHlwZWRlZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5jKSAo
Z3BvaW50ZXIgZGF0YSk7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4K
ICNlbmRpZgogCiBjbGFzcyBXb3JrUXVldWUgewpAQCAtOTAsNiArOTQsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQsIGludCwgY29uc3QgRnVuY3Rp
b248dm9pZCgpPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQp
OwogICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworI2VsaWYgUExBVEZPUk0oRUZM
KQorICAgIHZvaWQgcmVnaXN0ZXJGZEV2ZW50SGFuZGxlcihpbnQsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoKT4mKTsKKyAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICNlbmRpZgogCiBw
cml2YXRlOgpAQCAtMTc3LDYgKzE4NCwzNCBAQCBwcml2YXRlOgogICAgIGNsYXNzIEV2ZW50U291
cmNlOwogICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2UqPiA+IG1fZXZlbnRTb3Vy
Y2VzOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+ID46Oml0
ZXJhdG9yIEV2ZW50U291cmNlSXRlcmF0b3I7IAorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNs
YXNzIFRpbWVyV29ya0l0ZW07CisKKyAgICBmZF9zZXQgbV9mZFNldDsKKyAgICBpbnQgbV9tYXhG
ZDsKKyAgICBpbnQgbV9yZWFkRnJvbVBpcGVGZDsKKyAgICBpbnQgbV93cml0ZVRvUGlwZUZkOwor
ICAgIGJvb2wgbV90aHJlYWRMb29wOworCisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4gPiBt
X3dvcmtJdGVtUXVldWU7CisgICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDxpbnQsIEZ1bmN0aW9uPHZvaWQoKT4gPiBGZFdvcmtNYXA7CisgICAgRmRX
b3JrTWFwIG1fZmRXb3JrSXRlbXM7CisgICAgTXV0ZXggbV9mZFdvcmtJdGVtc0xvY2s7CisKKyAg
ICBWZWN0b3I8RWNvcmVfVGltZXIqPiBtX3RpbWVyczsKKworICAgIEVjb3JlX0V2ZW50X0hhbmRs
ZXIqIG1fcHJvY2Vzc0V4aXRIYW5kbGVyOworICAgIHN0YXRpYyBIYXNoTWFwPFdlYktpdDo6UGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZCgpPiA+IG1fdGVybVdvcmtJdGVt
czsKKworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBjaGFyKik7CisgICAgc3Rh
dGljIHZvaWQqIHdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKKyAgICB2b2lkIHNjaGVkdWxl
V29ya0FuZFdha2VVcChjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CisgICAgdm9pZCBwZXJmb3Jt
V29yaygpOworICAgIHZvaWQgcGVyZm9ybUZkV29yaygpOworICAgIHN0YXRpYyBib29sIHRpbWVy
RmlyZWQodm9pZCopOworICAgIHN0YXRpYyBib29sIHByb2Nlc3NFeGl0Q2FsbEJhY2sodm9pZCos
IGludCwgdm9pZCopOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2Vm
bC9Xb3JrUXVldWVFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0OWI3OTk0YTdiMzY5NWI4ZDkxNzdhNmY5
NDU5MzFjZjkxYmQ1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9lZmwvV29ya1F1ZXVlRWZsLmNwcApAQCAtMCwwICsxLDIwNCBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
CitjbGFzcyBXb3JrUXVldWU6OlRpbWVyV29ya0l0ZW0geworcHVibGljOgorICAgIFRpbWVyV29y
a0l0ZW0oaW50IHRpbWVySUQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3Jr
UXVldWUqIHF1ZXVlKQorICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwg
bV9xdWV1ZShxdWV1ZSkKKyAgICAgICAgLCBtX3RpbWVySUQodGltZXJJRCkKKyAgICB7CisgICAg
fQorICAgIH5UaW1lcldvcmtJdGVtKCkgeyB9CisKKyAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgIFdvcmtRdWV1ZSogcXVldWUo
KSBjb25zdCB7IHJldHVybiBtX3F1ZXVlOyB9CisKKyAgICBpbnQgdGltZXJJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZXJJRDsgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9m
dW5jdGlvbjsKKyAgICBXb3JrUXVldWUqIG1fcXVldWU7CisgICAgaW50IG1fdGltZXJJRDsKK307
CisKK3N0YXRpYyBjb25zdCBpbnQgdGhyZWFkTWVzc2FnZVNpemUgPSAxOworCitzdGF0aWMgY29u
c3QgY2hhciogY29uc3QgZmluaXNoVGhyZWFkTWVzc2FnZSA9ICJGIjsKK3N0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCB3YWt1cFRocmVhZE1lc3NhZ2UgPSAiVyI7CisKKy8vIFdvcmtRdWV1ZQordm9p
ZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAg
IGludCBmZHNbMl07CisgICAgaWYgKHBpcGUoZmRzKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgbV9yZWFkRnJvbVBpcGVGZCA9IGZkc1swXTsKKyAgICBtX3dyaXRlVG9QaXBl
RmQgPSBmZHNbMV07CisgICAgRkRfWkVSTygmbV9mZFNldCk7CisgICAgRkRfU0VUKG1fcmVhZEZy
b21QaXBlRmQsICZtX2ZkU2V0KTsKKyAgICBtX21heEZkID0gbV9yZWFkRnJvbVBpcGVGZDsKKwor
ICAgIG1fcHJvY2Vzc0V4aXRIYW5kbGVyID0gZWNvcmVfZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVf
RVhFX0VWRU5UX0RFTCwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9FdmVudF9IYW5kbGVyX0NiPihw
cm9jZXNzRXhpdENhbGxCYWNrKSwgdGhpcyk7CisKKyAgICBtX3RocmVhZExvb3AgPSB0cnVlOwor
ICAgIGNyZWF0ZVRocmVhZChyZWludGVycHJldF9jYXN0PFdURjo6VGhyZWFkRnVuY3Rpb24+KCZX
b3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCksIHRoaXMsIG5hbWUpOworfQorCit2b2lkIFdvcmtR
dWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAobV9wcm9jZXNzRXhpdEhhbmRs
ZXIpCisgICAgICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfZGVsKG1fcHJvY2Vzc0V4aXRIYW5kbGVy
KTsKKyAgICBtX3Byb2Nlc3NFeGl0SGFuZGxlciA9IDA7CisKKyAgICBzZW5kTWVzc2FnZVRvVGhy
ZWFkKGZpbmlzaFRocmVhZE1lc3NhZ2UpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3RpbWVycy5zaXplKCk7ICsraSkKKyAgICAgICAgZWNvcmVfdGltZXJfZGVsKG1fdGltZXJzW2ld
KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dvcmtJdGVt
UXVldWVMb2NrLmxvY2soKTsKKworICAgIHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlzRW1wdHko
KSkgeworICAgICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiA+IHdvcmtJdGVtUXVldWU7Cisg
ICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5zd2FwKHdvcmtJdGVtUXVldWUpOworCisgICAgICAgIG1f
d29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd29ya0l0ZW1RdWV1ZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVtUXVldWVb
aV0oKTsKKworICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKyAgICB9CisKKyAg
ICBtX3dvcmtJdGVtUXVldWVMb2NrLnVubG9jaygpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVy
Zm9ybUZkV29yaygpCit7CisgICAgZmRfc2V0IHJlYWRGZFNldCA9IG1fZmRTZXQ7CisKKyAgICBp
ZiAoc2VsZWN0KG1fbWF4RmQgKyAxLCAmcmVhZEZkU2V0LCAwLCAwLCAwKSA+PSAwKSB7CisgICAg
ICAgIGlmIChGRF9JU1NFVChtX3JlYWRGcm9tUGlwZUZkLCAmcmVhZEZkU2V0KSkgeworICAgICAg
ICAgICAgY2hhciByZWFkQnVmW3RocmVhZE1lc3NhZ2VTaXplXTsKKyAgICAgICAgICAgIGlmIChy
ZWFkKG1fcmVhZEZyb21QaXBlRmQsIHJlYWRCdWYsIHRocmVhZE1lc3NhZ2VTaXplKSA9PSAtMSkK
KyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZWFkIGZyb20gV29ya1F1ZXVl
VGhyZWFkIHBpcGUiKTsKKyAgICAgICAgICAgIGlmICghc3RybmNtcChyZWFkQnVmLCBmaW5pc2hU
aHJlYWRNZXNzYWdlLCB0aHJlYWRNZXNzYWdlU2l6ZSkpCisgICAgICAgICAgICAgICAgbV90aHJl
YWRMb29wID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBNdXRleExvY2tlciBsb2NrKG1f
ZmRXb3JrSXRlbXNMb2NrKTsKKyAgICAgICAgRmRXb3JrTWFwOjppdGVyYXRvciBlbmQgPSBtX2Zk
V29ya0l0ZW1zLmVuZCgpOworICAgICAgICBmb3IgKEZkV29ya01hcDo6aXRlcmF0b3IgaXRlciA9
IG1fZmRXb3JrSXRlbXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAg
ICAgaWYgKEZEX0lTU0VUKGl0ZXItPmZpcnN0LCAmcmVhZEZkU2V0KSkKKyAgICAgICAgICAgICAg
ICAgaXRlci0+c2Vjb25kKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVl
OjpzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit7CisgICAgaWYgKHdy
aXRlKG1fd3JpdGVUb1BpcGVGZCwgbWVzc2FnZSwgdGhyZWFkTWVzc2FnZVNpemUpID09IC0xKQor
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byB3YWtlIHVwIFdvcmtRdWV1ZSBUaHJlYWQiKTsK
K30KKwordm9pZCogV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKiB3b3JrUXVl
dWUpCit7CisgICAgd2hpbGUgKHdvcmtRdWV1ZS0+bV90aHJlYWRMb29wKSB7CisgICAgICAgIHdv
cmtRdWV1ZS0+cGVyZm9ybVdvcmsoKTsKKyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtRmRXb3Jr
KCk7CisgICAgfQorCisgICAgY2xvc2Uod29ya1F1ZXVlLT5tX3JlYWRGcm9tUGlwZUZkKTsKKyAg
ICBjbG9zZSh3b3JrUXVldWUtPm1fd3JpdGVUb1BpcGVGZCk7CisKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIoaW50IGZkLCBjb25zdCBG
dW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrKG1fZmRX
b3JrSXRlbXNMb2NrKTsKKyAgICBpZiAobV9mZFdvcmtJdGVtcy5jb250YWlucyhmZCkpCisgICAg
ICAgIExPR19FUlJPUigiJWQgaXMgYWxyZWFkeSByZWdpc3RlcmQuIiwgZmQpOworCisgICAgbV9m
ZFdvcmtJdGVtcy5zZXQoZmQsIGZ1bmN0aW9uKTsKKworICAgIGlmIChmZCA+IG1fbWF4RmQpCisg
ICAgICAgIG1fbWF4RmQgPSBmZDsKKyAgICBGRF9TRVQoZmQsICZtX2ZkU2V0KTsKK30KKwordm9p
ZCBXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FuZFdha2VVcChjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9j
ayk7CisgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChmdW5jdGlvbik7CisgICAgc2VuZE1lc3Nh
Z2VUb1RocmVhZCh3YWt1cFRocmVhZE1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2goY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgc2NoZWR1bGVX
b3JrQW5kV2FrZVVwKGZ1bmN0aW9uKTsKK30KKworYm9vbCBXb3JrUXVldWU6OnRpbWVyRmlyZWQo
dm9pZCogZGF0YSkKK3sKKyAgICBUaW1lcldvcmtJdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8VGlt
ZXJXb3JrSXRlbSo+KGRhdGEpOworICAgIGlmIChpdGVtLT5xdWV1ZSgpLT5tX2lzVmFsaWQpIHsK
KyAgICAgICAgaXRlbS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGl0ZW0tPmZ1bmN0
aW9uKCkpOworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5tX3RpbWVycy5yZW1vdmUoaXRlbS0+dGlt
ZXJJRCgpKTsKKyAgICB9CisgICAgZGVsZXRlIGl0ZW07CisKKyAgICByZXR1cm4gRUNPUkVfQ0FM
TEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBkb3VibGUgZGVsYXkpCit7CisgICAgc2l6
ZV90IHRpbWVySWQgPSBtX3RpbWVycy5zaXplKCk7IC8vIGdldCBuZXh0IHRpbWVySWQKKyAgICBt
X3RpbWVyc1t0aW1lcklkXSA9IGVjb3JlX3RpbWVyX2FkZChkZWxheSwgcmVpbnRlcnByZXRfY2Fz
dDxFY29yZV9UYXNrX0NiPih0aW1lckZpcmVkKSwgbmV3IFRpbWVyV29ya0l0ZW0odGltZXJJZCwg
ZnVuY3Rpb24sIHRoaXMpKTsKK30KKworSGFzaE1hcDxXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoKT4gPiBXb3JrUXVldWU6Om1fdGVybVdvcmtJdGVtczsK
KworYm9vbCBXb3JrUXVldWU6OnByb2Nlc3NFeGl0Q2FsbEJhY2sodm9pZCogZGF0YSwgaW50IHR5
cGUsIHZvaWQqIGV2ZW50KQoreworICAgIFdvcmtRdWV1ZSogcXVldWUgPSByZWludGVycHJldF9j
YXN0PFdvcmtRdWV1ZSo+KGRhdGEpOworICAgIGlmIChxdWV1ZS0+bV9pc1ZhbGlkKSB7CisgICAg
ICAgIEVjb3JlX0V4ZV9FdmVudF9EZWwqIGV2ID0gc3RhdGljX2Nhc3Q8RWNvcmVfRXhlX0V2ZW50
X0RlbCo+KGV2ZW50KTsKKyAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
IGRlYWRDaGlsZFBpZCA9IHN0YXRpY19jYXN0PFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRp
Zmllcj4oZXYtPnBpZCk7CisKKyAgICAgICAgQVNTRVJUX0FSRyhkZWFkQ2hpbGRQaWQsIG1fdGVy
bVdvcmtJdGVtcy5jb250YWlucyhkZWFkQ2hpbGRQaWQpKTsKKyAgICAgICAgRnVuY3Rpb248dm9p
ZCgpPiBmdW5jdGlvbiA9IG1fdGVybVdvcmtJdGVtcy50YWtlKGRlYWRDaGlsZFBpZCk7CisgICAg
ICAgIHF1ZXVlLT5zY2hlZHVsZVdvcmtBbmRXYWtlVXAoZnVuY3Rpb24pOworICAgIH0KKworICAg
IHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaE9uVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3MsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIEFTU0VSVF9BUkco
cHJvY2VzcywgIW1fdGVybVdvcmtJdGVtcy5jb250YWlucyhwcm9jZXNzKSk7CisgICAgbV90ZXJt
V29ya0l0ZW1zLnNldChwcm9jZXNzLCBmdW5jdGlvbik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IGQ4YTc5N2E2Y2I2MjQ5NmM2ZDM3OTNmYTNiYzU5YmJiOTExOWQ3ODkuLjlhMWYw
OWI0YjZmNDlhZDcyNzg3NGRmNTExNTUyNjIzOTg3MDIyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC03LDcgKzcsNiBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0xJTktfRkxBR1MKIAog
TElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5j
cHAKLSAgICBQbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcAogICAgIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDg0MjgwYTczZDk5ZTYzZjBiY2JmZmIxNTliYzcxZjBmOGUyM2U4Nzku
LjcyMjU1ZjI1Nzk0M2RkN2MyZGRkY2VhNDliNDQ4M2IwN2FiMmY2MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MsIEMKIHsKICNpZiBPUyhEQVJX
SU4pCiAgICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNl
cHRpb25zKCk7Ci0jZWxpZiBQTEFURk9STShRVCkKKyNlbGlmIFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShFRkwpCiAgICAgbV9jb25uZWN0aW9uLT5zZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25PblBy
b2Nlc3NUZXJtaW5hdGlvbihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICNlbmRpZgog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133406</attachid>
            <date>2012-03-22 18:42:50 -0700</date>
            <delta_ts>2012-03-23 02:34:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120323104248.patch</filename>
            <type>text/plain</type>
            <size>21294</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdmMjBlZTAzYzgzYjFm
OGViZjU5ZmVlYmE2N2M2YThhZmY4MGM0Yy4uMDY3OGVjMDkxNGI0OThiOGFmYzlmMTc2NzljODg1
OGE4OTkwNzU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTIyICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTIyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29ARnJlZUJTRC5vcmc+CiAK
ICAgICAgICAgW0NNYWtlXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTExNzc4LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGQyMDIwMTYxYWVkMzk4Y2Q5MDRlMjMxMjM3MzYwYWJiZTNhMGVhYjQuLmExNDA2
NDdlM2Y2YjliMjFjNTg2NDYwM2UzZDVhODBiNWM1ZDc2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MiBAQAorMjAxMi0wMy0yMiAgWW91bmdUYWVjayBTb25nICA8eW91bmd0YWVjay5zb25nQHNh
bXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFJ1bkxvb3BFZmwgYW5kIFdvcmtR
dWV1ZUVmbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI3NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgaW5pdGlhbCB2ZXJzaW9uIFdvcmtRdWV1ZUVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKENvbm5lY3Rpb24p
OgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKENvcmVJUEMpOgor
ICAgICAgICAqIFBsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogUGxhdGZvcm0vV29ya1F1ZXVlLmg6CisgICAgICAgIChXb3Jr
UXVldWUpOgorICAgICAgICAoV29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3Jr
SXRlbUVmbDo6V29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6
fldvcmtJdGVtRWZsKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6V29ya0l0ZW1FZmw6OmV4ZWN1dGUp
OgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6cXVldWUpOgorICAgICAgICAoRmRX
b3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06OkZkV29ya0l0ZW0pOgor
ICAgICAgICAoV29ya1F1ZXVlOjpGZFdvcmtJdGVtOjp+RmRXb3JrSXRlbSk6CisgICAgICAgIChX
b3JrUXVldWU6OkZkV29ya0l0ZW06OmZkKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW0pOgorICAg
ICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbTo6flRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29y
a1F1ZXVlOjpUaW1lcldvcmtJdGVtOjp0aW1lcklEKToKKyAgICAgICAgKiBQbGF0Zm9ybS9lZmwv
V29ya1F1ZXVlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW5p
dGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAg
ICAgIChXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGVyZm9y
bUZkV29yayk6CisgICAgICAgIChXb3JrUXVldWU6OnNlbmRNZXNzYWdlVG9UaHJlYWQpOgorICAg
ICAgICAoV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpy
ZWdpc3RlckZkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3Jr
QW5kV2FrZVVwKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29y
a1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRl
bGF5KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZXhpdEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaE9uVGVybWluYXRpb24pOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6V2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcyk6CisKIDIwMTItMDMtMjIgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vj
b0BGcmVlQlNELm9yZz4KIAogICAgICAgICBbQ01ha2VdIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFm
dGVyIHIxMTE3NzguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0NWE4
M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uY2VkNzhhYmMyODZjMGM4YWJlMDRlMmMyYmI3
ZWY4ZjcxYWU1OTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9v
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1f
dGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7Cisg
ICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVw
ZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0OwogICAg
IFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1BpcGU+
IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBi
dWYsIHVuc2lnbmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThjY2Vl
ZGU2NzUzMTExMTc1NjMuLjJjMWYyMGVmM2JhYjY1YWQyY2RkZDM0YzNmZTRmMDhkMzViZjc1ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEsNDgg
KzEsMTQ0IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCiAKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPEVj
b3JlX0ZpbGUuaD4KKyNpbmNsdWRlIDxFZGplLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3N0YXRpYyBjb25zdCBpbnQgZWNvcmVQaXBl
TWVzc2FnZVNpemUgPSAxOworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdha3VwRWNvcmVQaXBl
TWVzc2FnZSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSdW5Mb29wOjpSdW5Mb29w
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1faW5pdEVmbCA9IGZhbHNlOworCisg
ICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5p
dCBlY29yZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlOworICAgIH0KKworICAgIGlmICgh
ZWNvcmVfZXZhc19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBl
Y29yZV9ldmFzLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFzOworICAgIH0KKworICAg
IGlmICghZWNvcmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3Qg
aW5pdCBlY29yZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVGaWxlOworICAgIH0K
KworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3VsZCBub3Qg
aW5pdCBlZGplLiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAgICB9CisKKyAgICBtX3Bp
cGUgPSBhZG9wdFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhpcykpOworICAgIG1f
aW5pdEVmbCA9IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vycm9yRWRqZToKKyAgICBlY29yZV9m
aWxlX3NodXRkb3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAgICBlY29yZV9ldmFzX3NodXRkb3du
KCk7CitlcnJvckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigpOworZXJyb3JFY29yZToK
KyAgICByZXR1cm47CiB9CiAKIFJ1bkxvb3A6On5SdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIGlmIChtX2luaXRFZmwpIHsKKyAgICAgICAgZWRqZV9zaHV0ZG93bigpOwor
ICAgICAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX2V2YXNfc2h1dGRv
d24oKTsKKyAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9v
cDo6cnVuKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVnaW4oKTsKK30KKwordm9pZCBSdW5M
b29wOjpzdG9wKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOworfQorCit2b2lkIFJ1
bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqIGJ1ZiwgdW5zaWduZWQgaW50IHNp
emUpCit7CisgICAgc3RhdGljX2Nhc3Q8UnVuTG9vcCo+KGRhdGEpLT5wZXJmb3JtV29yaygpOwog
fQogCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBlY29yZV9waXBlX3dyaXRlKG1fcGlwZS5nZXQoKSwgd2FrdXBFY29yZVBpcGVNZXNzYWdlLCBl
Y29yZVBpcGVNZXNzYWdlU2l6ZSk7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNl
KFJ1bkxvb3AqIHJ1bkxvb3ApCisgICAgOiBtX2lzUmVwZWF0aW5nKGZhbHNlKQoreworfQorCitS
dW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKworYm9v
bCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBSdW5M
b29wOjpUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9vcDo6VGltZXJCYXNlKj4o
ZGF0YSk7CisKKyAgICB0aW1lci0+ZmlyZWQoKTsKKworICAgIGlmICghdGltZXItPm1faXNSZXBl
YXRpbmcpIHsKKyAgICAgICAgdGltZXItPm1fdGltZXIgPSBudWxscHRyOworICAgICAgICByZXR1
cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworICAgIH0KKworICAgIHJldHVybiBFQ09SRV9DQUxM
QkFDS19SRU5FVzsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBm
aXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQoreworICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7
CisgICAgbV90aW1lciA9IGFkb3B0UHRyKGVjb3JlX3RpbWVyX2FkZChmaXJlSW50ZXJ2YWwsIHJl
aW50ZXJwcmV0X2Nhc3Q8RWNvcmVfVGFza19DYj4odGltZXJGaXJlZCksIHRoaXMpKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIG1fdGltZXIgPSBudWxscHRy
OworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAg
IHJldHVybiAobV90aW1lcikgPyB0cnVlIDogZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5k
ZXggODE1NTNhZWI3NmJmMDRkYTc4Yjc5ZDczMGQ2MjM4ZWNiZTRhMzVmMC4uYzJmZjdmMTI2ZmM2
NmIwZjVjNjY2M2ZmYzFlODY0NzZiZTJiNmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIGNsYXNzIFFTb2NrZXRO
b3RpZmllcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNp
ZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVk
ZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmlu
ZGV4IGQ1NGFmZjg4MmI1ZDc1MzI5MjFlMDA4NDgxMzlmYTkyZGZjYzk5MjAuLjdjYjFmMzI3ODAx
YzAxZTAxYzA1YzM1Y2NhYjZhOTZhYWEyNzhjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMTUzLDYg
KzE1MywxMCBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgbV9z
b2NrZXROb3RpZmllciA9IDA7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBtX2Nv
bm5lY3Rpb25RdWV1ZS51bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKG1fc29ja2V0RGVzY3Jp
cHRvcik7CisjZW5kaWYKKwogICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IC0xOwogICAgIG1faXND
b25uZWN0ZWQgPSBmYWxzZTsKIH0KQEAgLTQyMyw2ICs0MjcsOCBAQCBib29sIENvbm5lY3Rpb246
Om9wZW4oKQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lz
dGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgKEdfSU9fSFVQIHwgR19J
T19FUlIpLCBiaW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKICAg
ICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihtX3NvY2tldERl
c2NyaXB0b3IsIEdfSU9fSU4sIGJpbmQoJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIsIHRo
aXMpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3Rl
clNvY2tldEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIGJpbmQoJkNvbm5lY3Rpb246
OnJlYWR5UmVhZEhhbmRsZXIsIHRoaXMpKTsKICNlbmRpZgogCiAgICAgLy8gU2NoZWR1bGUgYSBj
YWxsIHRvIHJlYWR5UmVhZEhhbmRsZXIuIERhdGEgbWF5IGhhdmUgYXJyaXZlZCBiZWZvcmUgaW5z
dGFsbGF0aW9uIG9mIHRoZSBzaWduYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAppbmRleCA1MDIyZGE3OTJjMzg5ZTNhZDA2ZjU5
Nzg1N2U4MTI5ODUwYTMwZWE1Li45Y2FmZDMyOTRjNjMyYmM2YTU4ZGVhZWJmNTQ0NTA5NTIyZWYx
YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVkZWYgdm9pZCogR1BpZDsKIHR5cGVk
ZWYgaW50IEdQaWQ7CiAjZW5kaWYKIHR5cGVkZWYgR1BpZCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlm
aWVyOworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBwaWRfdCBQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdCAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vV29ya1F1ZXVlLmgKaW5kZXggZWQ4OTRjYmQzNDc5ZTA1YTQ1MzI2Yzc4M2I2ZTNjMWYz
N2QxOWVkYi4uM2ViYWY5NWI4NTU4NDM1NTU2YjI2ZWU2NzUyMjcyMTVjZWEyNjFhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKQEAgLTQxLDE1ICs0MSwxOSBAQAogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiAoUExBVEZP
Uk0oUVQpICYmICFPUyhEQVJXSU4pKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKFFUKSAmJiAhT1MoREFSV0lOKQogI2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KLSNp
bmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiBjbGFzcyBRT2JqZWN0OwogY2xh
c3MgUVRocmVhZDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogdHlwZWRl
ZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5jKSAoZ3BvaW50ZXIgZGF0YSk7CisjZWxpZiBQTEFURk9S
TShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KICNlbmRpZgogCiBjbGFzcyBXb3JrUXVldWUgewpA
QCAtOTAsNiArOTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhh
bmRsZXIoaW50LCBpbnQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5h
dGlvbihXZWJLaXQ6OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoKT4mKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZl
bnRIYW5kbGVyKGludCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgdW5yZWdp
c3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOworICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0
aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9p
ZCgpPiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzcsNiArMTg1LDMzIEBAIHByaXZhdGU6
CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNv
dXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgVmVjdG9y
PEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgY2xhc3MgVGltZXJXb3JrSXRlbTsKKworICAgIGZkX3NldCBtX2Zk
U2V0OworICAgIGludCBtX21heEZkOworICAgIGludCBtX3JlYWRGcm9tUGlwZUZkOworICAgIGlu
dCBtX3dyaXRlVG9QaXBlRmQ7CisgICAgYm9vbCBtX3RocmVhZExvb3A7CisKKyAgICBWZWN0b3I8
RnVuY3Rpb248dm9pZCgpPiA+IG1fd29ya0l0ZW1RdWV1ZTsKKyAgICBNdXRleCBtX3dvcmtJdGVt
UXVldWVMb2NrOworCisgICAgaW50IG1fc29ja2V0RGVzY3JpcHRvcjsKKyAgICBGdW5jdGlvbjx2
b2lkKCk+IG1fc29ja2V0RXZlbnRIYW5kbGVyOworCisgICAgSGFzaE1hcDxpbnQsIE93blB0cjxF
Y29yZV9UaW1lcj4gPiBtX3RpbWVyczsKKworICAgIEVjb3JlX0V2ZW50X0hhbmRsZXIqIG1fcHJv
Y2Vzc0V4aXRIYW5kbGVyOworICAgIEhhc2hNYXA8V2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyLCBGdW5jdGlvbjx2b2lkKCk+ID4gbV90ZXJtV29ya0l0ZW1zOworCisgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0aWMgdm9pZCogd29ya1F1
ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVXb3JrQW5kV2FrZVVwKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CisgICAgdm9p
ZCBwZXJmb3JtRmRXb3JrKCk7CisgICAgc3RhdGljIGJvb2wgdGltZXJGaXJlZCh2b2lkKik7Cisg
ICAgc3RhdGljIGJvb2wgcHJvY2Vzc0V4aXRDYWxsQmFjayh2b2lkKiwgaW50LCB2b2lkKik7CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3Jr
UXVldWVFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYThiYjkzMzFkMDMyMzNmN2MzMDNlNThhOTQxOGI5OTY4ZmM5NjI2Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVF
ZmwuY3BwCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3Jr
UXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK2NsYXNzIFdvcmtRdWV1
ZTo6VGltZXJXb3JrSXRlbSB7CitwdWJsaWM6CisgICAgVGltZXJXb3JrSXRlbShpbnQgdGltZXJJ
RCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisg
ICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX3F1ZXVlKHF1ZXVlKQor
ICAgICAgICAsIG1fdGltZXJJRCh0aW1lcklEKQorICAgIHsKKyAgICB9CisgICAgflRpbWVyV29y
a0l0ZW0oKSB7IH0KKworICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcXVldWU7IH0KKworICAgIGludCB0aW1lcklEKCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklE
OyB9CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIFdv
cmtRdWV1ZSogbV9xdWV1ZTsKKyAgICBpbnQgbV90aW1lcklEOworfTsKKworc3RhdGljIGNvbnN0
IGludCBpbnZhbGlkU29ja2V0RGVzY3JpcHRvciA9IC0xOworc3RhdGljIGNvbnN0IGludCB0aHJl
YWRNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZmluaXNoVGhyZWFk
TWVzc2FnZSA9ICJGIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3YWt1cFRocmVhZE1lc3Nh
Z2UgPSAiVyI7CisKKy8vIFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlh
bGl6ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBpcGUo
ZmRzKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9yZWFkRnJvbVBpcGVG
ZCA9IGZkc1swXTsKKyAgICBtX3dyaXRlVG9QaXBlRmQgPSBmZHNbMV07CisgICAgRkRfWkVSTygm
bV9mZFNldCk7CisgICAgRkRfU0VUKG1fcmVhZEZyb21QaXBlRmQsICZtX2ZkU2V0KTsKKyAgICBt
X21heEZkID0gbV9yZWFkRnJvbVBpcGVGZDsKKworICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGlu
dmFsaWRTb2NrZXREZXNjcmlwdG9yOworCisgICAgbV9wcm9jZXNzRXhpdEhhbmRsZXIgPSBlY29y
ZV9ldmVudF9oYW5kbGVyX2FkZChFQ09SRV9FWEVfRVZFTlRfREVMLCByZWludGVycHJldF9jYXN0
PEVjb3JlX0V2ZW50X0hhbmRsZXJfQ2I+KHByb2Nlc3NFeGl0Q2FsbEJhY2spLCB0aGlzKTsKKwor
ICAgIG1fdGhyZWFkTG9vcCA9IHRydWU7CisgICAgY3JlYXRlVGhyZWFkKHJlaW50ZXJwcmV0X2Nh
c3Q8V1RGOjpUaHJlYWRGdW5jdGlvbj4oJldvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKSwgdGhp
cywgbmFtZSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQorewor
ICAgIGlmIChtX3Byb2Nlc3NFeGl0SGFuZGxlcikKKyAgICAgICAgZWNvcmVfZXZlbnRfaGFuZGxl
cl9kZWwobV9wcm9jZXNzRXhpdEhhbmRsZXIpOworICAgIG1fcHJvY2Vzc0V4aXRIYW5kbGVyID0g
MDsKKworICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQoZmluaXNoVGhyZWFkTWVzc2FnZSk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtV29yaygpCit7CisgICAgbV93b3JrSXRlbVF1ZXVlTG9j
ay5sb2NrKCk7CisKKyAgICB3aGlsZSAoIW1fd29ya0l0ZW1RdWV1ZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4gPiB3b3JrSXRlbVF1ZXVlOworICAgICAgICBt
X3dvcmtJdGVtUXVldWUuc3dhcCh3b3JrSXRlbVF1ZXVlKTsKKworICAgICAgICBtX3dvcmtJdGVt
UXVldWVMb2NrLnVubG9jaygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmtJ
dGVtUXVldWUuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB3b3JrSXRlbVF1ZXVlW2ldKCk7Cisg
ICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworICAgIH0KKyAgICBtX3dvcmtJdGVt
UXVldWVMb2NrLnVubG9jaygpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybUZkV29yaygp
Cit7CisgICAgZmRfc2V0IHJlYWRGZFNldCA9IG1fZmRTZXQ7CisKKyAgICBpZiAoc2VsZWN0KG1f
bWF4RmQgKyAxLCAmcmVhZEZkU2V0LCAwLCAwLCAwKSA+PSAwKSB7CisgICAgICAgIGlmIChGRF9J
U1NFVChtX3JlYWRGcm9tUGlwZUZkLCAmcmVhZEZkU2V0KSkgeworICAgICAgICAgICAgY2hhciBy
ZWFkQnVmW3RocmVhZE1lc3NhZ2VTaXplXTsKKyAgICAgICAgICAgIGlmIChyZWFkKG1fcmVhZEZy
b21QaXBlRmQsIHJlYWRCdWYsIHRocmVhZE1lc3NhZ2VTaXplKSA9PSAtMSkKKyAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZWFkIGZyb20gV29ya1F1ZXVlVGhyZWFkIHBpcGUi
KTsKKyAgICAgICAgICAgIGlmICghc3RybmNtcChyZWFkQnVmLCBmaW5pc2hUaHJlYWRNZXNzYWdl
LCB0aHJlYWRNZXNzYWdlU2l6ZSkpCisgICAgICAgICAgICAgICAgbV90aHJlYWRMb29wID0gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9zb2NrZXREZXNjcmlwdG9yICE9IGludmFs
aWRTb2NrZXREZXNjcmlwdG9yICYmIEZEX0lTU0VUKG1fc29ja2V0RGVzY3JpcHRvciwgJnJlYWRG
ZFNldCkpCisgICAgICAgICAgICBtX3NvY2tldEV2ZW50SGFuZGxlcigpOworICAgIH0KK30KKwor
dm9pZCBXb3JrUXVldWU6OnNlbmRNZXNzYWdlVG9UaHJlYWQoY29uc3QgY2hhciogbWVzc2FnZSkK
K3sKKyAgICBpZiAod3JpdGUobV93cml0ZVRvUGlwZUZkLCBtZXNzYWdlLCB0aHJlYWRNZXNzYWdl
U2l6ZSkgPT0gLTEpCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHdha2UgdXAgV29ya1F1
ZXVlIFRocmVhZCIpOworfQorCit2b2lkKiBXb3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZChXb3Jr
UXVldWUqIHdvcmtRdWV1ZSkKK3sKKyAgICB3aGlsZSAod29ya1F1ZXVlLT5tX3RocmVhZExvb3Ap
IHsKKyAgICAgICAgd29ya1F1ZXVlLT5wZXJmb3JtV29yaygpOworICAgICAgICB3b3JrUXVldWUt
PnBlcmZvcm1GZFdvcmsoKTsKKyAgICB9CisKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fcmVhZEZy
b21QaXBlRmQpOworICAgIGNsb3NlKHdvcmtRdWV1ZS0+bV93cml0ZVRvUGlwZUZkKTsKKworICAg
IHJldHVybiAwOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRs
ZXIoaW50IGZkLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKK3sKKyAgICBpZiAo
bV9zb2NrZXREZXNjcmlwdG9yICE9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yKQorICAgICAgICBM
T0dfRVJST1IoIiVkIGlzIGFscmVhZHkgcmVnaXN0ZXJkLiIsIGZkKTsKKworICAgIG1fc29ja2V0
RGVzY3JpcHRvciA9IGZkOworICAgIG1fc29ja2V0RXZlbnRIYW5kbGVyID0gZnVuY3Rpb247CisK
KyAgICBpZiAoZmQgPiBtX21heEZkKQorICAgICAgICBtX21heEZkID0gZmQ7CisgICAgRkRfU0VU
KGZkLCAmbV9mZFNldCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZl
bnRIYW5kbGVyKGludCBmZCkKK3sKKyAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpbnZhbGlkU29j
a2V0RGVzY3JpcHRvcjsKKworICAgIGlmIChmZCA9PSBtX21heEZkKQorICAgICAgICBtX21heEZk
ID0gbV9yZWFkRnJvbVBpcGVGZDsKKyAgICBGRF9DTFIoZmQsICZtX2ZkU2V0KTsKK30KKwordm9p
ZCBXb3JrUXVldWU6OnNjaGVkdWxlV29ya0FuZFdha2VVcChjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbikKK3sKKyAgICBpZiAoZnVuY3Rpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtUXVldWVMb2NrKTsKKyAgICBt
X3dvcmtJdGVtUXVldWUuYXBwZW5kKGZ1bmN0aW9uKTsKKyAgICBzZW5kTWVzc2FnZVRvVGhyZWFk
KHdha3VwVGhyZWFkTWVzc2FnZSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChjb25z
dCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKK3sKKyAgICBzY2hlZHVsZVdvcmtBbmRXYWtl
VXAoZnVuY3Rpb24pOworfQorCitib29sIFdvcmtRdWV1ZTo6dGltZXJGaXJlZCh2b2lkKiBkYXRh
KQoreworICAgIFRpbWVyV29ya0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxUaW1lcldvcmtJdGVt
Kj4oZGF0YSk7CisgICAgaWYgKGl0ZW0gJiYgaXRlbS0+cXVldWUoKS0+bV9pc1ZhbGlkKSB7Cisg
ICAgICAgIGl0ZW0tPnF1ZXVlKCktPnNjaGVkdWxlV29ya0FuZFdha2VVcChpdGVtLT5mdW5jdGlv
bigpKTsKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+bV90aW1lcnMudGFrZShpdGVtLT50aW1lcklE
KCkpOworICAgICAgICBkZWxldGUgaXRlbTsKKyAgICB9CisKKyAgICByZXR1cm4gRUNPUkVfQ0FM
TEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBkb3VibGUgZGVsYXkpCit7CisgICAgc3Rh
dGljIGludCB0aW1lcklkID0gMDsKKyAgICBtX3RpbWVycy5zZXQodGltZXJJZCwgYWRvcHRQdHIo
ZWNvcmVfdGltZXJfYWRkKGRlbGF5LCByZWludGVycHJldF9jYXN0PEVjb3JlX1Rhc2tfQ2I+KHRp
bWVyRmlyZWQpLCBuZXcgVGltZXJXb3JrSXRlbSh0aW1lcklkLCBmdW5jdGlvbiwgdGhpcykpKSk7
CisgICAgdGltZXJJZCsrOworfQorCitib29sIFdvcmtRdWV1ZTo6cHJvY2Vzc0V4aXRDYWxsQmFj
ayh2b2lkKiBkYXRhLCBpbnQgdHlwZSwgdm9pZCogZXZlbnQpCit7CisgICAgV29ya1F1ZXVlKiBx
dWV1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V29ya1F1ZXVlKj4oZGF0YSk7CisgICAgaWYgKHF1ZXVl
LT5tX2lzVmFsaWQpIHsKKyAgICAgICAgRWNvcmVfRXhlX0V2ZW50X0RlbCogZXYgPSBzdGF0aWNf
Y2FzdDxFY29yZV9FeGVfRXZlbnRfRGVsKj4oZXZlbnQpOworICAgICAgICBXZWJLaXQ6OlBsYXRm
b3JtUHJvY2Vzc0lkZW50aWZpZXIgZGVhZENoaWxkUGlkID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpQ
bGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyPihldi0+cGlkKTsKKworICAgICAgICBpZiAocXVldWUt
Pm1fdGVybVdvcmtJdGVtcy5jb250YWlucyhkZWFkQ2hpbGRQaWQpKSB7CisgICAgICAgICAgICBG
dW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uID0gcXVldWUtPm1fdGVybVdvcmtJdGVtcy50YWtlKGRl
YWRDaGlsZFBpZCk7CisgICAgICAgICAgICBxdWV1ZS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGZ1
bmN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVO
RVc7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaE9uVGVybWluYXRpb24oV2ViS2l0OjpQ
bGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIGNoaWxkUGlkLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbikKK3sKKyAgICBBU1NFUlRfQVJHKGNoaWxkUGlkLCAhbV90ZXJtV29ya0l0ZW1z
LmNvbnRhaW5zKGNoaWxkUGlkKSk7CisgICAgbV90ZXJtV29ya0l0ZW1zLnNldChjaGlsZFBpZCwg
ZnVuY3Rpb24pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBkOGE3OTdhNmNiNjI0
OTZjNmQzNzkzZmEzYmM1OWJiYjkxMTlkNzg5Li45YTFmMDliNGI2ZjQ5YWQ3Mjc4NzRkZjUxMTU1
MjYyMzk4NzAyMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNyw3ICs3LDYgQEAg
TElTVChBUFBFTkQgV2ViS2l0Ml9MSU5LX0ZMQUdTCiAKIExJU1QoQVBQRU5EIFdlYktpdDJfU09V
UkNFUwogICAgIFBsYXRmb3JtL2VmbC9Nb2R1bGVFZmwuY3BwCi0gICAgUGxhdGZvcm0vZWZsL1J1
bkxvb3BFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKICAgICBQbGF0
Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133448</attachid>
            <date>2012-03-23 02:34:51 -0700</date>
            <delta_ts>2012-03-25 18:16:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120323183450.patch</filename>
            <type>text/plain</type>
            <size>17978</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExODQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWViYTFhZjgyYmUyMjdk
ZDc5ODdkOTZkYTFhMjE5NGJhMTZjOTkzZC4uYmQwNDZjMzk3MDNlNDE2NTNkZWFjM2E0ZDFkYzVi
MDg3MDFlYjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTIzICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTIzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjExMTc1NCk6IHBsdWdpbnMvcmVsb2FkcGx1Z2lucy1hbmQtcGFnZXMuaHRtbCBm
YWlscyBvbiBhbGwgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTYyODA0MzE1ZjhlYzY1NjRjYWIx
MjJkYjk3YTIxZTk0ODk5MjU2NS4uMTRmMjYxYWUxYzY3YjRjZmFjZTQxMjRkYzAxOWRjNjZlMGEx
YmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAzLTIzICBZb3VuZ1RhZWNr
IFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZs
IGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246Om9w
ZW4pOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9X
b3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6CisgICAgICAgIChXb3JrSXRlbUVmbCk6
CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpXb3JrSXRlbUVmbCk6CisgICAgICAg
IChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0ZW1FZmwpOgorICAgICAgICAoV29ya1F1
ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVt
RWZsOjpxdWV1ZSk6CisgICAgICAgIChGZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OkZkV29ya0l0ZW06
On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6ZmQpOgorICAg
ICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OlRpbWVyV29ya0l0ZW06
OlRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1ZXVlOjpUaW1lcldvcmtJdGVtOjp+VGlt
ZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6OlRpbWVyV29ya0l0ZW06OnRpbWVySUQp
OgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmspOgor
ICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3JrKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
c2VuZE1lc3NhZ2VUb1RocmVhZCk6CisgICAgICAgIChXb3JrUXVldWU6OndvcmtRdWV1ZVRocmVh
ZCk6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVyRmRFdmVudEhhbmRsZXIpOgorICAgICAg
ICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtlVXApOgorICAgICAgICAoV29ya1F1ZXVl
OjpkaXNwYXRjaCk6CisgICAgICAgIChXb3JrUXVldWU6OnRpbWVyRmlyZWQpOgorICAgICAgICAo
V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkpOgorICAgICAgICAoV29ya1F1ZXVlOjpleGl0
SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoT25UZXJtaW5hdGlvbik6Cisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzKToKKwogMjAxMi0wMy0yMyAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMTE3
NTQpOiBwbHVnaW5zL3JlbG9hZHBsdWdpbnMtYW5kLXBhZ2VzLmh0bWwgZmFpbHMgb24gYWxsIHBs
YXRmb3JtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oCmluZGV4IGYwOGEwNDIyNDVhODNmYzdm
MTlkMDA3N2RjYTJlYTgxNjE2OWYxNmIuLmNlZDc4YWJjMjg2YzBjOGFiZTA0ZTJjMmJiN2VmOGY3
MWFlNTk0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKQEAgLTM5LDYgKzM5LDEwIEBA
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJ1bkxvb3AgewpAQCAtOTUsNiArOTksMTAgQEAgcHVibGljOgogICAgICAgICB2
b2lkIGNsZWFyVGltZXJTb3VyY2UoKTsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3RpbWVy
U291cmNlOwogICAgICAgICBnYm9vbGVhbiBtX2lzUmVwZWF0aW5nOworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgICAgICBzdGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQqIGRhdGEpOworICAgICAg
ICBPd25QdHI8RWNvcmVfVGltZXI+IG1fdGltZXI7CisgICAgICAgIGJvb2wgbV9pc1JlcGVhdGlu
ZzsKICNlbmRpZgogICAgIH07CiAKQEAgLTE1Nyw2ICsxNjUsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBHUmVmUHRyPEdNYWluQ29udGV4dD4gbV9ydW5Mb29wQ29udGV4dDsKICAgICBWZWN0
b3I8R1JlZlB0cjxHTWFpbkxvb3A+ID4gbV9ydW5Mb29wTWFpbkxvb3BzOworI2VsaWYgUExBVEZP
Uk0oRUZMKQorICAgIGJvb2wgbV9pbml0RWZsOworICAgIE93blB0cjxFY29yZV9QaXBlPiBtX3Bp
cGU7CisgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCogYnVmLCB1
bnNpZ25lZCBpbnQgc2l6ZSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SdW5Mb29wRWZsLmNwcAppbmRleCBlODIwNzg4ZDZhYmIwOTM4MmU5ZTE4Y2NlZWRlNjc1
MzExMTE3NTYzLi43YWFlNWYxYjE4MmM0OTNmMmU2YmQ1MDgzYzY3Yzk0ZmU4ZTViZmYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDIzICsyNywxMjUg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCiAKLSNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVf
RXZhcy5oPgorI2luY2x1ZGUgPEVjb3JlX0ZpbGUuaD4KKyNpbmNsdWRlIDxFZGplLmg+CisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3N0YXRp
YyBjb25zdCBpbnQgZWNvcmVQaXBlTWVzc2FnZVNpemUgPSAxOworc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IHdha3VwRWNvcmVQaXBlTWVzc2FnZSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSdW5Mb29wOjpSdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
aW5pdEVmbCA9IGZhbHNlOworCisgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3Jl
OworICAgIH0KKworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOworICAgICAgICBnb3RvIGVycm9yRWNv
cmVFdmFzOworICAgIH0KKworICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZV9maWxlLiIpOworICAgICAgICBnb3RvIGVy
cm9yRWNvcmVGaWxlOworICAgIH0KKworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlZGplLiIpOworICAgICAgICBnb3RvIGVycm9yRWRq
ZTsKKyAgICB9CisKKyAgICBtX3BpcGUgPSBhZG9wdFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBF
dmVudCwgdGhpcykpOworICAgIG1faW5pdEVmbCA9IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vy
cm9yRWRqZToKKyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAg
ICBlY29yZV9ldmFzX3NodXRkb3duKCk7CitlcnJvckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0
ZG93bigpOworZXJyb3JFY29yZToKKyAgICByZXR1cm47CiB9CiAKIFJ1bkxvb3A6On5SdW5Mb29w
KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX2luaXRFZmwpIHsKKyAgICAg
ICAgZWRqZV9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CisgICAg
ICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKKyAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3BfYmVn
aW4oKTsKK30KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKKyAgICBlY29yZV9tYWluX2xvb3Bf
cXVpdCgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQq
IGJ1ZiwgdW5zaWduZWQgaW50IHNpemUpCit7CisgICAgc3RhdGljX2Nhc3Q8UnVuTG9vcCo+KGRh
dGEpLT5wZXJmb3JtV29yaygpOwogfQogCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBlY29yZV9waXBlX3dyaXRlKG1fcGlwZS5nZXQoKSwgd2Fr
dXBFY29yZVBpcGVNZXNzYWdlLCBlY29yZVBpcGVNZXNzYWdlU2l6ZSk7Cit9CisKK1J1bkxvb3A6
OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AqIHJ1bkxvb3ApCisgICAgOiBtX2lzUmVwZWF0
aW5nKGZhbHNlKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQorewor
ICAgIHN0b3AoKTsKK30KKworYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQodm9p
ZCogZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8
UnVuTG9vcDo6VGltZXJCYXNlKj4oZGF0YSk7CisKKyAgICB0aW1lci0+ZmlyZWQoKTsKKworICAg
IGlmICghdGltZXItPm1faXNSZXBlYXRpbmcpIHsKKyAgICAgICAgdGltZXItPm1fdGltZXIgPSBu
dWxscHRyOworICAgICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworICAgIH0KKwor
ICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0YXJ0KGRvdWJsZSBmaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQoreworICAgIG1f
aXNSZXBlYXRpbmcgPSByZXBlYXQ7CisgICAgbV90aW1lciA9IGFkb3B0UHRyKGVjb3JlX3RpbWVy
X2FkZChmaXJlSW50ZXJ2YWwsIHJlaW50ZXJwcmV0X2Nhc3Q8RWNvcmVfVGFza19DYj4odGltZXJG
aXJlZCksIHRoaXMpKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQorewor
ICAgIG1fdGltZXIgPSBudWxscHRyOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNB
Y3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAobV90aW1lcikgPyB0cnVlIDogZmFsc2U7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Db25uZWN0aW9uLmgKaW5kZXggODE1NTNhZWI3NmJmMDRkYTc4Yjc5ZDczMGQ2MjM4ZWNi
ZTRhMzVmMC4uYzJmZjdmMTI2ZmM2NmIwZjVjNjY2M2ZmYzFlODY0NzZiZTJiNmUyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAKIGNsYXNzIFFTb2NrZXROb3RpZmllcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmluZGV4IGQ1NGFmZjg4MmI1ZDc1MzI5MjFlMDA4NDgxMzlmYTky
ZGZjYzk5MjAuLjdjYjFmMzI3ODAxYzAxZTAxYzA1YzM1Y2NhYjZhOTZhYWEyNzhjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcApAQCAtMTUzLDYgKzE1MywxMCBAQCB2b2lkIENvbm5lY3Rpb246OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCiAgICAgbV9zb2NrZXROb3RpZmllciA9IDA7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEVGTCkKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS51bnJlZ2lzdGVyU29ja2V0RXZlbnRI
YW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvcik7CisjZW5kaWYKKwogICAgIG1fc29ja2V0RGVzY3Jp
cHRvciA9IC0xOwogICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsKIH0KQEAgLTQyMyw2ICs0Mjcs
OCBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIG1f
Y29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3Jp
cHRvciwgKEdfSU9fSFVQIHwgR19JT19FUlIpLCBiaW5kKCZDb25uZWN0aW9uOjpjb25uZWN0aW9u
RGlkQ2xvc2UsIHRoaXMpKTsKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291
cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIEdfSU9fSU4sIGJpbmQoJkNvbm5lY3Rpb246
OnJlYWR5UmVhZEhhbmRsZXIsIHRoaXMpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBtX2Nv
bm5lY3Rpb25RdWV1ZS5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0
b3IsIGJpbmQoJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIsIHRoaXMpKTsKICNlbmRpZgog
CiAgICAgLy8gU2NoZWR1bGUgYSBjYWxsIHRvIHJlYWR5UmVhZEhhbmRsZXIuIERhdGEgbWF5IGhh
dmUgYXJyaXZlZCBiZWZvcmUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzaWduYWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAppbmRleCA1
MDIyZGE3OTJjMzg5ZTNhZDA2ZjU5Nzg1N2U4MTI5ODUwYTMwZWE1Li45Y2FmZDMyOTRjNjMyYmM2
YTU4ZGVhZWJmNTQ0NTA5NTIyZWYxYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVk
ZWYgdm9pZCogR1BpZDsKIHR5cGVkZWYgaW50IEdQaWQ7CiAjZW5kaWYKIHR5cGVkZWYgR1BpZCBQ
bGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOworI2VsaWYgUExBVEZPUk0oRUZMKQordHlwZWRlZiBw
aWRfdCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5o
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKaW5kZXggZWQ4OTRjYmQzNDc5
ZTA1YTQ1MzI2Yzc4M2I2ZTNjMWYzN2QxOWVkYi4uNjAxZjQzNjAyMzMxNzdmNDcxNzQ0M2ViYzc2
MTZjODU4YjZlODk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1
ZXVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKQEAgLTQxLDE1
ICs0MSwxOSBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKKyNpZiAoUExBVEZPUk0oUVQpICYmICFPUyhEQVJXSU4pKSB8fCBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
LmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKSAmJiAhT1MoREFSV0lOKQogI2luY2x1ZGUg
PFFTb2NrZXROb3RpZmllcj4KLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgi
CiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUVRocmVhZDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSNp
bmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgogdHlwZWRlZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5jKSAoZ3BvaW50ZXIg
ZGF0YSk7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RWNvcmUuaD4KICNlbmRpZgog
CiBjbGFzcyBXb3JrUXVldWUgewpAQCAtOTAsNiArOTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQsIGludCwgY29uc3QgRnVuY3Rpb248dm9pZCgp
PiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQpOwogICAgIHZv
aWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ciwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHZv
aWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+
Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7CiAjZW5kaWYK
IAogcHJpdmF0ZToKQEAgLTE3Nyw2ICsxODQsMjkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBFdmVu
dFNvdXJjZTsKICAgICBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPiBtX2V2ZW50
U291cmNlczsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2UqPiA+
OjppdGVyYXRvciBFdmVudFNvdXJjZUl0ZXJhdG9yOyAKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAg
ICBjbGFzcyBUaW1lcldvcmtJdGVtOworCisgICAgZmRfc2V0IG1fZmRTZXQ7CisgICAgaW50IG1f
bWF4RmQ7CisgICAgaW50IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgaW50IG1fd3JpdGVUb1BpcGVG
ZDsKKyAgICBib29sIG1fdGhyZWFkTG9vcDsKKworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+
ID4gbV93b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisKKyAg
ICBpbnQgbV9zb2NrZXREZXNjcmlwdG9yOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zb2NrZXRF
dmVudEhhbmRsZXI7CisKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPEVjb3JlX1RpbWVyPiA+IG1f
dGltZXJzOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAg
ICBzdGF0aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2No
ZWR1bGVXb3JrQW5kV2FrZVVwKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyAgICB2b2lkIHBl
cmZvcm1Xb3JrKCk7CisgICAgdm9pZCBwZXJmb3JtRmRXb3JrKCk7CisgICAgc3RhdGljIGJvb2wg
dGltZXJGaXJlZCh2b2lkKik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQyYmY1NGU1MmIxNzliM2IxYTg3
MzU4ODBlZTMxMTRlZmI2N2IzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC0wLDAgKzEsMTgxIEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisKK2NsYXNzIFdvcmtRdWV1ZTo6VGltZXJXb3JrSXRlbSB7CitwdWJsaWM6CisgICAgVGlt
ZXJXb3JrSXRlbShpbnQgdGltZXJJRCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24s
IFdvcmtRdWV1ZSogcXVldWUpCisgICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAg
ICAgLCBtX3F1ZXVlKHF1ZXVlKQorICAgICAgICAsIG1fdGltZXJJRCh0aW1lcklEKQorICAgIHsK
KyAgICB9CisgICAgflRpbWVyV29ya0l0ZW0oKSB7IH0KKworICAgIEZ1bmN0aW9uPHZvaWQoKT4g
ZnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBx
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKworICAgIGludCB0aW1lcklEKCkgY29u
c3QgeyByZXR1cm4gbV90aW1lcklEOyB9CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb248dm9pZCgp
PiBtX2Z1bmN0aW9uOworICAgIFdvcmtRdWV1ZSogbV9xdWV1ZTsKKyAgICBpbnQgbV90aW1lcklE
OworfTsKKworc3RhdGljIGNvbnN0IGludCBpbnZhbGlkU29ja2V0RGVzY3JpcHRvciA9IC0xOwor
c3RhdGljIGNvbnN0IGludCB0aHJlYWRNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgZmluaXNoVGhyZWFkTWVzc2FnZSA9ICJGIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCB3YWt1cFRocmVhZE1lc3NhZ2UgPSAiVyI7CisKKy8vIFdvcmtRdWV1ZQordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBm
ZHNbMl07CisgICAgaWYgKHBpcGUoZmRzKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgbV9yZWFkRnJvbVBpcGVGZCA9IGZkc1swXTsKKyAgICBtX3dyaXRlVG9QaXBlRmQgPSBm
ZHNbMV07CisgICAgRkRfWkVSTygmbV9mZFNldCk7CisgICAgRkRfU0VUKG1fcmVhZEZyb21QaXBl
RmQsICZtX2ZkU2V0KTsKKyAgICBtX21heEZkID0gbV9yZWFkRnJvbVBpcGVGZDsKKworICAgIG1f
c29ja2V0RGVzY3JpcHRvciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOworCisgICAgbV90aHJl
YWRMb29wID0gdHJ1ZTsKKyAgICBjcmVhdGVUaHJlYWQocmVpbnRlcnByZXRfY2FzdDxXVEY6OlRo
cmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBuYW1lKTsK
K30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgc2VuZE1l
c3NhZ2VUb1RocmVhZChmaW5pc2hUaHJlYWRNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrUXVldWU6
OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKworICAg
IHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8RnVu
Y3Rpb248dm9pZCgpPiA+IHdvcmtJdGVtUXVldWU7CisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5z
d2FwKHdvcmtJdGVtUXVldWUpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2Nr
KCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya0l0ZW1RdWV1ZS5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVtUXVldWVbaV0oKTsKKyAgICAgICAgbV93b3JrSXRl
bVF1ZXVlTG9jay5sb2NrKCk7CisgICAgfQorICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2Nr
KCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3JrKCkKK3sKKyAgICBmZF9zZXQg
cmVhZEZkU2V0ID0gbV9mZFNldDsKKworICAgIGlmIChzZWxlY3QobV9tYXhGZCArIDEsICZyZWFk
RmRTZXQsIDAsIDAsIDApID49IDApIHsKKyAgICAgICAgaWYgKEZEX0lTU0VUKG1fcmVhZEZyb21Q
aXBlRmQsICZyZWFkRmRTZXQpKSB7CisgICAgICAgICAgICBjaGFyIHJlYWRCdWZbdGhyZWFkTWVz
c2FnZVNpemVdOworICAgICAgICAgICAgaWYgKHJlYWQobV9yZWFkRnJvbVBpcGVGZCwgcmVhZEJ1
ZiwgdGhyZWFkTWVzc2FnZVNpemUpID09IC0xKQorICAgICAgICAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIHJlYWQgZnJvbSBXb3JrUXVldWVUaHJlYWQgcGlwZSIpOworICAgICAgICAgICAg
aWYgKCFzdHJuY21wKHJlYWRCdWYsIGZpbmlzaFRocmVhZE1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VT
aXplKSkKKyAgICAgICAgICAgICAgICBtX3RocmVhZExvb3AgPSBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChtX3NvY2tldERlc2NyaXB0b3IgIT0gaW52YWxpZFNvY2tldERlc2NyaXB0
b3IgJiYgRkRfSVNTRVQobV9zb2NrZXREZXNjcmlwdG9yLCAmcmVhZEZkU2V0KSkKKyAgICAgICAg
ICAgIG1fc29ja2V0RXZlbnRIYW5kbGVyKCk7CisgICAgfQorfQorCit2b2lkIFdvcmtRdWV1ZTo6
c2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBjaGFyKiBtZXNzYWdlKQoreworICAgIGlmICh3cml0
ZShtX3dyaXRlVG9QaXBlRmQsIG1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VTaXplKSA9PSAtMSkKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gd2FrZSB1cCBXb3JrUXVldWUgVGhyZWFkIik7Cit9
CisKK3ZvaWQqIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVl
KQoreworICAgIHdoaWxlICh3b3JrUXVldWUtPm1fdGhyZWFkTG9vcCkgeworICAgICAgICB3b3Jr
UXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybUZkV29yaygp
OworICAgIH0KKworICAgIGNsb3NlKHdvcmtRdWV1ZS0+bV9yZWFkRnJvbVBpcGVGZCk7CisgICAg
Y2xvc2Uod29ya1F1ZXVlLT5tX3dyaXRlVG9QaXBlRmQpOworCisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmQsIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIGlmIChtX3NvY2tldERlc2NyaXB0
b3IgIT0gaW52YWxpZFNvY2tldERlc2NyaXB0b3IpCisgICAgICAgIExPR19FUlJPUigiJWQgaXMg
YWxyZWFkeSByZWdpc3RlcmQuIiwgZmQpOworCisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gZmQ7
CisgICAgbV9zb2NrZXRFdmVudEhhbmRsZXIgPSBmdW5jdGlvbjsKKworICAgIGlmIChmZCA+IG1f
bWF4RmQpCisgICAgICAgIG1fbWF4RmQgPSBmZDsKKyAgICBGRF9TRVQoZmQsICZtX2ZkU2V0KTsK
K30KKwordm9pZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZk
KQoreworICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOwor
CisgICAgaWYgKGZkID09IG1fbWF4RmQpCisgICAgICAgIG1fbWF4RmQgPSBtX3JlYWRGcm9tUGlw
ZUZkOworICAgIEZEX0NMUihmZCwgJm1fZmRTZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2No
ZWR1bGVXb3JrQW5kV2FrZVVwKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQorewor
ICAgIGlmIChmdW5jdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5h
cHBlbmQoZnVuY3Rpb24pOworICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQod2FrdXBUaHJlYWRNZXNz
YWdlKTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mIGZ1bmN0aW9uKQoreworICAgIHNjaGVkdWxlV29ya0FuZFdha2VVcChmdW5jdGlvbik7Cit9
CisKK2Jvb2wgV29ya1F1ZXVlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgVGltZXJX
b3JrSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsKKyAgICBp
ZiAoaXRlbSAmJiBpdGVtLT5xdWV1ZSgpLT5tX2lzVmFsaWQpIHsKKyAgICAgICAgaXRlbS0+cXVl
dWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGl0ZW0tPmZ1bmN0aW9uKCkpOworICAgICAgICBp
dGVtLT5xdWV1ZSgpLT5tX3RpbWVycy50YWtlKGl0ZW0tPnRpbWVySUQoKSk7CisgICAgICAgIGRl
bGV0ZSBpdGVtOworICAgIH0KKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9
CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkoY29uc3QgRnVuY3Rpb248dm9p
ZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxheSkKK3sKKyAgICBzdGF0aWMgaW50IHRpbWVySWQg
PSAwOworICAgIG1fdGltZXJzLnNldCh0aW1lcklkLCBhZG9wdFB0cihlY29yZV90aW1lcl9hZGQo
ZGVsYXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWNvcmVfVGFza19DYj4odGltZXJGaXJlZCksIG5ldyBU
aW1lcldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0aW9uLCB0aGlzKSkpKTsKKyAgICB0aW1lcklkKys7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGQ4YTc5N2E2Y2I2MjQ5NmM2ZDM3OTNm
YTNiYzU5YmJiOTExOWQ3ODkuLjlhMWYwOWI0YjZmNDlhZDcyNzg3NGRmNTExNTUyNjIzOTg3MDIy
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03LDcgKzcsNiBAQCBMSVNUKEFQUEVO
RCBXZWJLaXQyX0xJTktfRkxBR1MKIAogTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
UGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKLSAgICBQbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5j
cHAKICAgICBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAogICAgIFBsYXRmb3JtL3VuaXgv
U2hhcmVkTWVtb3J5VW5peC5jcHAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133707</attachid>
            <date>2012-03-25 18:16:29 -0700</date>
            <delta_ts>2012-03-25 19:27:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120326101627.patch</filename>
            <type>text/plain</type>
            <size>17837</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uOWZmZGIyMmJmMDgzZTM3MDhhMWNmZDIzMmY5NGEw
ZjdkN2ZkOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTI1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9yIGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMmQ2OThhZTM3ZGIxZjlhN2JlMzU4MDgwNDNlOGFlMzQ1YWNlZjU2ZC4uNTU5ZjNlNTgzNWQw
ZjFiMTU0MDEwMWJhNTY0OTBiZGFjN2M4YTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTAzLTI1ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAg
ICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6
CisgICAgICAgIChXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZs
OjpXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0
ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAg
ICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChGZFdvcmtJdGVt
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAg
IChXb3JrUXVldWU6OkZkV29ya0l0ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6RmRXb3JrSXRlbTo6ZmQpOgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChX
b3JrUXVldWU6OlRpbWVyV29ya0l0ZW06OlRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1
ZXVlOjpUaW1lcldvcmtJdGVtOjp+VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6
OlRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVl
dWVFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6cGVyZm9ybVdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3Jr
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZCk6CisgICAgICAgIChX
b3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCk6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVy
RmRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtl
VXApOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXb3JrUXVldWU6
OnRpbWVyRmlyZWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRp
c3BhdGNoT25UZXJtaW5hdGlvbik6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKwogMjAxMi0wMy0yNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95
QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXRXZWJLaXQg
b24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0NWE4
M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uY2VkNzhhYmMyODZjMGM4YWJlMDRlMmMyYmI3
ZWY4ZjcxYWU1OTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9v
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1f
dGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7Cisg
ICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVw
ZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0OwogICAg
IFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1BpcGU+
IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBi
dWYsIHVuc2lnbmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThjY2Vl
ZGU2NzUzMTExMTc1NjMuLjQyNDBkZGQ3NTAxMTE3NjYzN2NkNzMwMzA4ZGQzZGZjMTBmN2EyYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjMgKzI3
LDEyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4K
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
c3RhdGljIGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3Qg
Y2hhciB3YWt1cEVjb3JlUGlwZU1lc3NhZ2VbXSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSdW5Mb29wOjpSdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
aW5pdEVmbCA9IGZhbHNlOworCisgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3Vs
ZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFzOwor
ICAgIH0KKworICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlY29yZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVG
aWxlOworICAgIH0KKworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlZGplLiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAgICB9
CisKKyAgICBtX3BpcGUgPSBhZG9wdFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhp
cykpOworICAgIG1faW5pdEVmbCA9IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vycm9yRWRqZToK
KyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7CitlcnJvckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigpOwog
fQogCiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBp
ZiAobV9pbml0RWZsKSB7CisgICAgICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICAgICAgZWNvcmVf
ZmlsZV9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAg
IGVjb3JlX3NodXRkb3duKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7Cisg
ICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7
CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXBF
dmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0
YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKIH0KIAogdm9pZCBSdW5M
b29wOjp3YWtlVXAoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZWNvcmVfcGlwZV93
cml0ZShtX3BpcGUuZ2V0KCksIHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVzc2Fn
ZVNpemUpOworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKiBydW5M
b29wKQorICAgIDogbV9pc1JlcGVhdGluZyhmYWxzZSkKK3sKK30KKworUnVuTG9vcDo6VGltZXJC
YXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGlt
ZXJCYXNlOjp0aW1lckZpcmVkKHZvaWQqIGRhdGEpCit7CisgICAgUnVuTG9vcDo6VGltZXJCYXNl
KiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3A6OlRpbWVyQmFzZSo+KGRhdGEpOworCisgICAg
dGltZXItPmZpcmVkKCk7CisKKyAgICBpZiAoIXRpbWVyLT5tX2lzUmVwZWF0aW5nKSB7CisgICAg
ICAgIHRpbWVyLT5tX3RpbWVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEVDT1JFX0NBTExC
QUNLX0NBTkNFTDsKKyAgICB9CisKKyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfUkVORVc7Cit9
CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgZmlyZUludGVydmFsLCBi
b29sIHJlcGVhdCkKK3sKKyAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OworICAgIG1fdGltZXIg
PSBhZG9wdFB0cihlY29yZV90aW1lcl9hZGQoZmlyZUludGVydmFsLCByZWludGVycHJldF9jYXN0
PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCB0aGlzKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6
VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBtX3RpbWVyID0gbnVsbHB0cjsKK30KKworYm9vbCBS
dW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fdGlt
ZXIpID8gdHJ1ZSA6IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDgxNTUzYWViNzZi
ZjA0ZGE3OGI3OWQ3MzBkNjIzOGVjYmU0YTM1ZjAuLmMyZmY3ZjEyNmZjNjZiMGY1YzY2NjNmZmMx
ZTg2NDc2YmUyYjZlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBACiBjbGFzcyBRU29ja2V0Tm90aWZpZXI7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIlBsYXRmb3JtUHJv
Y2Vzc0lkZW50aWZpZXIuaCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBkNTRhZmY4ODJi
NWQ3NTMyOTIxZTAwODQ4MTM5ZmE5MmRmY2M5OTIwLi43Y2IxZjMyNzgwMWMwMWUwMWMwNWMzNWNj
YWI2YTk2YWFhMjc4YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTE1Myw2ICsxNTMsMTAgQEAgdm9p
ZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIG1fc29ja2V0Tm90aWZpZXIg
PSAwOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUu
dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IpOworI2VuZGlm
CisKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSAtMTsKICAgICBtX2lzQ29ubmVjdGVkID0gZmFs
c2U7CiB9CkBAIC00MjMsNiArNDI3LDggQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICNlbGlm
IFBMQVRGT1JNKEdUSykKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291cmNl
SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIChHX0lPX0hVUCB8IEdfSU9fRVJSKSwgYmluZCgm
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlLCB0aGlzKSk7CiAgICAgbV9jb25uZWN0aW9u
UXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBHX0lP
X0lOLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlzKSk7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5k
bGVyLCB0aGlzKSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJl
YWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0
aGUgc2lnbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgKaW5kZXggNTAyMmRhNzkyYzM4OWUzYWQwNmY1OTc4NTdlODEyOTg1MGEz
MGVhNS4uOWNhZmQzMjk0YzYzMmJjNmE1OGRlYWViZjU0NDUwOTUyMmVmMWMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaApA
QCAtNDYsNiArNDYsOCBAQCB0eXBlZGVmIHZvaWQqIEdQaWQ7CiB0eXBlZGVmIGludCBHUGlkOwog
I2VuZGlmCiB0eXBlZGVmIEdQaWQgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKKyNlbGlmIFBM
QVRGT1JNKEVGTCkKK3R5cGVkZWYgcGlkX3QgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKICNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCmluZGV4IGVkODk0Y2JkMzQ3OWUwNWE0NTMyNmM3ODNiNmUzYzFmMzdkMTllZGIuLjA5OTlj
MjM1NGFlODU3MzAyZTQyNDA1YTk5Yzk0MjE4Njk1MTJlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1dvcmtRdWV1ZS5oCkBAIC00MSwxNSArNDEsMTkgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgKFBMQVRGT1JNKFFUKSAmJiAhT1Mo
REFSV0lOKSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkgJiYg
IU9TKERBUldJTikKICNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+Ci0jaW5jbHVkZSAiUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oIgogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFUaHJlYWQ7CiAj
ZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIHR5cGVkZWYgZ2Jvb2xlYW4gKCpH
U291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1
ZGUgPEVjb3JlLmg+CiAjZW5kaWYKIAogY2xhc3MgV29ya1F1ZXVlIHsKQEAgLTkwLDYgKzk0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50LCBpbnQs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFdmVudFNvdXJj
ZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBs
YXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwg
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcihpbnQpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzcsNiArMTg0LDI3IEBAIHBy
aXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxF
dmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwg
VmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgZmRfc2V0IG1fZmRTZXQ7CisgICAgaW50IG1fbWF4RmQ7
CisgICAgaW50IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgaW50IG1fd3JpdGVUb1BpcGVGZDsKKyAg
ICBib29sIG1fdGhyZWFkTG9vcDsKKworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gbV93
b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisKKyAgICBpbnQg
bV9zb2NrZXREZXNjcmlwdG9yOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zb2NrZXRFdmVudEhh
bmRsZXI7CisKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPEVjb3JlX1RpbWVyPiA+IG1fdGltZXJz
OworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0
aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVX
b3JrQW5kV2FrZVVwKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyAgICB2b2lkIHBlcmZvcm1X
b3JrKCk7CisgICAgdm9pZCBwZXJmb3JtRmRXb3JrKCk7CisgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkwYjQ2NDgxOWEzZTE3ZDgwYWI5OGYwZWQ5
M2Q1MzgzMGYzYTBlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC0wLDAgKzEsMTgxIEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisK
K2NsYXNzIFRpbWVyV29ya0l0ZW0geworcHVibGljOgorICAgIFRpbWVyV29ya0l0ZW0oaW50IHRp
bWVySUQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVl
KQorICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9xdWV1ZShxdWV1
ZSkKKyAgICAgICAgLCBtX3RpbWVySUQodGltZXJJRCkKKyAgICB7CisgICAgfQorICAgIH5UaW1l
cldvcmtJdGVtKCkgeyB9CisKKyAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgIFdvcmtRdWV1ZSogcXVldWUoKSBjb25zdCB7IHJl
dHVybiBtX3F1ZXVlOyB9CisKKyAgICBpbnQgdGltZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXJJRDsgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKKyAg
ICBXb3JrUXVldWUqIG1fcXVldWU7CisgICAgaW50IG1fdGltZXJJRDsKK307CisKK3N0YXRpYyBj
b25zdCBpbnQgaW52YWxpZFNvY2tldERlc2NyaXB0b3IgPSAtMTsKK3N0YXRpYyBjb25zdCBpbnQg
dGhyZWFkTWVzc2FnZVNpemUgPSAxOworc3RhdGljIGNvbnN0IGNoYXIgZmluaXNoVGhyZWFkTWVz
c2FnZVtdID0gIkYiOworc3RhdGljIGNvbnN0IGNoYXIgd2FrdXBUaHJlYWRNZXNzYWdlW10gPSAi
VyI7CisKKy8vIFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBpcGUoZmRzKSkK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9yZWFkRnJvbVBpcGVGZCA9IGZk
c1swXTsKKyAgICBtX3dyaXRlVG9QaXBlRmQgPSBmZHNbMV07CisgICAgRkRfWkVSTygmbV9mZFNl
dCk7CisgICAgRkRfU0VUKG1fcmVhZEZyb21QaXBlRmQsICZtX2ZkU2V0KTsKKyAgICBtX21heEZk
ID0gbV9yZWFkRnJvbVBpcGVGZDsKKworICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGludmFsaWRT
b2NrZXREZXNjcmlwdG9yOworCisgICAgbV90aHJlYWRMb29wID0gdHJ1ZTsKKyAgICBjcmVhdGVU
aHJlYWQocmVpbnRlcnByZXRfY2FzdDxXVEY6OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3
b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBuYW1lKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRm
b3JtSW52YWxpZGF0ZSgpCit7CisgICAgc2VuZE1lc3NhZ2VUb1RocmVhZChmaW5pc2hUaHJlYWRN
ZXNzYWdlKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dv
cmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKworICAgIHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlz
RW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiA+IHdvcmtJdGVtUXVl
dWU7CisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5zd2FwKHdvcmtJdGVtUXVldWUpOworCisgICAg
ICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29ya0l0ZW1RdWV1ZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVt
UXVldWVbaV0oKTsKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisgICAgfQor
ICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpw
ZXJmb3JtRmRXb3JrKCkKK3sKKyAgICBmZF9zZXQgcmVhZEZkU2V0ID0gbV9mZFNldDsKKworICAg
IGlmIChzZWxlY3QobV9tYXhGZCArIDEsICZyZWFkRmRTZXQsIDAsIDAsIDApID49IDApIHsKKyAg
ICAgICAgaWYgKEZEX0lTU0VUKG1fcmVhZEZyb21QaXBlRmQsICZyZWFkRmRTZXQpKSB7CisgICAg
ICAgICAgICBjaGFyIHJlYWRCdWZbdGhyZWFkTWVzc2FnZVNpemVdOworICAgICAgICAgICAgaWYg
KHJlYWQobV9yZWFkRnJvbVBpcGVGZCwgcmVhZEJ1ZiwgdGhyZWFkTWVzc2FnZVNpemUpID09IC0x
KQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJlYWQgZnJvbSBXb3JrUXVl
dWVUaHJlYWQgcGlwZSIpOworICAgICAgICAgICAgaWYgKCFzdHJuY21wKHJlYWRCdWYsIGZpbmlz
aFRocmVhZE1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VTaXplKSkKKyAgICAgICAgICAgICAgICBtX3Ro
cmVhZExvb3AgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3NvY2tldERlc2Ny
aXB0b3IgIT0gaW52YWxpZFNvY2tldERlc2NyaXB0b3IgJiYgRkRfSVNTRVQobV9zb2NrZXREZXNj
cmlwdG9yLCAmcmVhZEZkU2V0KSkKKyAgICAgICAgICAgIG1fc29ja2V0RXZlbnRIYW5kbGVyKCk7
CisgICAgfQorfQorCit2b2lkIFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBj
aGFyKiBtZXNzYWdlKQoreworICAgIGlmICh3cml0ZShtX3dyaXRlVG9QaXBlRmQsIG1lc3NhZ2Us
IHRocmVhZE1lc3NhZ2VTaXplKSA9PSAtMSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
d2FrZSB1cCBXb3JrUXVldWUgVGhyZWFkIik7Cit9CisKK3ZvaWQqIFdvcmtRdWV1ZTo6d29ya1F1
ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVlKQoreworICAgIHdoaWxlICh3b3JrUXVldWUt
Pm1fdGhyZWFkTG9vcCkgeworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAg
ICAgIHdvcmtRdWV1ZS0+cGVyZm9ybUZkV29yaygpOworICAgIH0KKworICAgIGNsb3NlKHdvcmtR
dWV1ZS0+bV9yZWFkRnJvbVBpcGVGZCk7CisgICAgY2xvc2Uod29ya1F1ZXVlLT5tX3dyaXRlVG9Q
aXBlRmQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNv
Y2tldEV2ZW50SGFuZGxlcihpbnQgZmQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQoreworICAgIGlmIChtX3NvY2tldERlc2NyaXB0b3IgIT0gaW52YWxpZFNvY2tldERlc2NyaXB0
b3IpCisgICAgICAgIExPR19FUlJPUigiJWQgaXMgYWxyZWFkeSByZWdpc3RlcmQuIiwgZmQpOwor
CisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gZmQ7CisgICAgbV9zb2NrZXRFdmVudEhhbmRsZXIg
PSBmdW5jdGlvbjsKKworICAgIGlmIChmZCA+IG1fbWF4RmQpCisgICAgICAgIG1fbWF4RmQgPSBm
ZDsKKyAgICBGRF9TRVQoZmQsICZtX2ZkU2V0KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnVucmVn
aXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZkKQoreworICAgIG1fc29ja2V0RGVzY3JpcHRv
ciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOworCisgICAgaWYgKGZkID09IG1fbWF4RmQpCisg
ICAgICAgIG1fbWF4RmQgPSBtX3JlYWRGcm9tUGlwZUZkOworICAgIEZEX0NMUihmZCwgJm1fZmRT
ZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIGlmIChmdW5jdGlvbi5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1
ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoZnVuY3Rpb24pOworICAgIHNlbmRN
ZXNzYWdlVG9UaHJlYWQod2FrdXBUaHJlYWRNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrUXVldWU6
OmRpc3BhdGNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIHNjaGVk
dWxlV29ya0FuZFdha2VVcChmdW5jdGlvbik7Cit9CisKK2Jvb2wgV29ya1F1ZXVlOjp0aW1lckZp
cmVkKHZvaWQqIGRhdGEpCit7CisgICAgVGltZXJXb3JrSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0
PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsKKyAgICBpZiAoaXRlbSAmJiBpdGVtLT5xdWV1ZSgpLT5t
X2lzVmFsaWQpIHsKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVw
KGl0ZW0tPmZ1bmN0aW9uKCkpOworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5tX3RpbWVycy50YWtl
KGl0ZW0tPnRpbWVySUQoKSk7CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKworICAgIHJl
dHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aEFmdGVyRGVsYXkoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxh
eSkKK3sKKyAgICBzdGF0aWMgaW50IHRpbWVySWQgPSAwOworICAgIG1fdGltZXJzLnNldCh0aW1l
cklkLCBhZG9wdFB0cihlY29yZV90aW1lcl9hZGQoZGVsYXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWNv
cmVfVGFza19DYj4odGltZXJGaXJlZCksIG5ldyBUaW1lcldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0
aW9uLCB0aGlzKSkpKTsKKyAgICB0aW1lcklkKys7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IGQ4YTc5N2E2Y2I2MjQ5NmM2ZDM3OTNmYTNiYzU5YmJiOTExOWQ3ODkuLjlhMWYwOWI0
YjZmNDlhZDcyNzg3NGRmNTExNTUyNjIzOTg3MDIyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC03LDcgKzcsNiBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0xJTktfRkxBR1MKIAogTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAK
LSAgICBQbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwvV29ya1F1
ZXVlRWZsLmNwcAogICAgIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133717</attachid>
            <date>2012-03-25 19:27:53 -0700</date>
            <delta_ts>2012-03-25 19:33:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120326112751.patch</filename>
            <type>text/plain</type>
            <size>17833</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uOWZmZGIyMmJmMDgzZTM3MDhhMWNmZDIzMmY5NGEw
ZjdkN2ZkOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTI1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9yIGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMmQ2OThhZTM3ZGIxZjlhN2JlMzU4MDgwNDNlOGFlMzQ1YWNlZjU2ZC4uNTU5ZjNlNTgzNWQw
ZjFiMTU0MDEwMWJhNTY0OTBiZGFjN2M4YTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTAzLTI1ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAg
ICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6
CisgICAgICAgIChXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZs
OjpXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0
ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAg
ICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChGZFdvcmtJdGVt
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAg
IChXb3JrUXVldWU6OkZkV29ya0l0ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6RmRXb3JrSXRlbTo6ZmQpOgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChX
b3JrUXVldWU6OlRpbWVyV29ya0l0ZW06OlRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1
ZXVlOjpUaW1lcldvcmtJdGVtOjp+VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6
OlRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVl
dWVFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6cGVyZm9ybVdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3Jr
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZCk6CisgICAgICAgIChX
b3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCk6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVy
RmRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtl
VXApOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXb3JrUXVldWU6
OnRpbWVyRmlyZWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRp
c3BhdGNoT25UZXJtaW5hdGlvbik6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKwogMjAxMi0wMy0yNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95
QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXRXZWJLaXQg
b24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0NWE4
M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uY2VkNzhhYmMyODZjMGM4YWJlMDRlMmMyYmI3
ZWY4ZjcxYWU1OTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9v
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1f
dGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7Cisg
ICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVw
ZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0OwogICAg
IFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1BpcGU+
IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBi
dWYsIHVuc2lnbmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThjY2Vl
ZGU2NzUzMTExMTc1NjMuLjMxZjc2YjVkNzk2MmQ2NzgyYmFmMmNiMjM4Mzk1YWFmZjViNWRiN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjMgKzI3
LDEyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4K
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
c3RhdGljIGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3Qg
Y2hhciB3YWt1cEVjb3JlUGlwZU1lc3NhZ2VbXSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSdW5Mb29wOjpSdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
aW5pdEVmbCA9IGZhbHNlOworCisgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3Vs
ZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFzOwor
ICAgIH0KKworICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlY29yZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVG
aWxlOworICAgIH0KKworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlZGplLiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAgICB9
CisKKyAgICBtX3BpcGUgPSBhZG9wdFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhp
cykpOworICAgIG1faW5pdEVmbCA9IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vycm9yRWRqZToK
KyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7CitlcnJvckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigpOwog
fQogCiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBp
ZiAobV9pbml0RWZsKSB7CisgICAgICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICAgICAgZWNvcmVf
ZmlsZV9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAg
IGVjb3JlX3NodXRkb3duKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7Cisg
ICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7
CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXBF
dmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0
YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKIH0KIAogdm9pZCBSdW5M
b29wOjp3YWtlVXAoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZWNvcmVfcGlwZV93
cml0ZShtX3BpcGUuZ2V0KCksIHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVzc2Fn
ZVNpemUpOworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKikKKyAg
ICA6IG1faXNSZXBlYXRpbmcoZmFsc2UpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRp
bWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIg
PSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKworICAgIHRpbWVyLT5m
aXJlZCgpOworCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICB0aW1l
ci0+bV90aW1lciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5D
RUw7CisgICAgfQorCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworfQorCit2b2lk
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wg
cmVwZWF0KQoreworICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7CisgICAgbV90aW1lciA9IGFk
b3B0UHRyKGVjb3JlX3RpbWVyX2FkZChmaXJlSW50ZXJ2YWwsIHJlaW50ZXJwcmV0X2Nhc3Q8RWNv
cmVfVGFza19DYj4odGltZXJGaXJlZCksIHRoaXMpKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0b3AoKQoreworICAgIG1fdGltZXIgPSBudWxscHRyOworfQorCitib29sIFJ1bkxv
b3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiAobV90aW1lcikg
PyB0cnVlIDogZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5kZXggODE1NTNhZWI3NmJmMDRk
YTc4Yjc5ZDczMGQ2MjM4ZWNiZTRhMzVmMC4uYzJmZjdmMTI2ZmM2NmIwZjVjNjY2M2ZmYzFlODY0
NzZiZTJiNmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9D
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIGNsYXNzIFFTb2NrZXROb3RpZmllcjsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oIgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IGQ1NGFmZjg4MmI1ZDc1
MzI5MjFlMDA4NDgxMzlmYTkyZGZjYzk5MjAuLjdjYjFmMzI3ODAxYzAxZTAxYzA1YzM1Y2NhYjZh
OTZhYWEyNzhjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMTUzLDYgKzE1MywxMCBAQCB2b2lkIENv
bm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgbV9zb2NrZXROb3RpZmllciA9IDA7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEVGTCkKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS51bnJl
Z2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvcik7CisjZW5kaWYKKwog
ICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IC0xOwogICAgIG1faXNDb25uZWN0ZWQgPSBmYWxzZTsK
IH0KQEAgLTQyMyw2ICs0MjcsOCBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogI2VsaWYgUExB
VEZPUk0oR1RLKQogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5k
bGVyKG1fc29ja2V0RGVzY3JpcHRvciwgKEdfSU9fSFVQIHwgR19JT19FUlIpLCBiaW5kKCZDb25u
ZWN0aW9uOjpjb25uZWN0aW9uRGlkQ2xvc2UsIHRoaXMpKTsKICAgICBtX2Nvbm5lY3Rpb25RdWV1
ZS5yZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIEdfSU9fSU4s
IGJpbmQoJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIsIHRoaXMpKTsKKyNlbGlmIFBMQVRG
T1JNKEVGTCkKKyAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxl
cihtX3NvY2tldERlc2NyaXB0b3IsIGJpbmQoJkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIs
IHRoaXMpKTsKICNlbmRpZgogCiAgICAgLy8gU2NoZWR1bGUgYSBjYWxsIHRvIHJlYWR5UmVhZEhh
bmRsZXIuIERhdGEgbWF5IGhhdmUgYXJyaXZlZCBiZWZvcmUgaW5zdGFsbGF0aW9uIG9mIHRoZSBz
aWduYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vz
c0lkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lk
ZW50aWZpZXIuaAppbmRleCA1MDIyZGE3OTJjMzg5ZTNhZDA2ZjU5Nzg1N2U4MTI5ODUwYTMwZWE1
Li45Y2FmZDMyOTRjNjMyYmM2YTU4ZGVhZWJmNTQ0NTA5NTIyZWYxYzNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCkBAIC00
Niw2ICs0Niw4IEBAIHR5cGVkZWYgdm9pZCogR1BpZDsKIHR5cGVkZWYgaW50IEdQaWQ7CiAjZW5k
aWYKIHR5cGVkZWYgR1BpZCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOworI2VsaWYgUExBVEZP
Uk0oRUZMKQordHlwZWRlZiBwaWRfdCBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOwogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgK
aW5kZXggZWQ4OTRjYmQzNDc5ZTA1YTQ1MzI2Yzc4M2I2ZTNjMWYzN2QxOWVkYi4uMDk5OWMyMzU0
YWU4NTczMDJlNDI0MDVhOTljOTQyMTg2OTUxMmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29y
a1F1ZXVlLmgKQEAgLTQxLDE1ICs0MSwxOSBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiAoUExBVEZPUk0oUVQpICYmICFPUyhEQVJX
SU4pKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlICJQbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFFUKSAmJiAhT1Mo
REFSV0lOKQogI2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KLSNpbmNsdWRlICJQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmgiCiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUVRocmVhZDsKICNlbGlm
IFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogdHlwZWRlZiBnYm9vbGVhbiAoKkdTb3Vy
Y2VGdW5jKSAoZ3BvaW50ZXIgZGF0YSk7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8
RWNvcmUuaD4KICNlbmRpZgogCiBjbGFzcyBXb3JrUXVldWUgewpAQCAtOTAsNiArOTQsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWdpc3RlckV2ZW50U291cmNlSGFuZGxlcihpbnQsIGludCwgY29u
c3QgRnVuY3Rpb248dm9pZCgpPiYpOwogICAgIHZvaWQgdW5yZWdpc3RlckV2ZW50U291cmNlSGFu
ZGxlcihpbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworI2VsaWYgUExB
VEZPUk0oRUZMKQorICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBjb25z
dCBGdW5jdGlvbjx2b2lkKCk+Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5k
bGVyKGludCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTE3Nyw2ICsxODQsMjcgQEAgcHJpdmF0
ZToKICAgICBjbGFzcyBFdmVudFNvdXJjZTsKICAgICBIYXNoTWFwPGludCwgVmVjdG9yPEV2ZW50
U291cmNlKj4gPiBtX2V2ZW50U291cmNlczsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBWZWN0
b3I8RXZlbnRTb3VyY2UqPiA+OjppdGVyYXRvciBFdmVudFNvdXJjZUl0ZXJhdG9yOyAKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKyAgICBmZF9zZXQgbV9mZFNldDsKKyAgICBpbnQgbV9tYXhGZDsKKyAg
ICBpbnQgbV9yZWFkRnJvbVBpcGVGZDsKKyAgICBpbnQgbV93cml0ZVRvUGlwZUZkOworICAgIGJv
b2wgbV90aHJlYWRMb29wOworCisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4gPiBtX3dvcmtJ
dGVtUXVldWU7CisgICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKKworICAgIGludCBtX3Nv
Y2tldERlc2NyaXB0b3I7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3NvY2tldEV2ZW50SGFuZGxl
cjsKKworICAgIEhhc2hNYXA8aW50LCBPd25QdHI8RWNvcmVfVGltZXI+ID4gbV90aW1lcnM7CisK
KyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UaHJlYWQoY29uc3QgY2hhciopOworICAgIHN0YXRpYyB2
b2lkKiB3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKik7CisgICAgdm9pZCBzY2hlZHVsZVdvcmtB
bmRXYWtlVXAoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgcGVyZm9ybVdvcmso
KTsKKyAgICB2b2lkIHBlcmZvcm1GZFdvcmsoKTsKKyAgICBzdGF0aWMgYm9vbCB0aW1lckZpcmVk
KHZvaWQqKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29y
a1F1ZXVlRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTBiNDY0ODE5YTNlMTdkODBhYjk4ZjBlZDkzZDUz
ODMwZjNhMGVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworY2xh
c3MgVGltZXJXb3JrSXRlbSB7CitwdWJsaWM6CisgICAgVGltZXJXb3JrSXRlbShpbnQgdGltZXJJ
RCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisg
ICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX3F1ZXVlKHF1ZXVlKQor
ICAgICAgICAsIG1fdGltZXJJRCh0aW1lcklEKQorICAgIHsKKyAgICB9CisgICAgflRpbWVyV29y
a0l0ZW0oKSB7IH0KKworICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcXVldWU7IH0KKworICAgIGludCB0aW1lcklEKCkgY29uc3QgeyByZXR1cm4gbV90aW1lcklE
OyB9CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIFdv
cmtRdWV1ZSogbV9xdWV1ZTsKKyAgICBpbnQgbV90aW1lcklEOworfTsKKworc3RhdGljIGNvbnN0
IGludCBpbnZhbGlkU29ja2V0RGVzY3JpcHRvciA9IC0xOworc3RhdGljIGNvbnN0IGludCB0aHJl
YWRNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hhciBmaW5pc2hUaHJlYWRNZXNzYWdl
W10gPSAiRiI7CitzdGF0aWMgY29uc3QgY2hhciB3YWt1cFRocmVhZE1lc3NhZ2VbXSA9ICJXIjsK
KworLy8gV29ya1F1ZXVlCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0
IGNoYXIqIG5hbWUpCit7CisgICAgaW50IGZkc1syXTsKKyAgICBpZiAocGlwZShmZHMpKQorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX3JlYWRGcm9tUGlwZUZkID0gZmRzWzBd
OworICAgIG1fd3JpdGVUb1BpcGVGZCA9IGZkc1sxXTsKKyAgICBGRF9aRVJPKCZtX2ZkU2V0KTsK
KyAgICBGRF9TRVQobV9yZWFkRnJvbVBpcGVGZCwgJm1fZmRTZXQpOworICAgIG1fbWF4RmQgPSBt
X3JlYWRGcm9tUGlwZUZkOworCisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gaW52YWxpZFNvY2tl
dERlc2NyaXB0b3I7CisKKyAgICBtX3RocmVhZExvb3AgPSB0cnVlOworICAgIGNyZWF0ZVRocmVh
ZChyZWludGVycHJldF9jYXN0PFdURjo6VGhyZWFkRnVuY3Rpb24+KCZXb3JrUXVldWU6OndvcmtR
dWV1ZVRocmVhZCksIHRoaXMsIG5hbWUpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bnZhbGlkYXRlKCkKK3sKKyAgICBzZW5kTWVzc2FnZVRvVGhyZWFkKGZpbmlzaFRocmVhZE1lc3Nh
Z2UpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmsoKQoreworICAgIG1fd29ya0l0
ZW1RdWV1ZUxvY2subG9jaygpOworCisgICAgd2hpbGUgKCFtX3dvcmtJdGVtUXVldWUuaXNFbXB0
eSgpKSB7CisgICAgICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gd29ya0l0ZW1RdWV1ZTsK
KyAgICAgICAgbV93b3JrSXRlbVF1ZXVlLnN3YXAod29ya0l0ZW1RdWV1ZSk7CisKKyAgICAgICAg
bV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3b3JrSXRlbVF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgd29ya0l0ZW1RdWV1
ZVtpXSgpOworICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKyAgICB9CisgICAg
bV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZv
cm1GZFdvcmsoKQoreworICAgIGZkX3NldCByZWFkRmRTZXQgPSBtX2ZkU2V0OworCisgICAgaWYg
KHNlbGVjdChtX21heEZkICsgMSwgJnJlYWRGZFNldCwgMCwgMCwgMCkgPj0gMCkgeworICAgICAg
ICBpZiAoRkRfSVNTRVQobV9yZWFkRnJvbVBpcGVGZCwgJnJlYWRGZFNldCkpIHsKKyAgICAgICAg
ICAgIGNoYXIgcmVhZEJ1Zlt0aHJlYWRNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICBpZiAocmVh
ZChtX3JlYWRGcm9tUGlwZUZkLCByZWFkQnVmLCB0aHJlYWRNZXNzYWdlU2l6ZSkgPT0gLTEpCisg
ICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCBmcm9tIFdvcmtRdWV1ZVRo
cmVhZCBwaXBlIik7CisgICAgICAgICAgICBpZiAoIXN0cm5jbXAocmVhZEJ1ZiwgZmluaXNoVGhy
ZWFkTWVzc2FnZSwgdGhyZWFkTWVzc2FnZVNpemUpKQorICAgICAgICAgICAgICAgIG1fdGhyZWFk
TG9vcCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fc29ja2V0RGVzY3JpcHRv
ciAhPSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvciAmJiBGRF9JU1NFVChtX3NvY2tldERlc2NyaXB0
b3IsICZyZWFkRmRTZXQpKQorICAgICAgICAgICAgbV9zb2NrZXRFdmVudEhhbmRsZXIoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIq
IG1lc3NhZ2UpCit7CisgICAgaWYgKHdyaXRlKG1fd3JpdGVUb1BpcGVGZCwgbWVzc2FnZSwgdGhy
ZWFkTWVzc2FnZVNpemUpID09IC0xKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byB3YWtl
IHVwIFdvcmtRdWV1ZSBUaHJlYWQiKTsKK30KKwordm9pZCogV29ya1F1ZXVlOjp3b3JrUXVldWVU
aHJlYWQoV29ya1F1ZXVlKiB3b3JrUXVldWUpCit7CisgICAgd2hpbGUgKHdvcmtRdWV1ZS0+bV90
aHJlYWRMb29wKSB7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybVdvcmsoKTsKKyAgICAgICAg
d29ya1F1ZXVlLT5wZXJmb3JtRmRXb3JrKCk7CisgICAgfQorCisgICAgY2xvc2Uod29ya1F1ZXVl
LT5tX3JlYWRGcm9tUGlwZUZkKTsKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fd3JpdGVUb1BpcGVG
ZCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0
RXZlbnRIYW5kbGVyKGludCBmZCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7
CisgICAgaWYgKG1fc29ja2V0RGVzY3JpcHRvciAhPSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvcikK
KyAgICAgICAgTE9HX0VSUk9SKCIlZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iLCBmZCk7CisKKyAg
ICBtX3NvY2tldERlc2NyaXB0b3IgPSBmZDsKKyAgICBtX3NvY2tldEV2ZW50SGFuZGxlciA9IGZ1
bmN0aW9uOworCisgICAgaWYgKGZkID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOwor
ICAgIEZEX1NFVChmZCwgJm1fZmRTZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3Rl
clNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmQpCit7CisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0g
aW52YWxpZFNvY2tldERlc2NyaXB0b3I7CisKKyAgICBpZiAoZmQgPT0gbV9tYXhGZCkKKyAgICAg
ICAgbV9tYXhGZCA9IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgRkRfQ0xSKGZkLCAmbV9mZFNldCk7
Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtlVXAoY29uc3QgRnVuY3Rp
b248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgaWYgKGZ1bmN0aW9uLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9j
ayk7CisgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChmdW5jdGlvbik7CisgICAgc2VuZE1lc3Nh
Z2VUb1RocmVhZCh3YWt1cFRocmVhZE1lc3NhZ2UpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2goY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgc2NoZWR1bGVX
b3JrQW5kV2FrZVVwKGZ1bmN0aW9uKTsKK30KKworYm9vbCBXb3JrUXVldWU6OnRpbWVyRmlyZWQo
dm9pZCogZGF0YSkKK3sKKyAgICBUaW1lcldvcmtJdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8VGlt
ZXJXb3JrSXRlbSo+KGRhdGEpOworICAgIGlmIChpdGVtICYmIGl0ZW0tPnF1ZXVlKCktPm1faXNW
YWxpZCkgeworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5zY2hlZHVsZVdvcmtBbmRXYWtlVXAoaXRl
bS0+ZnVuY3Rpb24oKSk7CisgICAgICAgIGl0ZW0tPnF1ZXVlKCktPm1fdGltZXJzLnRha2UoaXRl
bS0+dGltZXJJRCgpKTsKKyAgICAgICAgZGVsZXRlIGl0ZW07CisgICAgfQorCisgICAgcmV0dXJu
IEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0
ZXJEZWxheShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbiwgZG91YmxlIGRlbGF5KQor
eworICAgIHN0YXRpYyBpbnQgdGltZXJJZCA9IDA7CisgICAgbV90aW1lcnMuc2V0KHRpbWVySWQs
IGFkb3B0UHRyKGVjb3JlX3RpbWVyX2FkZChkZWxheSwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9U
YXNrX0NiPih0aW1lckZpcmVkKSwgbmV3IFRpbWVyV29ya0l0ZW0odGltZXJJZCwgZnVuY3Rpb24s
IHRoaXMpKSkpOworICAgIHRpbWVySWQrKzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggZDhhNzk3YTZjYjYyNDk2YzZkMzc5M2ZhM2JjNTliYmI5MTE5ZDc4OS4uOWExZjA5YjRiNmY0
OWFkNzI3ODc0ZGY1MTE1NTI2MjM5ODcwMjI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTcsNyArNyw2IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfTElOS19GTEFHUwogCiBMSVNUKEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBQbGF0Zm9ybS9lZmwvTW9kdWxlRWZsLmNwcAotICAg
IFBsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAogICAgIFBsYXRmb3JtL2VmbC9Xb3JrUXVldWVF
ZmwuY3BwCiAgICAgUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133721</attachid>
            <date>2012-03-25 19:33:47 -0700</date>
            <delta_ts>2012-03-25 19:55:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120326113345.patch</filename>
            <type>text/plain</type>
            <size>17837</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uOWZmZGIyMmJmMDgzZTM3MDhhMWNmZDIzMmY5NGEw
ZjdkN2ZkOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTI1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9yIGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMmQ2OThhZTM3ZGIxZjlhN2JlMzU4MDgwNDNlOGFlMzQ1YWNlZjU2ZC4uNTU5ZjNlNTgzNWQw
ZjFiMTU0MDEwMWJhNTY0OTBiZGFjN2M4YTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTAzLTI1ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAg
ICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6
CisgICAgICAgIChXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZs
OjpXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0
ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAg
ICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChGZFdvcmtJdGVt
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAg
IChXb3JrUXVldWU6OkZkV29ya0l0ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6RmRXb3JrSXRlbTo6ZmQpOgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChX
b3JrUXVldWU6OlRpbWVyV29ya0l0ZW06OlRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1
ZXVlOjpUaW1lcldvcmtJdGVtOjp+VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6
OlRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVl
dWVFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6cGVyZm9ybVdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3Jr
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZCk6CisgICAgICAgIChX
b3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCk6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVy
RmRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtl
VXApOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXb3JrUXVldWU6
OnRpbWVyRmlyZWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRp
c3BhdGNoT25UZXJtaW5hdGlvbik6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKwogMjAxMi0wMy0yNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95
QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXRXZWJLaXQg
b24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0NWE4
M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uY2VkNzhhYmMyODZjMGM4YWJlMDRlMmMyYmI3
ZWY4ZjcxYWU1OTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9v
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1f
dGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7Cisg
ICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVw
ZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0OwogICAg
IFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1BpcGU+
IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBi
dWYsIHVuc2lnbmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThjY2Vl
ZGU2NzUzMTExMTc1NjMuLmE3Y2QyYjRlMTFjYjNmMmUzNjVkNzljZTNiYmFkMjk1NzlhMTk0NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjMgKzI3
LDEyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4K
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
c3RhdGljIGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3Qg
Y2hhciB3YWt1cEVjb3JlUGlwZU1lc3NhZ2VbXSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSdW5Mb29wOjpSdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
aW5pdEVmbCA9IGZhbHNlOworCisgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3Vs
ZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFzOwor
ICAgIH0KKworICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlY29yZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVG
aWxlOworICAgIH0KKworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlZGplLiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAgICB9
CisKKyAgICBtX3BpcGUgPSBhZG9wdFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhp
cykpOworICAgIG1faW5pdEVmbCA9IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vycm9yRWRqZToK
KyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7CitlcnJvckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigpOwog
fQogCiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBp
ZiAobV9pbml0RWZsKSB7CisgICAgICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICAgICAgZWNvcmVf
ZmlsZV9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAg
IGVjb3JlX3NodXRkb3duKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7Cisg
ICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7
CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXBF
dmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0
YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKIH0KIAogdm9pZCBSdW5M
b29wOjp3YWtlVXAoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZWNvcmVfcGlwZV93
cml0ZShtX3BpcGUuZ2V0KCksIHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVzc2Fn
ZVNpemUpOworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKikKKyAg
ICA6IG1faXNSZXBlYXRpbmcoZmFsc2UpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRp
bWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIg
PSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKworICAgIHRpbWVyLT5m
aXJlZCgpOworCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICB0aW1l
ci0+bV90aW1lciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5D
RUw7CisgICAgfQorCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworfQorCit2b2lk
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wg
cmVwZWF0KQoreworICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7CisgICAgbV90aW1lciA9IGFk
b3B0UHRyKGVjb3JlX3RpbWVyX2FkZChuZXh0RmlyZUludGVydmFsLCByZWludGVycHJldF9jYXN0
PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCB0aGlzKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6
VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBtX3RpbWVyID0gbnVsbHB0cjsKK30KKworYm9vbCBS
dW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fdGlt
ZXIpID8gdHJ1ZSA6IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDgxNTUzYWViNzZi
ZjA0ZGE3OGI3OWQ3MzBkNjIzOGVjYmU0YTM1ZjAuLmMyZmY3ZjEyNmZjNjZiMGY1YzY2NjNmZmMx
ZTg2NDc2YmUyYjZlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBACiBjbGFzcyBRU29ja2V0Tm90aWZpZXI7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIlBsYXRmb3JtUHJv
Y2Vzc0lkZW50aWZpZXIuaCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBkNTRhZmY4ODJi
NWQ3NTMyOTIxZTAwODQ4MTM5ZmE5MmRmY2M5OTIwLi43Y2IxZjMyNzgwMWMwMWUwMWMwNWMzNWNj
YWI2YTk2YWFhMjc4YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTE1Myw2ICsxNTMsMTAgQEAgdm9p
ZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIG1fc29ja2V0Tm90aWZpZXIg
PSAwOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUu
dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IpOworI2VuZGlm
CisKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSAtMTsKICAgICBtX2lzQ29ubmVjdGVkID0gZmFs
c2U7CiB9CkBAIC00MjMsNiArNDI3LDggQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICNlbGlm
IFBMQVRGT1JNKEdUSykKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291cmNl
SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIChHX0lPX0hVUCB8IEdfSU9fRVJSKSwgYmluZCgm
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlLCB0aGlzKSk7CiAgICAgbV9jb25uZWN0aW9u
UXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBHX0lP
X0lOLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlzKSk7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5k
bGVyLCB0aGlzKSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJl
YWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0
aGUgc2lnbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgKaW5kZXggNTAyMmRhNzkyYzM4OWUzYWQwNmY1OTc4NTdlODEyOTg1MGEz
MGVhNS4uOWNhZmQzMjk0YzYzMmJjNmE1OGRlYWViZjU0NDUwOTUyMmVmMWMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaApA
QCAtNDYsNiArNDYsOCBAQCB0eXBlZGVmIHZvaWQqIEdQaWQ7CiB0eXBlZGVmIGludCBHUGlkOwog
I2VuZGlmCiB0eXBlZGVmIEdQaWQgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKKyNlbGlmIFBM
QVRGT1JNKEVGTCkKK3R5cGVkZWYgcGlkX3QgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKICNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCmluZGV4IGVkODk0Y2JkMzQ3OWUwNWE0NTMyNmM3ODNiNmUzYzFmMzdkMTllZGIuLjA5OTlj
MjM1NGFlODU3MzAyZTQyNDA1YTk5Yzk0MjE4Njk1MTJlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1dvcmtRdWV1ZS5oCkBAIC00MSwxNSArNDEsMTkgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgKFBMQVRGT1JNKFFUKSAmJiAhT1Mo
REFSV0lOKSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkgJiYg
IU9TKERBUldJTikKICNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+Ci0jaW5jbHVkZSAiUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oIgogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFUaHJlYWQ7CiAj
ZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIHR5cGVkZWYgZ2Jvb2xlYW4gKCpH
U291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1
ZGUgPEVjb3JlLmg+CiAjZW5kaWYKIAogY2xhc3MgV29ya1F1ZXVlIHsKQEAgLTkwLDYgKzk0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50LCBpbnQs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFdmVudFNvdXJj
ZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBs
YXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwg
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcihpbnQpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzcsNiArMTg0LDI3IEBAIHBy
aXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxF
dmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwg
VmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgZmRfc2V0IG1fZmRTZXQ7CisgICAgaW50IG1fbWF4RmQ7
CisgICAgaW50IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgaW50IG1fd3JpdGVUb1BpcGVGZDsKKyAg
ICBib29sIG1fdGhyZWFkTG9vcDsKKworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gbV93
b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisKKyAgICBpbnQg
bV9zb2NrZXREZXNjcmlwdG9yOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zb2NrZXRFdmVudEhh
bmRsZXI7CisKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPEVjb3JlX1RpbWVyPiA+IG1fdGltZXJz
OworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0
aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgc2NoZWR1bGVX
b3JrQW5kV2FrZVVwKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyAgICB2b2lkIHBlcmZvcm1X
b3JrKCk7CisgICAgdm9pZCBwZXJmb3JtRmRXb3JrKCk7CisgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkwYjQ2NDgxOWEzZTE3ZDgwYWI5OGYwZWQ5
M2Q1MzgzMGYzYTBlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L2VmbC9Xb3JrUXVldWVFZmwuY3BwCkBAIC0wLDAgKzEsMTgxIEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXb3JrUXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisK
K2NsYXNzIFRpbWVyV29ya0l0ZW0geworcHVibGljOgorICAgIFRpbWVyV29ya0l0ZW0oaW50IHRp
bWVySUQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVl
KQorICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9xdWV1ZShxdWV1
ZSkKKyAgICAgICAgLCBtX3RpbWVySUQodGltZXJJRCkKKyAgICB7CisgICAgfQorICAgIH5UaW1l
cldvcmtJdGVtKCkgeyB9CisKKyAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgIFdvcmtRdWV1ZSogcXVldWUoKSBjb25zdCB7IHJl
dHVybiBtX3F1ZXVlOyB9CisKKyAgICBpbnQgdGltZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXJJRDsgfQorCitwcml2YXRlOgorICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKKyAg
ICBXb3JrUXVldWUqIG1fcXVldWU7CisgICAgaW50IG1fdGltZXJJRDsKK307CisKK3N0YXRpYyBj
b25zdCBpbnQgaW52YWxpZFNvY2tldERlc2NyaXB0b3IgPSAtMTsKK3N0YXRpYyBjb25zdCBpbnQg
dGhyZWFkTWVzc2FnZVNpemUgPSAxOworc3RhdGljIGNvbnN0IGNoYXIgZmluaXNoVGhyZWFkTWVz
c2FnZVtdID0gIkYiOworc3RhdGljIGNvbnN0IGNoYXIgd2FrdXBUaHJlYWRNZXNzYWdlW10gPSAi
VyI7CisKKy8vIFdvcmtRdWV1ZQordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBpcGUoZmRzKSkK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgbV9yZWFkRnJvbVBpcGVGZCA9IGZk
c1swXTsKKyAgICBtX3dyaXRlVG9QaXBlRmQgPSBmZHNbMV07CisgICAgRkRfWkVSTygmbV9mZFNl
dCk7CisgICAgRkRfU0VUKG1fcmVhZEZyb21QaXBlRmQsICZtX2ZkU2V0KTsKKyAgICBtX21heEZk
ID0gbV9yZWFkRnJvbVBpcGVGZDsKKworICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGludmFsaWRT
b2NrZXREZXNjcmlwdG9yOworCisgICAgbV90aHJlYWRMb29wID0gdHJ1ZTsKKyAgICBjcmVhdGVU
aHJlYWQocmVpbnRlcnByZXRfY2FzdDxXVEY6OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3
b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBuYW1lKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRm
b3JtSW52YWxpZGF0ZSgpCit7CisgICAgc2VuZE1lc3NhZ2VUb1RocmVhZChmaW5pc2hUaHJlYWRN
ZXNzYWdlKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dv
cmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKworICAgIHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlz
RW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiA+IHdvcmtJdGVtUXVl
dWU7CisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZS5zd2FwKHdvcmtJdGVtUXVldWUpOworCisgICAg
ICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29ya0l0ZW1RdWV1ZS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVt
UXVldWVbaV0oKTsKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisgICAgfQor
ICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpw
ZXJmb3JtRmRXb3JrKCkKK3sKKyAgICBmZF9zZXQgcmVhZEZkU2V0ID0gbV9mZFNldDsKKworICAg
IGlmIChzZWxlY3QobV9tYXhGZCArIDEsICZyZWFkRmRTZXQsIDAsIDAsIDApID49IDApIHsKKyAg
ICAgICAgaWYgKEZEX0lTU0VUKG1fcmVhZEZyb21QaXBlRmQsICZyZWFkRmRTZXQpKSB7CisgICAg
ICAgICAgICBjaGFyIHJlYWRCdWZbdGhyZWFkTWVzc2FnZVNpemVdOworICAgICAgICAgICAgaWYg
KHJlYWQobV9yZWFkRnJvbVBpcGVGZCwgcmVhZEJ1ZiwgdGhyZWFkTWVzc2FnZVNpemUpID09IC0x
KQorICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJlYWQgZnJvbSBXb3JrUXVl
dWVUaHJlYWQgcGlwZSIpOworICAgICAgICAgICAgaWYgKCFzdHJuY21wKHJlYWRCdWYsIGZpbmlz
aFRocmVhZE1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VTaXplKSkKKyAgICAgICAgICAgICAgICBtX3Ro
cmVhZExvb3AgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3NvY2tldERlc2Ny
aXB0b3IgIT0gaW52YWxpZFNvY2tldERlc2NyaXB0b3IgJiYgRkRfSVNTRVQobV9zb2NrZXREZXNj
cmlwdG9yLCAmcmVhZEZkU2V0KSkKKyAgICAgICAgICAgIG1fc29ja2V0RXZlbnRIYW5kbGVyKCk7
CisgICAgfQorfQorCit2b2lkIFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZChjb25zdCBj
aGFyKiBtZXNzYWdlKQoreworICAgIGlmICh3cml0ZShtX3dyaXRlVG9QaXBlRmQsIG1lc3NhZ2Us
IHRocmVhZE1lc3NhZ2VTaXplKSA9PSAtMSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
d2FrZSB1cCBXb3JrUXVldWUgVGhyZWFkIik7Cit9CisKK3ZvaWQqIFdvcmtRdWV1ZTo6d29ya1F1
ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVlKQoreworICAgIHdoaWxlICh3b3JrUXVldWUt
Pm1fdGhyZWFkTG9vcCkgeworICAgICAgICB3b3JrUXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAg
ICAgIHdvcmtRdWV1ZS0+cGVyZm9ybUZkV29yaygpOworICAgIH0KKworICAgIGNsb3NlKHdvcmtR
dWV1ZS0+bV9yZWFkRnJvbVBpcGVGZCk7CisgICAgY2xvc2Uod29ya1F1ZXVlLT5tX3dyaXRlVG9Q
aXBlRmQpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlclNv
Y2tldEV2ZW50SGFuZGxlcihpbnQgZmQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQoreworICAgIGlmIChtX3NvY2tldERlc2NyaXB0b3IgIT0gaW52YWxpZFNvY2tldERlc2NyaXB0
b3IpCisgICAgICAgIExPR19FUlJPUigiJWQgaXMgYWxyZWFkeSByZWdpc3RlcmQuIiwgZmQpOwor
CisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gZmQ7CisgICAgbV9zb2NrZXRFdmVudEhhbmRsZXIg
PSBmdW5jdGlvbjsKKworICAgIGlmIChmZCA+IG1fbWF4RmQpCisgICAgICAgIG1fbWF4RmQgPSBm
ZDsKKyAgICBGRF9TRVQoZmQsICZtX2ZkU2V0KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnVucmVn
aXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZkKQoreworICAgIG1fc29ja2V0RGVzY3JpcHRv
ciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOworCisgICAgaWYgKGZkID09IG1fbWF4RmQpCisg
ICAgICAgIG1fbWF4RmQgPSBtX3JlYWRGcm9tUGlwZUZkOworICAgIEZEX0NMUihmZCwgJm1fZmRT
ZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6c2NoZWR1bGVXb3JrQW5kV2FrZVVwKGNvbnN0IEZ1
bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIGlmIChmdW5jdGlvbi5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1
ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoZnVuY3Rpb24pOworICAgIHNlbmRN
ZXNzYWdlVG9UaHJlYWQod2FrdXBUaHJlYWRNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrUXVldWU6
OmRpc3BhdGNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIHNjaGVk
dWxlV29ya0FuZFdha2VVcChmdW5jdGlvbik7Cit9CisKK2Jvb2wgV29ya1F1ZXVlOjp0aW1lckZp
cmVkKHZvaWQqIGRhdGEpCit7CisgICAgVGltZXJXb3JrSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0
PFRpbWVyV29ya0l0ZW0qPihkYXRhKTsKKyAgICBpZiAoaXRlbSAmJiBpdGVtLT5xdWV1ZSgpLT5t
X2lzVmFsaWQpIHsKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+c2NoZWR1bGVXb3JrQW5kV2FrZVVw
KGl0ZW0tPmZ1bmN0aW9uKCkpOworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5tX3RpbWVycy50YWtl
KGl0ZW0tPnRpbWVySUQoKSk7CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKworICAgIHJl
dHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aEFmdGVyRGVsYXkoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxh
eSkKK3sKKyAgICBzdGF0aWMgaW50IHRpbWVySWQgPSAwOworICAgIG1fdGltZXJzLnNldCh0aW1l
cklkLCBhZG9wdFB0cihlY29yZV90aW1lcl9hZGQoZGVsYXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWNv
cmVfVGFza19DYj4odGltZXJGaXJlZCksIG5ldyBUaW1lcldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0
aW9uLCB0aGlzKSkpKTsKKyAgICB0aW1lcklkKys7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IGQ4YTc5N2E2Y2I2MjQ5NmM2ZDM3OTNmYTNiYzU5YmJiOTExOWQ3ODkuLjlhMWYwOWI0
YjZmNDlhZDcyNzg3NGRmNTExNTUyNjIzOTg3MDIyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC03LDcgKzcsNiBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0xJTktfRkxBR1MKIAogTElT
VChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAK
LSAgICBQbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwvV29ya1F1
ZXVlRWZsLmNwcAogICAgIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133725</attachid>
            <date>2012-03-25 19:55:50 -0700</date>
            <delta_ts>2012-03-25 20:35:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120326115548.patch</filename>
            <type>text/plain</type>
            <size>17600</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uOWZmZGIyMmJmMDgzZTM3MDhhMWNmZDIzMmY5NGEw
ZjdkN2ZkOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTI1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9yIGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMmQ2OThhZTM3ZGIxZjlhN2JlMzU4MDgwNDNlOGFlMzQ1YWNlZjU2ZC4uNTU5ZjNlNTgzNWQw
ZjFiMTU0MDEwMWJhNTY0OTBiZGFjN2M4YTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTAzLTI1ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoQ29ubmVjdGlvbik6CisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAg
KENvcmVJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAg
ICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6
CisgICAgICAgIChXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZs
OjpXb3JrSXRlbUVmbCk6CisgICAgICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjp+V29ya0l0
ZW1FZmwpOgorICAgICAgICAoV29ya1F1ZXVlOjpXb3JrSXRlbUVmbDo6ZXhlY3V0ZSk6CisgICAg
ICAgIChXb3JrUXVldWU6OldvcmtJdGVtRWZsOjpxdWV1ZSk6CisgICAgICAgIChGZFdvcmtJdGVt
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6RmRXb3JrSXRlbTo6RmRXb3JrSXRlbSk6CisgICAgICAg
IChXb3JrUXVldWU6OkZkV29ya0l0ZW06On5GZFdvcmtJdGVtKToKKyAgICAgICAgKFdvcmtRdWV1
ZTo6RmRXb3JrSXRlbTo6ZmQpOgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChX
b3JrUXVldWU6OlRpbWVyV29ya0l0ZW06OlRpbWVyV29ya0l0ZW0pOgorICAgICAgICAoV29ya1F1
ZXVlOjpUaW1lcldvcmtJdGVtOjp+VGltZXJXb3JrSXRlbSk6CisgICAgICAgIChXb3JrUXVldWU6
OlRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAqIFBsYXRmb3JtL2VmbC9Xb3JrUXVl
dWVFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6cGVyZm9ybVdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtRmRXb3Jr
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6c2VuZE1lc3NhZ2VUb1RocmVhZCk6CisgICAgICAgIChX
b3JrUXVldWU6OndvcmtRdWV1ZVRocmVhZCk6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVy
RmRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV29ya1F1ZXVlOjpzY2hlZHVsZVdvcmtBbmRXYWtl
VXApOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChXb3JrUXVldWU6
OnRpbWVyRmlyZWQpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkpOgor
ICAgICAgICAoV29ya1F1ZXVlOjpleGl0SGFuZGxlcik6CisgICAgICAgIChXb3JrUXVldWU6OmRp
c3BhdGNoT25UZXJtaW5hdGlvbik6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKToKKwogMjAxMi0wMy0yNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95
QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXRXZWJLaXQg
b24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29w
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0NWE4
M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uY2VkNzhhYmMyODZjMGM4YWJlMDRlMmMyYmI3
ZWY4ZjcxYWU1OTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9v
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1f
dGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7Cisg
ICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lzUmVw
ZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0OwogICAg
IFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1BpcGU+
IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBi
dWYsIHVuc2lnbmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThjY2Vl
ZGU2NzUzMTExMTc1NjMuLmE3Y2QyYjRlMTFjYjNmMmUzNjVkNzljZTNiYmFkMjk1NzlhMTk0NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0
ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjMgKzI3
LDEyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4K
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
c3RhdGljIGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3Qg
Y2hhciB3YWt1cEVjb3JlUGlwZU1lc3NhZ2VbXSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSdW5Mb29wOjpSdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
aW5pdEVmbCA9IGZhbHNlOworCisgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJjb3Vs
ZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFzOwor
ICAgIH0KKworICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlY29yZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVG
aWxlOworICAgIH0KKworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJjb3VsZCBub3QgaW5pdCBlZGplLiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAgICB9
CisKKyAgICBtX3BpcGUgPSBhZG9wdFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwgdGhp
cykpOworICAgIG1faW5pdEVmbCA9IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vycm9yRWRqZToK
KyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7CitlcnJvckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigpOwog
fQogCiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBp
ZiAobV9pbml0RWZsKSB7CisgICAgICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICAgICAgZWNvcmVf
ZmlsZV9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAgICAg
IGVjb3JlX3NodXRkb3duKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7Cisg
ICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgpCit7
CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXBF
dmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0
YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKIH0KIAogdm9pZCBSdW5M
b29wOjp3YWtlVXAoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZWNvcmVfcGlwZV93
cml0ZShtX3BpcGUuZ2V0KCksIHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVzc2Fn
ZVNpemUpOworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKikKKyAg
ICA6IG1faXNSZXBlYXRpbmcoZmFsc2UpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRp
bWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGltZXIg
PSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKworICAgIHRpbWVyLT5m
aXJlZCgpOworCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICB0aW1l
ci0+bV90aW1lciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5D
RUw7CisgICAgfQorCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworfQorCit2b2lk
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wg
cmVwZWF0KQoreworICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7CisgICAgbV90aW1lciA9IGFk
b3B0UHRyKGVjb3JlX3RpbWVyX2FkZChuZXh0RmlyZUludGVydmFsLCByZWludGVycHJldF9jYXN0
PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCB0aGlzKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6
VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBtX3RpbWVyID0gbnVsbHB0cjsKK30KKworYm9vbCBS
dW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fdGlt
ZXIpID8gdHJ1ZSA6IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDgxNTUzYWViNzZi
ZjA0ZGE3OGI3OWQ3MzBkNjIzOGVjYmU0YTM1ZjAuLmMyZmY3ZjEyNmZjNjZiMGY1YzY2NjNmZmMx
ZTg2NDc2YmUyYjZlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBACiBjbGFzcyBRU29ja2V0Tm90aWZpZXI7CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQp
IHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIlBsYXRmb3JtUHJv
Y2Vzc0lkZW50aWZpZXIuaCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBkNTRhZmY4ODJi
NWQ3NTMyOTIxZTAwODQ4MTM5ZmE5MmRmY2M5OTIwLi43Y2IxZjMyNzgwMWMwMWUwMWMwNWMzNWNj
YWI2YTk2YWFhMjc4YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3Jl
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTE1Myw2ICsxNTMsMTAgQEAgdm9p
ZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIG1fc29ja2V0Tm90aWZpZXIg
PSAwOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUu
dW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IpOworI2VuZGlm
CisKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSAtMTsKICAgICBtX2lzQ29ubmVjdGVkID0gZmFs
c2U7CiB9CkBAIC00MjMsNiArNDI3LDggQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICNlbGlm
IFBMQVRGT1JNKEdUSykKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291cmNl
SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIChHX0lPX0hVUCB8IEdfSU9fRVJSKSwgYmluZCgm
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlLCB0aGlzKSk7CiAgICAgbV9jb25uZWN0aW9u
UXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBHX0lP
X0lOLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlzKSk7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5k
bGVyLCB0aGlzKSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJl
YWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0
aGUgc2lnbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgKaW5kZXggNTAyMmRhNzkyYzM4OWUzYWQwNmY1OTc4NTdlODEyOTg1MGEz
MGVhNS4uOWNhZmQzMjk0YzYzMmJjNmE1OGRlYWViZjU0NDUwOTUyMmVmMWMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaApA
QCAtNDYsNiArNDYsOCBAQCB0eXBlZGVmIHZvaWQqIEdQaWQ7CiB0eXBlZGVmIGludCBHUGlkOwog
I2VuZGlmCiB0eXBlZGVmIEdQaWQgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKKyNlbGlmIFBM
QVRGT1JNKEVGTCkKK3R5cGVkZWYgcGlkX3QgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKICNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1
ZS5oCmluZGV4IGVkODk0Y2JkMzQ3OWUwNWE0NTMyNmM3ODNiNmUzYzFmMzdkMTllZGIuLjI3NWU0
NGY4OGY1MTAzZWUxZDZhYTg5ZTBhZDcwYjU5NzcyMDM4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L1dvcmtRdWV1ZS5oCkBAIC00MSwxNSArNDEsMTkgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgKFBMQVRGT1JNKFFUKSAmJiAhT1Mo
REFSV0lOKSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaW5jbHVkZSAiUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkgJiYg
IU9TKERBUldJTikKICNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+Ci0jaW5jbHVkZSAiUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllci5oIgogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFUaHJlYWQ7CiAj
ZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIHR5cGVkZWYgZ2Jvb2xlYW4gKCpH
U291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1
ZGUgPEVjb3JlLmg+CiAjZW5kaWYKIAogY2xhc3MgV29ya1F1ZXVlIHsKQEAgLTkwLDYgKzk0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50LCBpbnQs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFdmVudFNvdXJj
ZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6OlBs
YXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwg
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcihpbnQpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzcsNiArMTg0LDI2IEBAIHBy
aXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3RvcjxF
dmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwg
VmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsgCisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgZmRfc2V0IG1fZmRTZXQ7CisgICAgaW50IG1fbWF4RmQ7
CisgICAgaW50IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgaW50IG1fd3JpdGVUb1BpcGVGZDsKKyAg
ICBib29sIG1fdGhyZWFkTG9vcDsKKworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gbV93
b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisKKyAgICBpbnQg
bV9zb2NrZXREZXNjcmlwdG9yOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zb2NrZXRFdmVudEhh
bmRsZXI7CisKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPEVjb3JlX1RpbWVyPiA+IG1fdGltZXJz
OworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAgICBzdGF0
aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgcGVyZm9ybVdv
cmsoKTsKKyAgICB2b2lkIHBlcmZvcm1GZFdvcmsoKTsKKyAgICBzdGF0aWMgYm9vbCB0aW1lckZp
cmVkKHZvaWQqKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwv
V29ya1F1ZXVlRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmZlYmU2NDllZTQ0YWVlZTg1NzEzMDdmZjgy
MWQwNzEyMzgxZDdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
ZWZsL1dvcmtRdWV1ZUVmbC5jcHAKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKwor
Y2xhc3MgVGltZXJXb3JrSXRlbSB7CitwdWJsaWM6CisgICAgVGltZXJXb3JrSXRlbShpbnQgdGlt
ZXJJRCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUp
CisgICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX3F1ZXVlKHF1ZXVl
KQorICAgICAgICAsIG1fdGltZXJJRCh0aW1lcklEKQorICAgIHsKKyAgICB9CisgICAgflRpbWVy
V29ya0l0ZW0oKSB7IH0KKworICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcXVldWU7IH0KKworICAgIGludCB0aW1lcklEKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
cklEOyB9CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAg
IFdvcmtRdWV1ZSogbV9xdWV1ZTsKKyAgICBpbnQgbV90aW1lcklEOworfTsKKworc3RhdGljIGNv
bnN0IGludCBpbnZhbGlkU29ja2V0RGVzY3JpcHRvciA9IC0xOworc3RhdGljIGNvbnN0IGludCB0
aHJlYWRNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hhciBmaW5pc2hUaHJlYWRNZXNz
YWdlW10gPSAiRiI7CitzdGF0aWMgY29uc3QgY2hhciB3YWt1cFRocmVhZE1lc3NhZ2VbXSA9ICJX
IjsKKworLy8gV29ya1F1ZXVlCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNv
bnN0IGNoYXIqIG5hbWUpCit7CisgICAgaW50IGZkc1syXTsKKyAgICBpZiAocGlwZShmZHMpKQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX3JlYWRGcm9tUGlwZUZkID0gZmRz
WzBdOworICAgIG1fd3JpdGVUb1BpcGVGZCA9IGZkc1sxXTsKKyAgICBGRF9aRVJPKCZtX2ZkU2V0
KTsKKyAgICBGRF9TRVQobV9yZWFkRnJvbVBpcGVGZCwgJm1fZmRTZXQpOworICAgIG1fbWF4RmQg
PSBtX3JlYWRGcm9tUGlwZUZkOworCisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gaW52YWxpZFNv
Y2tldERlc2NyaXB0b3I7CisKKyAgICBtX3RocmVhZExvb3AgPSB0cnVlOworICAgIGNyZWF0ZVRo
cmVhZChyZWludGVycHJldF9jYXN0PFdURjo6VGhyZWFkRnVuY3Rpb24+KCZXb3JrUXVldWU6Ondv
cmtRdWV1ZVRocmVhZCksIHRoaXMsIG5hbWUpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZv
cm1JbnZhbGlkYXRlKCkKK3sKKyAgICBzZW5kTWVzc2FnZVRvVGhyZWFkKGZpbmlzaFRocmVhZE1l
c3NhZ2UpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmsoKQoreworICAgIG1fd29y
a0l0ZW1RdWV1ZUxvY2subG9jaygpOworCisgICAgd2hpbGUgKCFtX3dvcmtJdGVtUXVldWUuaXNF
bXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gd29ya0l0ZW1RdWV1
ZTsKKyAgICAgICAgbV93b3JrSXRlbVF1ZXVlLnN3YXAod29ya0l0ZW1RdWV1ZSk7CisKKyAgICAg
ICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3b3JrSXRlbVF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgd29ya0l0ZW1R
dWV1ZVtpXSgpOworICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKyAgICB9Cisg
ICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBl
cmZvcm1GZFdvcmsoKQoreworICAgIGZkX3NldCByZWFkRmRTZXQgPSBtX2ZkU2V0OworCisgICAg
aWYgKHNlbGVjdChtX21heEZkICsgMSwgJnJlYWRGZFNldCwgMCwgMCwgMCkgPj0gMCkgeworICAg
ICAgICBpZiAoRkRfSVNTRVQobV9yZWFkRnJvbVBpcGVGZCwgJnJlYWRGZFNldCkpIHsKKyAgICAg
ICAgICAgIGNoYXIgcmVhZEJ1Zlt0aHJlYWRNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICBpZiAo
cmVhZChtX3JlYWRGcm9tUGlwZUZkLCByZWFkQnVmLCB0aHJlYWRNZXNzYWdlU2l6ZSkgPT0gLTEp
CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCBmcm9tIFdvcmtRdWV1
ZVRocmVhZCBwaXBlIik7CisgICAgICAgICAgICBpZiAoIXN0cm5jbXAocmVhZEJ1ZiwgZmluaXNo
VGhyZWFkTWVzc2FnZSwgdGhyZWFkTWVzc2FnZVNpemUpKQorICAgICAgICAgICAgICAgIG1fdGhy
ZWFkTG9vcCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fc29ja2V0RGVzY3Jp
cHRvciAhPSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvciAmJiBGRF9JU1NFVChtX3NvY2tldERlc2Ny
aXB0b3IsICZyZWFkRmRTZXQpKQorICAgICAgICAgICAgbV9zb2NrZXRFdmVudEhhbmRsZXIoKTsK
KyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNo
YXIqIG1lc3NhZ2UpCit7CisgICAgaWYgKHdyaXRlKG1fd3JpdGVUb1BpcGVGZCwgbWVzc2FnZSwg
dGhyZWFkTWVzc2FnZVNpemUpID09IC0xKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byB3
YWtlIHVwIFdvcmtRdWV1ZSBUaHJlYWQiKTsKK30KKwordm9pZCogV29ya1F1ZXVlOjp3b3JrUXVl
dWVUaHJlYWQoV29ya1F1ZXVlKiB3b3JrUXVldWUpCit7CisgICAgd2hpbGUgKHdvcmtRdWV1ZS0+
bV90aHJlYWRMb29wKSB7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybVdvcmsoKTsKKyAgICAg
ICAgd29ya1F1ZXVlLT5wZXJmb3JtRmRXb3JrKCk7CisgICAgfQorCisgICAgY2xvc2Uod29ya1F1
ZXVlLT5tX3JlYWRGcm9tUGlwZUZkKTsKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fd3JpdGVUb1Bp
cGVGZCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29j
a2V0RXZlbnRIYW5kbGVyKGludCBmZCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24p
Cit7CisgICAgaWYgKG1fc29ja2V0RGVzY3JpcHRvciAhPSBpbnZhbGlkU29ja2V0RGVzY3JpcHRv
cikKKyAgICAgICAgTE9HX0VSUk9SKCIlZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iLCBmZCk7CisK
KyAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBmZDsKKyAgICBtX3NvY2tldEV2ZW50SGFuZGxlciA9
IGZ1bmN0aW9uOworCisgICAgaWYgKGZkID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZk
OworICAgIEZEX1NFVChmZCwgJm1fZmRTZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdp
c3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQgZmQpCit7CisgICAgbV9zb2NrZXREZXNjcmlwdG9y
ID0gaW52YWxpZFNvY2tldERlc2NyaXB0b3I7CisKKyAgICBpZiAoZmQgPT0gbV9tYXhGZCkKKyAg
ICAgICAgbV9tYXhGZCA9IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgRkRfQ0xSKGZkLCAmbV9mZFNl
dCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9j
ayk7CisgICAgbV93b3JrSXRlbVF1ZXVlLmFwcGVuZChmdW5jdGlvbik7CisgICAgc2VuZE1lc3Nh
Z2VUb1RocmVhZCh3YWt1cFRocmVhZE1lc3NhZ2UpOworfQorCitib29sIFdvcmtRdWV1ZTo6dGlt
ZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFRpbWVyV29ya0l0ZW0qIGl0ZW0gPSBzdGF0aWNf
Y2FzdDxUaW1lcldvcmtJdGVtKj4oZGF0YSk7CisgICAgaWYgKGl0ZW0gJiYgaXRlbS0+cXVldWUo
KS0+bV9pc1ZhbGlkKSB7CisgICAgICAgIGl0ZW0tPnF1ZXVlKCktPmRpc3BhdGNoKGl0ZW0tPmZ1
bmN0aW9uKCkpOworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5tX3RpbWVycy50YWtlKGl0ZW0tPnRp
bWVySUQoKSk7CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKworICAgIHJldHVybiBFQ09S
RV9DQUxMQkFDS19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVs
YXkoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxheSkKK3sKKyAg
ICBzdGF0aWMgaW50IHRpbWVySWQgPSAwOworICAgIG1fdGltZXJzLnNldCh0aW1lcklkLCBhZG9w
dFB0cihlY29yZV90aW1lcl9hZGQoZGVsYXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWNvcmVfVGFza19D
Yj4odGltZXJGaXJlZCksIG5ldyBUaW1lcldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0aW9uLCB0aGlz
KSkpKTsKKyAgICB0aW1lcklkKys7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGQ4
YTc5N2E2Y2I2MjQ5NmM2ZDM3OTNmYTNiYzU5YmJiOTExOWQ3ODkuLjlhMWYwOWI0YjZmNDlhZDcy
Nzg3NGRmNTExNTUyNjIzOTg3MDIyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03
LDcgKzcsNiBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0xJTktfRkxBR1MKIAogTElTVChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKLSAgICBQbGF0
Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNw
cAogICAgIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133726</attachid>
            <date>2012-03-25 20:35:16 -0700</date>
            <delta_ts>2012-03-25 21:23:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120326123514.patch</filename>
            <type>text/plain</type>
            <size>17078</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uOWZmZGIyMmJmMDgzZTM3MDhhMWNmZDIzMmY5NGEw
ZjdkN2ZkOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTI1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9yIGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMmQ2OThhZTM3ZGIxZjlhN2JlMzU4MDgwNDNlOGFlMzQ1YWNlZjU2ZC4uZGEwZTRhODBlZjBi
N2Q1ODFlZmE2ZDEyZjhmZTdiOWMwYWI0MWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBA
CisyMDEyLTAzLTI1ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpw
bGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6b3Blbik6
CisgICAgICAgICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdv
cmtRdWV1ZSk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1l
cldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06On5UaW1lcldvcmtJdGVtKToKKyAg
ICAgICAgKFRpbWVyV29ya0l0ZW06OmZ1bmN0aW9uKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06
OnF1ZXVlKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAoV29y
a1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9y
bUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtV29yayk6CisgICAgICAg
IChXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpzZW5kTWVz
c2FnZVRvVGhyZWFkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KToKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKwogMjAxMi0wMy0yNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFl
cm95QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXRXZWJL
aXQgb24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5M
b29wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0
NWE4M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uY2VkNzhhYmMyODZjMGM4YWJlMDRlMmMy
YmI3ZWY4ZjcxYWU1OTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVu
TG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiAr
MzksMTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+
IG1fdGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7
CisgICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lz
UmVwZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0Owog
ICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1Bp
cGU+IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lk
KiBidWYsIHVuc2lnbmVkIGludCBzaXplKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThj
Y2VlZGU2NzUzMTExMTc1NjMuLmE3Y2QyYjRlMTFjYjNmMmUzNjVkNzljZTNiYmFkMjk1NzlhMTk0
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1
bmcgRWxlY3Ryb25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjMg
KzI3LDEyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRl
IDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
Kworc3RhdGljIGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29u
c3QgY2hhciB3YWt1cEVjb3JlUGlwZU1lc3NhZ2VbXSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBSdW5Mb29wOjpSdW5Mb29wKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1faW5pdEVmbCA9IGZhbHNlOworCisgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghZWNvcmVfZXZhc19pbml0KCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJj
b3VsZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOworICAgICAgICBnb3RvIGVycm9yRWNvcmVFdmFz
OworICAgIH0KKworICAgIGlmICghZWNvcmVfZmlsZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJjb3VsZCBub3QgaW5pdCBlY29yZV9maWxlLiIpOworICAgICAgICBnb3RvIGVycm9yRWNv
cmVGaWxlOworICAgIH0KKworICAgIGlmICghZWRqZV9pbml0KCkpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJjb3VsZCBub3QgaW5pdCBlZGplLiIpOworICAgICAgICBnb3RvIGVycm9yRWRqZTsKKyAg
ICB9CisKKyAgICBtX3BpcGUgPSBhZG9wdFB0cihlY29yZV9waXBlX2FkZCh3YWtlVXBFdmVudCwg
dGhpcykpOworICAgIG1faW5pdEVmbCA9IHRydWU7CisKKyAgICByZXR1cm47CisKK2Vycm9yRWRq
ZToKKyAgICBlY29yZV9maWxlX3NodXRkb3duKCk7CitlcnJvckVjb3JlRmlsZToKKyAgICBlY29y
ZV9ldmFzX3NodXRkb3duKCk7CitlcnJvckVjb3JlRXZhczoKKyAgICBlY29yZV9zaHV0ZG93bigp
OwogfQogCiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAobV9pbml0RWZsKSB7CisgICAgICAgIGVkamVfc2h1dGRvd24oKTsKKyAgICAgICAgZWNv
cmVfZmlsZV9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAg
ICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7
CisgICAgZWNvcmVfbWFpbl9sb29wX2JlZ2luKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c3RvcCgp
Cit7CisgICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKK30KKwordm9pZCBSdW5Mb29wOjp3YWtl
VXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiBidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworICAg
IHN0YXRpY19jYXN0PFJ1bkxvb3AqPihkYXRhKS0+cGVyZm9ybVdvcmsoKTsKIH0KIAogdm9pZCBS
dW5Mb29wOjp3YWtlVXAoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgZWNvcmVfcGlw
ZV93cml0ZShtX3BpcGUuZ2V0KCksIHdha3VwRWNvcmVQaXBlTWVzc2FnZSwgZWNvcmVQaXBlTWVz
c2FnZVNpemUpOworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wKikK
KyAgICA6IG1faXNSZXBlYXRpbmcoZmFsc2UpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6
flRpbWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6dGltZXJGaXJlZCh2b2lkKiBkYXRhKQoreworICAgIFJ1bkxvb3A6OlRpbWVyQmFzZSogdGlt
ZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wOjpUaW1lckJhc2UqPihkYXRhKTsKKworICAgIHRpbWVy
LT5maXJlZCgpOworCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICB0
aW1lci0+bV90aW1lciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19D
QU5DRUw7CisgICAgfQorCisgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX1JFTkVXOworfQorCit2
b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGJv
b2wgcmVwZWF0KQoreworICAgIG1faXNSZXBlYXRpbmcgPSByZXBlYXQ7CisgICAgbV90aW1lciA9
IGFkb3B0UHRyKGVjb3JlX3RpbWVyX2FkZChuZXh0RmlyZUludGVydmFsLCByZWludGVycHJldF9j
YXN0PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCB0aGlzKSk7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBtX3RpbWVyID0gbnVsbHB0cjsKK30KKworYm9v
bCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1f
dGltZXIpID8gdHJ1ZSA6IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCmluZGV4IDgxNTUzYWVi
NzZiZjA0ZGE3OGI3OWQ3MzBkNjIzOGVjYmU0YTM1ZjAuLmMyZmY3ZjEyNmZjNjZiMGY1YzY2NjNm
ZmMxZTg2NDc2YmUyYjZlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
Q29ubmVjdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBACiBjbGFzcyBRU29ja2V0Tm90aWZpZXI7CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgIlBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIuaCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBkNTRhZmY4
ODJiNWQ3NTMyOTIxZTAwODQ4MTM5ZmE5MmRmY2M5OTIwLi43Y2IxZjMyNzgwMWMwMWUwMWMwNWMz
NWNjYWI2YTk2YWFhMjc4YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTE1Myw2ICsxNTMsMTAgQEAg
dm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAgIG1fc29ja2V0Tm90aWZp
ZXIgPSAwOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVl
dWUudW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IpOworI2Vu
ZGlmCisKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSAtMTsKICAgICBtX2lzQ29ubmVjdGVkID0g
ZmFsc2U7CiB9CkBAIC00MjMsNiArNDI3LDggQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICNl
bGlmIFBMQVRGT1JNKEdUSykKICAgICBtX2Nvbm5lY3Rpb25RdWV1ZS5yZWdpc3RlckV2ZW50U291
cmNlSGFuZGxlcihtX3NvY2tldERlc2NyaXB0b3IsIChHX0lPX0hVUCB8IEdfSU9fRVJSKSwgYmlu
ZCgmQ29ubmVjdGlvbjo6Y29ubmVjdGlvbkRpZENsb3NlLCB0aGlzKSk7CiAgICAgbV9jb25uZWN0
aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBH
X0lPX0lOLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyLCB0aGlzKSk7CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJTb2NrZXRFdmVu
dEhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yLCBiaW5kKCZDb25uZWN0aW9uOjpyZWFkeVJlYWRI
YW5kbGVyLCB0aGlzKSk7CiAjZW5kaWYKIAogICAgIC8vIFNjaGVkdWxlIGEgY2FsbCB0byByZWFk
eVJlYWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBv
ZiB0aGUgc2lnbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmgKaW5kZXggNTAyMmRhNzkyYzM4OWUzYWQwNmY1OTc4NTdlODEyOTg1
MGEzMGVhNS4uOWNhZmQzMjk0YzYzMmJjNmE1OGRlYWViZjU0NDUwOTUyMmVmMWMzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIu
aApAQCAtNDYsNiArNDYsOCBAQCB0eXBlZGVmIHZvaWQqIEdQaWQ7CiB0eXBlZGVmIGludCBHUGlk
OwogI2VuZGlmCiB0eXBlZGVmIEdQaWQgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKK3R5cGVkZWYgcGlkX3QgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcjsK
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtR
dWV1ZS5oCmluZGV4IGVkODk0Y2JkMzQ3OWUwNWE0NTMyNmM3ODNiNmUzYzFmMzdkMTllZGIuLjI3
NWU0NGY4OGY1MTAzZWUxZDZhYTg5ZTBhZDcwYjU5NzcyMDM4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL1dvcmtRdWV1ZS5oCkBAIC00MSwxNSArNDEsMTkgQEAKICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgKFBMQVRGT1JNKFFUKSAmJiAh
T1MoREFSV0lOKSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaW5jbHVkZSAi
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShRVCkg
JiYgIU9TKERBUldJTikKICNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+Ci0jaW5jbHVkZSAiUGxh
dGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFUaHJlYWQ7
CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIHR5cGVkZWYgZ2Jvb2xlYW4g
KCpHU291cmNlRnVuYykgKGdwb2ludGVyIGRhdGEpOworI2VsaWYgUExBVEZPUk0oRUZMKQorI2lu
Y2x1ZGUgPEVjb3JlLmg+CiAjZW5kaWYKIAogY2xhc3MgV29ya1F1ZXVlIHsKQEAgLTkwLDYgKzk0
LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIoaW50LCBp
bnQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJFdmVudFNv
dXJjZUhhbmRsZXIoaW50KTsKICAgICB2b2lkIGRpc3BhdGNoT25UZXJtaW5hdGlvbihXZWJLaXQ6
OlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyNl
bGlmIFBMQVRGT1JNKEVGTCkKKyAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGlu
dCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2
ZW50SGFuZGxlcihpbnQpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xNzcsNiArMTg0LDI2IEBA
IHByaXZhdGU6CiAgICAgY2xhc3MgRXZlbnRTb3VyY2U7CiAgICAgSGFzaE1hcDxpbnQsIFZlY3Rv
cjxFdmVudFNvdXJjZSo+ID4gbV9ldmVudFNvdXJjZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGlu
dCwgVmVjdG9yPEV2ZW50U291cmNlKj4gPjo6aXRlcmF0b3IgRXZlbnRTb3VyY2VJdGVyYXRvcjsg
CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgZmRfc2V0IG1fZmRTZXQ7CisgICAgaW50IG1fbWF4
RmQ7CisgICAgaW50IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgaW50IG1fd3JpdGVUb1BpcGVGZDsK
KyAgICBib29sIG1fdGhyZWFkTG9vcDsKKworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4g
bV93b3JrSXRlbVF1ZXVlOworICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CisKKyAgICBp
bnQgbV9zb2NrZXREZXNjcmlwdG9yOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zb2NrZXRFdmVu
dEhhbmRsZXI7CisKKyAgICBIYXNoTWFwPGludCwgT3duUHRyPEVjb3JlX1RpbWVyPiA+IG1fdGlt
ZXJzOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqKTsKKyAgICBz
dGF0aWMgdm9pZCogd29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAgIHZvaWQgcGVyZm9y
bVdvcmsoKTsKKyAgICB2b2lkIHBlcmZvcm1GZFdvcmsoKTsKKyAgICBzdGF0aWMgYm9vbCB0aW1l
ckZpcmVkKHZvaWQqKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9l
ZmwvV29ya1F1ZXVlRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGM0NTU1YWNkOWRlNGZkYTQ4MjM5YjQ4
ZmY2N2FhMTcxZjJlZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHAKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
KworY2xhc3MgVGltZXJXb3JrSXRlbSB7CitwdWJsaWM6CisgICAgVGltZXJXb3JrSXRlbShpbnQg
dGltZXJJRCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVl
dWUpCisgICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX3F1ZXVlKHF1
ZXVlKQorICAgICAgICAsIG1fdGltZXJJRCh0aW1lcklEKQorICAgIHsKKyAgICB9CisgICAgflRp
bWVyV29ya0l0ZW0oKSB7IH0KKworICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcXVldWU7IH0KKworICAgIGludCB0aW1lcklEKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lcklEOyB9CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwor
ICAgIFdvcmtRdWV1ZSogbV9xdWV1ZTsKKyAgICBpbnQgbV90aW1lcklEOworfTsKKworc3RhdGlj
IGNvbnN0IGludCBpbnZhbGlkU29ja2V0RGVzY3JpcHRvciA9IC0xOworc3RhdGljIGNvbnN0IGlu
dCB0aHJlYWRNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hhciBmaW5pc2hUaHJlYWRN
ZXNzYWdlW10gPSAiRiI7CitzdGF0aWMgY29uc3QgY2hhciB3YWt1cFRocmVhZE1lc3NhZ2VbXSA9
ICJXIjsKKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBu
YW1lKQoreworICAgIGludCBmZHNbMl07CisgICAgaWYgKHBpcGUoZmRzKSkKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBtX3JlYWRGcm9tUGlwZUZkID0gZmRzWzBdOworICAg
IG1fd3JpdGVUb1BpcGVGZCA9IGZkc1sxXTsKKyAgICBGRF9aRVJPKCZtX2ZkU2V0KTsKKyAgICBG
RF9TRVQobV9yZWFkRnJvbVBpcGVGZCwgJm1fZmRTZXQpOworICAgIG1fbWF4RmQgPSBtX3JlYWRG
cm9tUGlwZUZkOworCisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gaW52YWxpZFNvY2tldERlc2Ny
aXB0b3I7CisKKyAgICBtX3RocmVhZExvb3AgPSB0cnVlOworICAgIGNyZWF0ZVRocmVhZChyZWlu
dGVycHJldF9jYXN0PFdURjo6VGhyZWFkRnVuY3Rpb24+KCZXb3JrUXVldWU6OndvcmtRdWV1ZVRo
cmVhZCksIHRoaXMsIG5hbWUpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKCkKK3sKKyAgICBzZW5kTWVzc2FnZVRvVGhyZWFkKGZpbmlzaFRocmVhZE1lc3NhZ2UpOwor
fQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmsoKQoreworICAgIG1fd29ya0l0ZW1RdWV1
ZUxvY2subG9jaygpOworCisgICAgd2hpbGUgKCFtX3dvcmtJdGVtUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gd29ya0l0ZW1RdWV1ZTsKKyAgICAg
ICAgbV93b3JrSXRlbVF1ZXVlLnN3YXAod29ya0l0ZW1RdWV1ZSk7CisKKyAgICAgICAgbV93b3Jr
SXRlbVF1ZXVlTG9jay51bmxvY2soKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
b3JrSXRlbVF1ZXVlLnNpemUoKTsgKytpKQorICAgICAgICAgICAgd29ya0l0ZW1RdWV1ZVtpXSgp
OworICAgICAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKyAgICB9CisgICAgbV93b3Jr
SXRlbVF1ZXVlTG9jay51bmxvY2soKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBlcmZvcm1GZFdv
cmsoKQoreworICAgIGZkX3NldCByZWFkRmRTZXQgPSBtX2ZkU2V0OworCisgICAgaWYgKHNlbGVj
dChtX21heEZkICsgMSwgJnJlYWRGZFNldCwgMCwgMCwgMCkgPj0gMCkgeworICAgICAgICBpZiAo
RkRfSVNTRVQobV9yZWFkRnJvbVBpcGVGZCwgJnJlYWRGZFNldCkpIHsKKyAgICAgICAgICAgIGNo
YXIgcmVhZEJ1Zlt0aHJlYWRNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICBpZiAocmVhZChtX3Jl
YWRGcm9tUGlwZUZkLCByZWFkQnVmLCB0aHJlYWRNZXNzYWdlU2l6ZSkgPT0gLTEpCisgICAgICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmVhZCBmcm9tIFdvcmtRdWV1ZVRocmVhZCBw
aXBlIik7CisgICAgICAgICAgICBpZiAoIXN0cm5jbXAocmVhZEJ1ZiwgZmluaXNoVGhyZWFkTWVz
c2FnZSwgdGhyZWFkTWVzc2FnZVNpemUpKQorICAgICAgICAgICAgICAgIG1fdGhyZWFkTG9vcCA9
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fc29ja2V0RGVzY3JpcHRvciAhPSBp
bnZhbGlkU29ja2V0RGVzY3JpcHRvciAmJiBGRF9JU1NFVChtX3NvY2tldERlc2NyaXB0b3IsICZy
ZWFkRmRTZXQpKQorICAgICAgICAgICAgbV9zb2NrZXRFdmVudEhhbmRsZXIoKTsKKyAgICB9Cit9
CisKK3ZvaWQgV29ya1F1ZXVlOjpzZW5kTWVzc2FnZVRvVGhyZWFkKGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpCit7CisgICAgaWYgKHdyaXRlKG1fd3JpdGVUb1BpcGVGZCwgbWVzc2FnZSwgdGhyZWFkTWVz
c2FnZVNpemUpID09IC0xKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byB3YWtlIHVwIFdv
cmtRdWV1ZSBUaHJlYWQiKTsKK30KKwordm9pZCogV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQo
V29ya1F1ZXVlKiB3b3JrUXVldWUpCit7CisgICAgd2hpbGUgKHdvcmtRdWV1ZS0+bV90aHJlYWRM
b29wKSB7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybVdvcmsoKTsKKyAgICAgICAgd29ya1F1
ZXVlLT5wZXJmb3JtRmRXb3JrKCk7CisgICAgfQorCisgICAgY2xvc2Uod29ya1F1ZXVlLT5tX3Jl
YWRGcm9tUGlwZUZkKTsKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fd3JpdGVUb1BpcGVGZCk7CisK
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVyU29ja2V0RXZlbnRI
YW5kbGVyKGludCBmZCwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAg
aWYgKG1fc29ja2V0RGVzY3JpcHRvciAhPSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvcikKKyAgICAg
ICAgTE9HX0VSUk9SKCIlZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZC4iLCBmZCk7CisKKyAgICBtX3Nv
Y2tldERlc2NyaXB0b3IgPSBmZDsKKyAgICBtX3NvY2tldEV2ZW50SGFuZGxlciA9IGZ1bmN0aW9u
OworCisgICAgaWYgKGZkID4gbV9tYXhGZCkKKyAgICAgICAgbV9tYXhGZCA9IGZkOworICAgIEZE
X1NFVChmZCwgJm1fZmRTZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlclNvY2tl
dEV2ZW50SGFuZGxlcihpbnQgZmQpCit7CisgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gaW52YWxp
ZFNvY2tldERlc2NyaXB0b3I7CisKKyAgICBpZiAoZmQgPT0gbV9tYXhGZCkKKyAgICAgICAgbV9t
YXhGZCA9IG1fcmVhZEZyb21QaXBlRmQ7CisgICAgRkRfQ0xSKGZkLCAmbV9mZFNldCk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlv
bikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrSXRlbVF1ZXVlTG9jayk7CisgICAg
bV93b3JrSXRlbVF1ZXVlLmFwcGVuZChmdW5jdGlvbik7CisgICAgc2VuZE1lc3NhZ2VUb1RocmVh
ZCh3YWt1cFRocmVhZE1lc3NhZ2UpOworfQorCitib29sIFdvcmtRdWV1ZTo6dGltZXJGaXJlZCh2
b2lkKiBkYXRhKQoreworICAgIFRpbWVyV29ya0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxUaW1l
cldvcmtJdGVtKj4oZGF0YSk7CisgICAgaWYgKGl0ZW0gJiYgaXRlbS0+cXVldWUoKS0+bV9pc1Zh
bGlkKSB7CisgICAgICAgIGl0ZW0tPnF1ZXVlKCktPmRpc3BhdGNoKGl0ZW0tPmZ1bmN0aW9uKCkp
OworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5tX3RpbWVycy50YWtlKGl0ZW0tPnRpbWVySUQoKSk7
CisgICAgICAgIGRlbGV0ZSBpdGVtOworICAgIH0KKworICAgIHJldHVybiBFQ09SRV9DQUxMQkFD
S19DQU5DRUw7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyRGVsYXkoY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRvdWJsZSBkZWxheSkKK3sKKyAgICBzdGF0aWMg
aW50IHRpbWVySWQgPSAwOworICAgIG1fdGltZXJzLnNldCh0aW1lcklkLCBhZG9wdFB0cihlY29y
ZV90aW1lcl9hZGQoZGVsYXksIHJlaW50ZXJwcmV0X2Nhc3Q8RWNvcmVfVGFza19DYj4odGltZXJG
aXJlZCksIG5ldyBUaW1lcldvcmtJdGVtKHRpbWVySWQsIGZ1bmN0aW9uLCB0aGlzKSkpKTsKKyAg
ICB0aW1lcklkKys7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGQ4YTc5N2E2Y2I2
MjQ5NmM2ZDM3OTNmYTNiYzU5YmJiOTExOWQ3ODkuLjlhMWYwOWI0YjZmNDlhZDcyNzg3NGRmNTEx
NTUyNjIzOTg3MDIyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03LDcgKzcsNiBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX0xJTktfRkxBR1MKIAogTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgUGxhdGZvcm0vZWZsL01vZHVsZUVmbC5jcHAKLSAgICBQbGF0Zm9ybS9lZmwv
UnVuTG9vcEVmbC5jcHAKICAgICBQbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcAogICAgIFBs
YXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133727</attachid>
            <date>2012-03-25 21:24:11 -0700</date>
            <delta_ts>2012-03-26 00:03:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120326132409.patch</filename>
            <type>text/plain</type>
            <size>17499</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uOWZmZGIyMmJmMDgzZTM3MDhhMWNmZDIzMmY5NGEw
ZjdkN2ZkOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTI1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9yIGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMmQ2OThhZTM3ZGIxZjlhN2JlMzU4MDgwNDNlOGFlMzQ1YWNlZjU2ZC4uZGEwZTRhODBlZjBi
N2Q1ODFlZmE2ZDEyZjhmZTdiOWMwYWI0MWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBA
CisyMDEyLTAzLTI1ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpw
bGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6b3Blbik6
CisgICAgICAgICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdv
cmtRdWV1ZSk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1l
cldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06On5UaW1lcldvcmtJdGVtKToKKyAg
ICAgICAgKFRpbWVyV29ya0l0ZW06OmZ1bmN0aW9uKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06
OnF1ZXVlKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAoV29y
a1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9y
bUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtV29yayk6CisgICAgICAg
IChXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpzZW5kTWVz
c2FnZVRvVGhyZWFkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KToKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKwogMjAxMi0wMy0yNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFl
cm95QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXRXZWJL
aXQgb24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5M
b29wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0
NWE4M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uOTU3Y2E5MWI4MjVhNTNhMTAyMGI2MTQz
ZTdjYmZjMWM0MDc3NTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVu
TG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiAr
MzksMTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+
IG1fdGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7
CisgICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lz
UmVwZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0Owog
ICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1Bp
cGU+IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiwgdm9pZCosIHVu
c2lnbmVkIGludCk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9S
dW5Mb29wRWZsLmNwcAppbmRleCBlODIwNzg4ZDZhYmIwOTM4MmU5ZTE4Y2NlZWRlNjc1MzExMTE3
NTYzLi41ZjJlNmJlZWM2YzdiNzdkZGJiYmM5M2YxNzg3Y2UxZTAxYzk1YmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMiBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNz
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDIzICsyNywxMjMgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSdW5Mb29wLmgiCiAKLSNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfRXZhcy5o
PgorI2luY2x1ZGUgPEVjb3JlX0ZpbGUuaD4KKyNpbmNsdWRlIDxFZGplLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3N0YXRpYyBjb25z
dCBpbnQgZWNvcmVQaXBlTWVzc2FnZVNpemUgPSAxOworc3RhdGljIGNvbnN0IGNoYXIgd2FrdXBF
Y29yZVBpcGVNZXNzYWdlW10gPSAiVyI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUnVuTG9v
cDo6UnVuTG9vcCgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2luaXRFZmwgPSBm
YWxzZTsKKworICAgIGlmICghZWNvcmVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291
bGQgbm90IGluaXQgZWNvcmUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IWVjb3JlX2V2YXNfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291bGQgbm90IGluaXQg
ZWNvcmVfZXZhcy4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlRXZhczsKKyAgICB9CisKKyAg
ICBpZiAoIWVjb3JlX2ZpbGVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291bGQgbm90
IGluaXQgZWNvcmVfZmlsZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlRmlsZTsKKyAgICB9
CisKKyAgICBpZiAoIWVkamVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291bGQgbm90
IGluaXQgZWRqZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVkamU7CisgICAgfQorCisgICAgbV9w
aXBlID0gYWRvcHRQdHIoZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQsIHRoaXMpKTsKKyAgICBt
X2luaXRFZmwgPSB0cnVlOworCisgICAgcmV0dXJuOworCitlcnJvckVkamU6CisgICAgZWNvcmVf
ZmlsZV9zaHV0ZG93bigpOworZXJyb3JFY29yZUZpbGU6CisgICAgZWNvcmVfZXZhc19zaHV0ZG93
bigpOworZXJyb3JFY29yZUV2YXM6CisgICAgZWNvcmVfc2h1dGRvd24oKTsKIH0KIAogUnVuTG9v
cDo6flJ1bkxvb3AoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1faW5pdEVm
bCkgeworICAgICAgICBlZGplX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX2ZpbGVfc2h1dGRv
d24oKTsKKyAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgICAgICBlY29yZV9zaHV0
ZG93bigpOworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjpydW4oKQoreworICAgIGVjb3JlX21h
aW5fbG9vcF9iZWdpbigpOworfQorCit2b2lkIFJ1bkxvb3A6OnN0b3AoKQoreworICAgIGVjb3Jl
X21haW5fbG9vcF9xdWl0KCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwRXZlbnQodm9pZCog
ZGF0YSwgdm9pZCosIHVuc2lnbmVkIGludCkKK3sKKyAgICBzdGF0aWNfY2FzdDxSdW5Mb29wKj4o
ZGF0YSktPnBlcmZvcm1Xb3JrKCk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGVjb3JlX3BpcGVfd3JpdGUobV9waXBlLmdldCgpLCB3
YWt1cEVjb3JlUGlwZU1lc3NhZ2UsIGVjb3JlUGlwZU1lc3NhZ2VTaXplKTsKK30KKworUnVuTG9v
cDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCopCisgICAgOiBtX2lzUmVwZWF0aW5nKGZh
bHNlKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAgIHN0
b3AoKTsKK30KKworYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQodm9pZCogZGF0
YSkKK3sKKyAgICBSdW5Mb29wOjpUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVuTG9v
cDo6VGltZXJCYXNlKj4oZGF0YSk7CisKKyAgICB0aW1lci0+ZmlyZWQoKTsKKworICAgIGlmICgh
dGltZXItPm1faXNSZXBlYXRpbmcpIHsKKyAgICAgICAgdGltZXItPm1fdGltZXIgPSBudWxscHRy
OworICAgICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworICAgIH0KKworICAgIHJl
dHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnN0YXJ0KGRvdWJsZSBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBtX2lz
UmVwZWF0aW5nID0gcmVwZWF0OworICAgIG1fdGltZXIgPSBhZG9wdFB0cihlY29yZV90aW1lcl9h
ZGQobmV4dEZpcmVJbnRlcnZhbCwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9UYXNrX0NiPih0aW1l
ckZpcmVkKSwgdGhpcykpOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7
CisgICAgbV90aW1lciA9IG51bGxwdHI7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjpp
c0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxzZTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4MTU1M2FlYjc2YmYwNGRhNzhiNzlkNzMwZDYyMzhl
Y2JlNGEzNWYwLi5jMmZmN2YxMjZmYzY2YjBmNWM2NjYzZmZjMWU4NjQ3NmJlMmI2ZTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDYsNyAr
NDYsNyBAQAogY2xhc3MgUVNvY2tldE5vdGlmaWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggZDU0YWZmODgyYjVkNzUzMjkyMWUwMDg0ODEzOWZh
OTJkZmNjOTkyMC4uN2NiMWYzMjc4MDFjMDFlMDFjMDVjMzVjY2FiNmE5NmFhYTI3OGM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCkBAIC0xNTMsNiArMTUzLDEwIEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZv
cm1JbnZhbGlkYXRlKCkKICAgICBtX3NvY2tldE5vdGlmaWVyID0gMDsKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnVucmVnaXN0ZXJTb2NrZXRFdmVu
dEhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yKTsKKyNlbmRpZgorCiAgICAgbV9zb2NrZXREZXNj
cmlwdG9yID0gLTE7CiAgICAgbV9pc0Nvbm5lY3RlZCA9IGZhbHNlOwogfQpAQCAtNDIzLDYgKzQy
Nyw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAg
bV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXREZXNj
cmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIGJpbmQoJkNvbm5lY3Rpb246OmNvbm5lY3Rp
b25EaWRDbG9zZSwgdGhpcykpOwogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRXZlbnRT
b3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19JTiwgYmluZCgmQ29ubmVjdGlv
bjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIG1f
Y29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKG1fc29ja2V0RGVzY3Jp
cHRvciwgYmluZCgmQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOwogI2VuZGlm
CiAKICAgICAvLyBTY2hlZHVsZSBhIGNhbGwgdG8gcmVhZHlSZWFkSGFuZGxlci4gRGF0YSBtYXkg
aGF2ZSBhcnJpdmVkIGJlZm9yZSBpbnN0YWxsYXRpb24gb2YgdGhlIHNpZ25hbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCmluZGV4
IDUwMjJkYTc5MmMzODllM2FkMDZmNTk3ODU3ZTgxMjk4NTBhMzBlYTUuLjljYWZkMzI5NGM2MzJi
YzZhNThkZWFlYmY1NDQ1MDk1MjJlZjFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgdHlw
ZWRlZiB2b2lkKiBHUGlkOwogdHlwZWRlZiBpbnQgR1BpZDsKICNlbmRpZgogdHlwZWRlZiBHUGlk
IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBlZGVm
IHBpZF90IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAppbmRleCBlZDg5NGNiZDM0
NzllMDVhNDUzMjZjNzgzYjZlM2MxZjM3ZDE5ZWRiLi5kNjMwZGMwMjg1NWU1ZGEwOTRiMTNmMWYx
NTEzMjljMmRiNDE0MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3Jr
UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApAQCAtNDEs
MTUgKzQxLDE5IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAorI2lmIChQTEFURk9STShRVCkgJiYgIU9TKERBUldJTikpIHx8IFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZp
ZXIuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQpICYmICFPUyhEQVJXSU4pCiAjaW5jbHVk
ZSA8UVNvY2tldE5vdGlmaWVyPgotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIu
aCIKIGNsYXNzIFFPYmplY3Q7CiBjbGFzcyBRVGhyZWFkOwogI2VsaWYgUExBVEZPUk0oR1RLKQot
I2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CiB0eXBlZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMpIChncG9pbnRl
ciBkYXRhKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgogI2VuZGlm
CiAKIGNsYXNzIFdvcmtRdWV1ZSB7CkBAIC05MCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCwgaW50LCBjb25zdCBGdW5jdGlvbjx2b2lk
KCk+Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCk7CiAgICAg
dm9pZCBkaXNwYXRjaE9uVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVudGlm
aWVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAg
dm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKICNlbmRp
ZgogCiBwcml2YXRlOgpAQCAtMTc3LDYgKzE4NCwyNiBAQCBwcml2YXRlOgogICAgIGNsYXNzIEV2
ZW50U291cmNlOwogICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2UqPiA+IG1fZXZl
bnRTb3VyY2VzOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJjZSo+
ID46Oml0ZXJhdG9yIEV2ZW50U291cmNlSXRlcmF0b3I7IAorI2VsaWYgUExBVEZPUk0oRUZMKQor
ICAgIGZkX3NldCBtX2ZpbGVEZXNjcmlwdG9yU2V0OworICAgIGludCBtX21heEZpbGVEZXNjcmlw
dG9yOworICAgIGludCBtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3I7CisgICAgaW50IG1fd3JpdGVU
b1BpcGVEZXNjcmlwdG9yOworICAgIGJvb2wgbV90aHJlYWRMb29wOworCisgICAgVmVjdG9yPEZ1
bmN0aW9uPHZvaWQoKT4gPiBtX3dvcmtJdGVtUXVldWU7CisgICAgTXV0ZXggbV93b3JrSXRlbVF1
ZXVlTG9jazsKKworICAgIGludCBtX3NvY2tldERlc2NyaXB0b3I7CisgICAgRnVuY3Rpb248dm9p
ZCgpPiBtX3NvY2tldEV2ZW50SGFuZGxlcjsKKworICAgIEhhc2hNYXA8aW50LCBPd25QdHI8RWNv
cmVfVGltZXI+ID4gbV90aW1lcnM7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UaHJlYWQoY29u
c3QgY2hhciopOworICAgIHN0YXRpYyB2b2lkKiB3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKik7
CisgICAgdm9pZCBwZXJmb3JtV29yaygpOworICAgIHZvaWQgcGVyZm9ybUZpbGVEZXNjcmlwdG9y
V29yaygpOworICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCopOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhMzliYTllZDliMTI3MGZlN2RmOWU2Y2U2ODVkYjQ3M2E1ZjU4YTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcApAQCAt
MCwwICsxLDE3MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisK
KyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCitjbGFzcyBUaW1lcldvcmtJdGVtIHsKK3B1
YmxpYzoKKyAgICBUaW1lcldvcmtJdGVtKGludCB0aW1lcklELCBjb25zdCBGdW5jdGlvbjx2b2lk
KCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1
bmN0aW9uKQorICAgICAgICAsIG1fcXVldWUocXVldWUpCisgICAgICAgICwgbV90aW1lcklEKHRp
bWVySUQpCisgICAgeworICAgIH0KKyAgICB+VGltZXJXb3JrSXRlbSgpIHsgfQorCisgICAgRnVu
Y3Rpb248dm9pZCgpPiBmdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAg
ICBXb3JrUXVldWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorCisgICAgaW50
IHRpbWVySUQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVySUQ7IH0KKworcHJpdmF0ZToKKyAgICBG
dW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOworICAg
IGludCBtX3RpbWVySUQ7Cit9OworCitzdGF0aWMgY29uc3QgaW50IGludmFsaWRTb2NrZXREZXNj
cmlwdG9yID0gLTE7CitzdGF0aWMgY29uc3QgaW50IHRocmVhZE1lc3NhZ2VTaXplID0gMTsKK3N0
YXRpYyBjb25zdCBjaGFyIGZpbmlzaFRocmVhZE1lc3NhZ2VbXSA9ICJGIjsKK3N0YXRpYyBjb25z
dCBjaGFyIHdha3VwVGhyZWFkTWVzc2FnZVtdID0gIlciOworCit2b2lkIFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgaW50IGZkc1syXTsKKyAg
ICBpZiAocGlwZShmZHMpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIG1f
cmVhZEZyb21QaXBlRGVzY3JpcHRvciA9IGZkc1swXTsKKyAgICBtX3dyaXRlVG9QaXBlRGVzY3Jp
cHRvciA9IGZkc1sxXTsKKyAgICBGRF9aRVJPKCZtX2ZpbGVEZXNjcmlwdG9yU2V0KTsKKyAgICBG
RF9TRVQobV9yZWFkRnJvbVBpcGVEZXNjcmlwdG9yLCAmbV9maWxlRGVzY3JpcHRvclNldCk7Cisg
ICAgbV9tYXhGaWxlRGVzY3JpcHRvciA9IG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvcjsKKworICAg
IG1fc29ja2V0RGVzY3JpcHRvciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOworCisgICAgbV90
aHJlYWRMb29wID0gdHJ1ZTsKKyAgICBjcmVhdGVUaHJlYWQocmVpbnRlcnByZXRfY2FzdDxXVEY6
OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBuYW1l
KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgc2Vu
ZE1lc3NhZ2VUb1RocmVhZChmaW5pc2hUaHJlYWRNZXNzYWdlKTsKK30KKwordm9pZCBXb3JrUXVl
dWU6OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsKKwor
ICAgIHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8
RnVuY3Rpb248dm9pZCgpPiA+IHdvcmtJdGVtUXVldWU7CisgICAgICAgIG1fd29ya0l0ZW1RdWV1
ZS5zd2FwKHdvcmtJdGVtUXVldWUpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5s
b2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya0l0ZW1RdWV1ZS5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVtUXVldWVbaV0oKTsKKyAgICAgICAgbV93b3Jr
SXRlbVF1ZXVlTG9jay5sb2NrKCk7CisgICAgfQorICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2sudW5s
b2NrKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtRmlsZURlc2NyaXB0b3JXb3JrKCkK
K3sKKyAgICBmZF9zZXQgcmVhZEZpbGVEZXNjcmlwdG9yU2V0ID0gbV9maWxlRGVzY3JpcHRvclNl
dDsKKworICAgIGlmIChzZWxlY3QobV9tYXhGaWxlRGVzY3JpcHRvciArIDEsICZyZWFkRmlsZURl
c2NyaXB0b3JTZXQsIDAsIDAsIDApID49IDApIHsKKyAgICAgICAgaWYgKEZEX0lTU0VUKG1fcmVh
ZEZyb21QaXBlRGVzY3JpcHRvciwgJnJlYWRGaWxlRGVzY3JpcHRvclNldCkpIHsKKyAgICAgICAg
ICAgIGNoYXIgcmVhZEJ1Zlt0aHJlYWRNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICBpZiAocmVh
ZChtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3IsIHJlYWRCdWYsIHRocmVhZE1lc3NhZ2VTaXplKSA9
PSAtMSkKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZWFkIGZyb20gV29y
a1F1ZXVlVGhyZWFkIHBpcGUiKTsKKyAgICAgICAgICAgIGlmICghc3RybmNtcChyZWFkQnVmLCBm
aW5pc2hUaHJlYWRNZXNzYWdlLCB0aHJlYWRNZXNzYWdlU2l6ZSkpCisgICAgICAgICAgICAgICAg
bV90aHJlYWRMb29wID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9zb2NrZXRE
ZXNjcmlwdG9yICE9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yICYmIEZEX0lTU0VUKG1fc29ja2V0
RGVzY3JpcHRvciwgJnJlYWRGaWxlRGVzY3JpcHRvclNldCkpCisgICAgICAgICAgICBtX3NvY2tl
dEV2ZW50SGFuZGxlcigpOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OnNlbmRNZXNzYWdl
VG9UaHJlYWQoY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBpZiAod3JpdGUobV93cml0ZVRv
UGlwZURlc2NyaXB0b3IsIG1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VTaXplKSA9PSAtMSkKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gd2FrZSB1cCBXb3JrUXVldWUgVGhyZWFkIik7Cit9CisK
K3ZvaWQqIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVlKQor
eworICAgIHdoaWxlICh3b3JrUXVldWUtPm1fdGhyZWFkTG9vcCkgeworICAgICAgICB3b3JrUXVl
dWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybUZpbGVEZXNjcmlw
dG9yV29yaygpOworICAgIH0KKworICAgIGNsb3NlKHdvcmtRdWV1ZS0+bV9yZWFkRnJvbVBpcGVE
ZXNjcmlwdG9yKTsKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fd3JpdGVUb1BpcGVEZXNjcmlwdG9y
KTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRF
dmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBm
dW5jdGlvbikKK3sKKyAgICBpZiAobV9zb2NrZXREZXNjcmlwdG9yICE9IGludmFsaWRTb2NrZXRE
ZXNjcmlwdG9yKQorICAgICAgICBMT0dfRVJST1IoIiVkIGlzIGFscmVhZHkgcmVnaXN0ZXJkLiIs
IGZpbGVEZXNjcmlwdG9yKTsKKworICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGZpbGVEZXNjcmlw
dG9yOworICAgIG1fc29ja2V0RXZlbnRIYW5kbGVyID0gZnVuY3Rpb247CisKKyAgICBpZiAoZmls
ZURlc2NyaXB0b3IgPiBtX21heEZpbGVEZXNjcmlwdG9yKQorICAgICAgICBtX21heEZpbGVEZXNj
cmlwdG9yID0gZmlsZURlc2NyaXB0b3I7CisgICAgRkRfU0VUKGZpbGVEZXNjcmlwdG9yLCAmbV9m
aWxlRGVzY3JpcHRvclNldCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0
RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKK3sKKyAgICBtX3NvY2tldERlc2NyaXB0
b3IgPSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvcjsKKworICAgIGlmIChmaWxlRGVzY3JpcHRvciA9
PSBtX21heEZpbGVEZXNjcmlwdG9yKQorICAgICAgICBtX21heEZpbGVEZXNjcmlwdG9yID0gbV9y
ZWFkRnJvbVBpcGVEZXNjcmlwdG9yOworICAgIEZEX0NMUihmaWxlRGVzY3JpcHRvciwgJm1fZmls
ZURlc2NyaXB0b3JTZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29y
a0l0ZW1RdWV1ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoZnVuY3Rpb24pOwor
ICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQod2FrdXBUaHJlYWRNZXNzYWdlKTsKK30KKworYm9vbCBX
b3JrUXVldWU6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBUaW1lcldvcmtJdGVtKiBp
dGVtID0gc3RhdGljX2Nhc3Q8VGltZXJXb3JrSXRlbSo+KGRhdGEpOworICAgIGlmIChpdGVtICYm
IGl0ZW0tPnF1ZXVlKCktPm1faXNWYWxpZCkgeworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5kaXNw
YXRjaChpdGVtLT5mdW5jdGlvbigpKTsKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+bV90aW1lcnMu
dGFrZShpdGVtLT50aW1lcklEKCkpOworICAgICAgICBkZWxldGUgaXRlbTsKKyAgICB9CisKKyAg
ICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBZnRlckRlbGF5KGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBkb3VibGUg
ZGVsYXkpCit7CisgICAgc3RhdGljIGludCB0aW1lcklkID0gMDsKKyAgICBtX3RpbWVycy5zZXQo
dGltZXJJZCwgYWRvcHRQdHIoZWNvcmVfdGltZXJfYWRkKGRlbGF5LCByZWludGVycHJldF9jYXN0
PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCBuZXcgVGltZXJXb3JrSXRlbSh0aW1lcklkLCBm
dW5jdGlvbiwgdGhpcykpKSk7CisgICAgdGltZXJJZCsrOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCBkOGE3OTdhNmNiNjI0OTZjNmQzNzkzZmEzYmM1OWJiYjkxMTlkNzg5Li45YTFm
MDliNGI2ZjQ5YWQ3Mjc4NzRkZjUxMTU1MjYyMzk4NzAyMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtNyw3ICs3LDYgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9MSU5LX0ZMQUdTCiAK
IExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL2VmbC9Nb2R1bGVFZmwu
Y3BwCi0gICAgUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZsL1dv
cmtRdWV1ZUVmbC5jcHAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133739</attachid>
            <date>2012-03-26 00:03:21 -0700</date>
            <delta_ts>2012-03-27 19:02:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62777-20120326160320.patch</filename>
            <type>text/plain</type>
            <size>17502</size>
            <attacher name="YoungTaeck Song">youngtaeck.song</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uOWZmZGIyMmJmMDgzZTM3MDhhMWNmZDIzMmY5NGEw
ZjdkN2ZkOTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAzLTI1ICBZb3Vu
Z1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0aWFsIHZlcnNpb24gUnVuTG9v
cEVmbCBmb3IgV2ViS2l0MiBFZmwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9SdW5Mb29wLmg6Cisg
ICAgICAgIChUaW1lckJhc2UpOgorICAgICAgICAoUnVuTG9vcCk6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1J1bkxvb3BFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6UnVuTG9v
cCk6CisgICAgICAgIChXZWJDb3JlOjpSdW5Mb29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSdW5M
b29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6
VGltZXJCYXNlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorCiAy
MDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBE
b24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9yIGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMmQ2OThhZTM3ZGIxZjlhN2JlMzU4MDgwNDNlOGFlMzQ1YWNlZjU2ZC4uZGEwZTRhODBlZjBi
N2Q1ODFlZmE2ZDEyZjhmZTdiOWMwYWI0MWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBA
CisyMDEyLTAzLTI1ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUnVuTG9vcEVmbCBhbmQgV29ya1F1ZXVlRWZs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc3Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbml0
aWFsIHZlcnNpb24gV29ya1F1ZXVlRWZsIGZvciBXZWJLaXQyIEVmbC4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpw
bGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVjdGlvbjo6b3Blbik6
CisgICAgICAgICogUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdv
cmtRdWV1ZSk6CisgICAgICAgICogUGxhdGZvcm0vZWZsL1dvcmtRdWV1ZUVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoVGltZXJXb3JrSXRlbSk6CisgICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1l
cldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06On5UaW1lcldvcmtJdGVtKToKKyAg
ICAgICAgKFRpbWVyV29ya0l0ZW06OmZ1bmN0aW9uKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06
OnF1ZXVlKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OnRpbWVySUQpOgorICAgICAgICAoV29y
a1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0Zm9y
bUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwZXJmb3JtV29yayk6CisgICAgICAg
IChXb3JrUXVldWU6OnBlcmZvcm1GZFdvcmspOgorICAgICAgICAoV29ya1F1ZXVlOjpzZW5kTWVz
c2FnZVRvVGhyZWFkKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKToKKyAg
ICAgICAgKFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtR
dWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjp0aW1lckZpcmVkKToKKyAgICAg
ICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlckRlbGF5KToKKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZToKKwogMjAxMi0wMy0yNSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFl
cm95QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXRXZWJL
aXQgb24gTWFjIE9TIFguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5M
b29wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmgKaW5kZXggZjA4YTA0MjI0
NWE4M2ZjN2YxOWQwMDc3ZGNhMmVhODE2MTY5ZjE2Yi4uNDBiNDE5NDljODc3ZDkzYTI4MWU3NGUw
ZDkzODE1NWUwYjE5Yzg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVu
TG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3AuaApAQCAtMzksNiAr
MzksMTAgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUnVuTG9vcCB7CkBAIC05NSw2ICs5OSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHZvaWQgY2xlYXJUaW1lclNvdXJjZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+
IG1fdGltZXJTb3VyY2U7CiAgICAgICAgIGdib29sZWFuIG1faXNSZXBlYXRpbmc7CisjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7
CisgICAgICAgIE93blB0cjxFY29yZV9UaW1lcj4gbV90aW1lcjsKKyAgICAgICAgYm9vbCBtX2lz
UmVwZWF0aW5nOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTU3LDYgKzE2NSwxMCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX3J1bkxvb3BDb250ZXh0Owog
ICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4gPiBtX3J1bkxvb3BNYWluTG9vcHM7CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgYm9vbCBtX2luaXRFZmw7CisgICAgT3duUHRyPEVjb3JlX1Bp
cGU+IG1fcGlwZTsKKyAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lk
KiwgdW5zaWduZWQgaW50KTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1J1bkxvb3BFZmwuY3BwCmluZGV4IGU4MjA3ODhkNmFiYjA5MzgyZTllMThjY2VlZGU2NzUz
MTExMTc1NjMuLmYyOTlkOGVjZjI2ODI0MGJkZDI2NjZiYTUyYTQ0YmNjYmExOWUyMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SdW5Mb29wRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUnVuTG9vcEVmbC5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMjMgKzI3LDEyMiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9F
dmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfRmlsZS5oPgorI2luY2x1ZGUgPEVkamUuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworc3RhdGlj
IGNvbnN0IGludCBlY29yZVBpcGVNZXNzYWdlU2l6ZSA9IDE7CitzdGF0aWMgY29uc3QgY2hhciB3
YWt1cEVjb3JlUGlwZU1lc3NhZ2VbXSA9ICJXIjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBS
dW5Mb29wOjpSdW5Mb29wKCkKKyAgICA6IG1faW5pdEVmbChmYWxzZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGlmICghZWNvcmVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigi
Y291bGQgbm90IGluaXQgZWNvcmUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIWVjb3JlX2V2YXNfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291bGQgbm90IGlu
aXQgZWNvcmVfZXZhcy4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlRXZhczsKKyAgICB9CisK
KyAgICBpZiAoIWVjb3JlX2ZpbGVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291bGQg
bm90IGluaXQgZWNvcmVfZmlsZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVjb3JlRmlsZTsKKyAg
ICB9CisKKyAgICBpZiAoIWVkamVfaW5pdCgpKSB7CisgICAgICAgIExPR19FUlJPUigiY291bGQg
bm90IGluaXQgZWRqZS4iKTsKKyAgICAgICAgZ290byBlcnJvckVkamU7CisgICAgfQorCisgICAg
bV9waXBlID0gYWRvcHRQdHIoZWNvcmVfcGlwZV9hZGQod2FrZVVwRXZlbnQsIHRoaXMpKTsKKyAg
ICBtX2luaXRFZmwgPSB0cnVlOworCisgICAgcmV0dXJuOworCitlcnJvckVkamU6CisgICAgZWNv
cmVfZmlsZV9zaHV0ZG93bigpOworZXJyb3JFY29yZUZpbGU6CisgICAgZWNvcmVfZXZhc19zaHV0
ZG93bigpOworZXJyb3JFY29yZUV2YXM6CisgICAgZWNvcmVfc2h1dGRvd24oKTsKIH0KIAogUnVu
TG9vcDo6flJ1bkxvb3AoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1faW5p
dEVmbCkgeworICAgICAgICBlZGplX3NodXRkb3duKCk7CisgICAgICAgIGVjb3JlX2ZpbGVfc2h1
dGRvd24oKTsKKyAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgICAgICBlY29yZV9z
aHV0ZG93bigpOworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjpydW4oKQoreworICAgIGVjb3Jl
X21haW5fbG9vcF9iZWdpbigpOworfQorCit2b2lkIFJ1bkxvb3A6OnN0b3AoKQoreworICAgIGVj
b3JlX21haW5fbG9vcF9xdWl0KCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwRXZlbnQodm9p
ZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkIGludCkKK3sKKyAgICBzdGF0aWNfY2FzdDxSdW5Mb29w
Kj4oZGF0YSktPnBlcmZvcm1Xb3JrKCk7CiB9CiAKIHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGVjb3JlX3BpcGVfd3JpdGUobV9waXBlLmdldCgp
LCB3YWt1cEVjb3JlUGlwZU1lc3NhZ2UsIGVjb3JlUGlwZU1lc3NhZ2VTaXplKTsKK30KKworUnVu
TG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCopCisgICAgOiBtX2lzUmVwZWF0aW5n
KGZhbHNlKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAg
IHN0b3AoKTsKK30KKworYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQodm9pZCog
ZGF0YSkKK3sKKyAgICBSdW5Mb29wOjpUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8UnVu
TG9vcDo6VGltZXJCYXNlKj4oZGF0YSk7CisKKyAgICB0aW1lci0+ZmlyZWQoKTsKKworICAgIGlm
ICghdGltZXItPm1faXNSZXBlYXRpbmcpIHsKKyAgICAgICAgdGltZXItPm1fdGltZXIgPSBudWxs
cHRyOworICAgICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworICAgIH0KKworICAg
IHJldHVybiBFQ09SRV9DQUxMQkFDS19SRU5FVzsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJh
c2U6OnN0YXJ0KGRvdWJsZSBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBt
X2lzUmVwZWF0aW5nID0gcmVwZWF0OworICAgIG1fdGltZXIgPSBhZG9wdFB0cihlY29yZV90aW1l
cl9hZGQobmV4dEZpcmVJbnRlcnZhbCwgcmVpbnRlcnByZXRfY2FzdDxFY29yZV9UYXNrX0NiPih0
aW1lckZpcmVkKSwgdGhpcykpOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgp
Cit7CisgICAgbV90aW1lciA9IG51bGxwdHI7Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNl
Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3RpbWVyKSA/IHRydWUgOiBmYWxz
ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4MTU1M2FlYjc2YmYwNGRhNzhiNzlkNzMwZDYy
MzhlY2JlNGEzNWYwLi5jMmZmN2YxMjZmYzY2YjBmNWM2NjYzZmZjMWU4NjQ3NmJlMmI2ZTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDYs
NyArNDYsNyBAQAogY2xhc3MgUVNvY2tldE5vdGlmaWVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgi
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggZDU0YWZmODgyYjVkNzUzMjkyMWUwMDg0ODEz
OWZhOTJkZmNjOTkyMC4uN2NiMWYzMjc4MDFjMDFlMDFjMDVjMzVjY2FiNmE5NmFhYTI3OGM2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwCkBAIC0xNTMsNiArMTUzLDEwIEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxh
dGZvcm1JbnZhbGlkYXRlKCkKICAgICBtX3NvY2tldE5vdGlmaWVyID0gMDsKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oRUZMKQorICAgIG1fY29ubmVjdGlvblF1ZXVlLnVucmVnaXN0ZXJTb2NrZXRF
dmVudEhhbmRsZXIobV9zb2NrZXREZXNjcmlwdG9yKTsKKyNlbmRpZgorCiAgICAgbV9zb2NrZXRE
ZXNjcmlwdG9yID0gLTE7CiAgICAgbV9pc0Nvbm5lY3RlZCA9IGZhbHNlOwogfQpAQCAtNDIzLDYg
KzQyNyw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAjZWxpZiBQTEFURk9STShHVEspCiAg
ICAgbV9jb25uZWN0aW9uUXVldWUucmVnaXN0ZXJFdmVudFNvdXJjZUhhbmRsZXIobV9zb2NrZXRE
ZXNjcmlwdG9yLCAoR19JT19IVVAgfCBHX0lPX0VSUiksIGJpbmQoJkNvbm5lY3Rpb246OmNvbm5l
Y3Rpb25EaWRDbG9zZSwgdGhpcykpOwogICAgIG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyRXZl
bnRTb3VyY2VIYW5kbGVyKG1fc29ja2V0RGVzY3JpcHRvciwgR19JT19JTiwgYmluZCgmQ29ubmVj
dGlvbjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
IG1fY29ubmVjdGlvblF1ZXVlLnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKG1fc29ja2V0RGVz
Y3JpcHRvciwgYmluZCgmQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlciwgdGhpcykpOwogI2Vu
ZGlmCiAKICAgICAvLyBTY2hlZHVsZSBhIGNhbGwgdG8gcmVhZHlSZWFkSGFuZGxlci4gRGF0YSBt
YXkgaGF2ZSBhcnJpdmVkIGJlZm9yZSBpbnN0YWxsYXRpb24gb2YgdGhlIHNpZ25hbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5o
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCmlu
ZGV4IDUwMjJkYTc5MmMzODllM2FkMDZmNTk3ODU3ZTgxMjk4NTBhMzBlYTUuLjljYWZkMzI5NGM2
MzJiYzZhNThkZWFlYmY1NDQ1MDk1MjJlZjFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAg
dHlwZWRlZiB2b2lkKiBHUGlkOwogdHlwZWRlZiBpbnQgR1BpZDsKICNlbmRpZgogdHlwZWRlZiBH
UGlkIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CisjZWxpZiBQTEFURk9STShFRkwpCit0eXBl
ZGVmIHBpZF90IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vV29ya1F1
ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAppbmRleCBlZDg5NGNi
ZDM0NzllMDVhNDUzMjZjNzgzYjZlM2MxZjM3ZDE5ZWRiLi5kNjMwZGMwMjg1NWU1ZGEwOTRiMTNm
MWYxNTEzMjljMmRiNDE0MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9X
b3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApAQCAt
NDEsMTUgKzQxLDE5IEBACiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAorI2lmIChQTEFURk9STShRVCkgJiYgIU9TKERBUldJTikpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQpICYmICFPUyhEQVJXSU4pCiAjaW5j
bHVkZSA8UVNvY2tldE5vdGlmaWVyPgotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZp
ZXIuaCIKIGNsYXNzIFFPYmplY3Q7CiBjbGFzcyBRVGhyZWFkOwogI2VsaWYgUExBVEZPUk0oR1RL
KQotI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CiB0eXBlZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMpIChncG9p
bnRlciBkYXRhKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgogI2Vu
ZGlmCiAKIGNsYXNzIFdvcmtRdWV1ZSB7CkBAIC05MCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCwgaW50LCBjb25zdCBGdW5jdGlvbjx2
b2lkKCk+Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXZlbnRTb3VyY2VIYW5kbGVyKGludCk7CiAg
ICAgdm9pZCBkaXNwYXRjaE9uVGVybWluYXRpb24oV2ViS2l0OjpQbGF0Zm9ybVByb2Nlc3NJZGVu
dGlmaWVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoKT4mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKICNl
bmRpZgogCiBwcml2YXRlOgpAQCAtMTc3LDYgKzE4NCwyNiBAQCBwcml2YXRlOgogICAgIGNsYXNz
IEV2ZW50U291cmNlOwogICAgIEhhc2hNYXA8aW50LCBWZWN0b3I8RXZlbnRTb3VyY2UqPiA+IG1f
ZXZlbnRTb3VyY2VzOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFZlY3RvcjxFdmVudFNvdXJj
ZSo+ID46Oml0ZXJhdG9yIEV2ZW50U291cmNlSXRlcmF0b3I7IAorI2VsaWYgUExBVEZPUk0oRUZM
KQorICAgIGZkX3NldCBtX2ZpbGVEZXNjcmlwdG9yU2V0OworICAgIGludCBtX21heEZpbGVEZXNj
cmlwdG9yOworICAgIGludCBtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3I7CisgICAgaW50IG1fd3Jp
dGVUb1BpcGVEZXNjcmlwdG9yOworICAgIGJvb2wgbV90aHJlYWRMb29wOworCisgICAgVmVjdG9y
PEZ1bmN0aW9uPHZvaWQoKT4gPiBtX3dvcmtJdGVtUXVldWU7CisgICAgTXV0ZXggbV93b3JrSXRl
bVF1ZXVlTG9jazsKKworICAgIGludCBtX3NvY2tldERlc2NyaXB0b3I7CisgICAgRnVuY3Rpb248
dm9pZCgpPiBtX3NvY2tldEV2ZW50SGFuZGxlcjsKKworICAgIEhhc2hNYXA8aW50LCBPd25QdHI8
RWNvcmVfVGltZXI+ID4gbV90aW1lcnM7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9UaHJlYWQo
Y29uc3QgY2hhciopOworICAgIHN0YXRpYyB2b2lkKiB3b3JrUXVldWVUaHJlYWQoV29ya1F1ZXVl
Kik7CisgICAgdm9pZCBwZXJmb3JtV29yaygpOworICAgIHZvaWQgcGVyZm9ybUZpbGVEZXNjcmlw
dG9yV29yaygpOworICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCopOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2VmbC9Xb3JrUXVldWVFZmwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNhMzliYTllZDliMTI3MGZlN2RmOWU2Y2U2ODVkYjQ3M2E1ZjU4YTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9lZmwvV29ya1F1ZXVlRWZsLmNwcApA
QCAtMCwwICsxLDE3MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVj
dHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgi
CisKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCitjbGFzcyBUaW1lcldvcmtJdGVtIHsK
K3B1YmxpYzoKKyAgICBUaW1lcldvcmtJdGVtKGludCB0aW1lcklELCBjb25zdCBGdW5jdGlvbjx2
b2lkKCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICAgICAgOiBtX2Z1bmN0aW9u
KGZ1bmN0aW9uKQorICAgICAgICAsIG1fcXVldWUocXVldWUpCisgICAgICAgICwgbV90aW1lcklE
KHRpbWVySUQpCisgICAgeworICAgIH0KKyAgICB+VGltZXJXb3JrSXRlbSgpIHsgfQorCisgICAg
RnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb247IH0K
KyAgICBXb3JrUXVldWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorCisgICAg
aW50IHRpbWVySUQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVySUQ7IH0KKworcHJpdmF0ZToKKyAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOwor
ICAgIGludCBtX3RpbWVySUQ7Cit9OworCitzdGF0aWMgY29uc3QgaW50IGludmFsaWRTb2NrZXRE
ZXNjcmlwdG9yID0gLTE7CitzdGF0aWMgY29uc3QgaW50IHRocmVhZE1lc3NhZ2VTaXplID0gMTsK
K3N0YXRpYyBjb25zdCBjaGFyIGZpbmlzaFRocmVhZE1lc3NhZ2VbXSA9ICJGIjsKK3N0YXRpYyBj
b25zdCBjaGFyIHdha3VwVGhyZWFkTWVzc2FnZVtdID0gIlciOworCit2b2lkIFdvcmtRdWV1ZTo6
cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgaW50IGZkc1syXTsK
KyAgICBpZiAocGlwZShmZHMpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAg
IG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvciA9IGZkc1swXTsKKyAgICBtX3dyaXRlVG9QaXBlRGVz
Y3JpcHRvciA9IGZkc1sxXTsKKyAgICBGRF9aRVJPKCZtX2ZpbGVEZXNjcmlwdG9yU2V0KTsKKyAg
ICBGRF9TRVQobV9yZWFkRnJvbVBpcGVEZXNjcmlwdG9yLCAmbV9maWxlRGVzY3JpcHRvclNldCk7
CisgICAgbV9tYXhGaWxlRGVzY3JpcHRvciA9IG1fcmVhZEZyb21QaXBlRGVzY3JpcHRvcjsKKwor
ICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yOworCisgICAg
bV90aHJlYWRMb29wID0gdHJ1ZTsKKyAgICBjcmVhdGVUaHJlYWQocmVpbnRlcnByZXRfY2FzdDxX
VEY6OlRocmVhZEZ1bmN0aW9uPigmV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWQpLCB0aGlzLCBu
YW1lKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAg
c2VuZE1lc3NhZ2VUb1RocmVhZChmaW5pc2hUaHJlYWRNZXNzYWdlKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBlcmZvcm1Xb3JrKCkKK3sKKyAgICBtX3dvcmtJdGVtUXVldWVMb2NrLmxvY2soKTsK
KworICAgIHdoaWxlICghbV93b3JrSXRlbVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZCgpPiA+IHdvcmtJdGVtUXVldWU7CisgICAgICAgIG1fd29ya0l0ZW1R
dWV1ZS5zd2FwKHdvcmtJdGVtUXVldWUpOworCisgICAgICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2su
dW5sb2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ya0l0ZW1RdWV1ZS5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIHdvcmtJdGVtUXVldWVbaV0oKTsKKyAgICAgICAgbV93
b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisgICAgfQorICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2su
dW5sb2NrKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwZXJmb3JtRmlsZURlc2NyaXB0b3JXb3Jr
KCkKK3sKKyAgICBmZF9zZXQgcmVhZEZpbGVEZXNjcmlwdG9yU2V0ID0gbV9maWxlRGVzY3JpcHRv
clNldDsKKworICAgIGlmIChzZWxlY3QobV9tYXhGaWxlRGVzY3JpcHRvciArIDEsICZyZWFkRmls
ZURlc2NyaXB0b3JTZXQsIDAsIDAsIDApID49IDApIHsKKyAgICAgICAgaWYgKEZEX0lTU0VUKG1f
cmVhZEZyb21QaXBlRGVzY3JpcHRvciwgJnJlYWRGaWxlRGVzY3JpcHRvclNldCkpIHsKKyAgICAg
ICAgICAgIGNoYXIgcmVhZEJ1Zlt0aHJlYWRNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICBpZiAo
cmVhZChtX3JlYWRGcm9tUGlwZURlc2NyaXB0b3IsIHJlYWRCdWYsIHRocmVhZE1lc3NhZ2VTaXpl
KSA9PSAtMSkKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZWFkIGZyb20g
V29ya1F1ZXVlVGhyZWFkIHBpcGUiKTsKKyAgICAgICAgICAgIGlmICghc3RybmNtcChyZWFkQnVm
LCBmaW5pc2hUaHJlYWRNZXNzYWdlLCB0aHJlYWRNZXNzYWdlU2l6ZSkpCisgICAgICAgICAgICAg
ICAgbV90aHJlYWRMb29wID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9zb2Nr
ZXREZXNjcmlwdG9yICE9IGludmFsaWRTb2NrZXREZXNjcmlwdG9yICYmIEZEX0lTU0VUKG1fc29j
a2V0RGVzY3JpcHRvciwgJnJlYWRGaWxlRGVzY3JpcHRvclNldCkpCisgICAgICAgICAgICBtX3Nv
Y2tldEV2ZW50SGFuZGxlcigpOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OnNlbmRNZXNz
YWdlVG9UaHJlYWQoY29uc3QgY2hhciogbWVzc2FnZSkKK3sKKyAgICBpZiAod3JpdGUobV93cml0
ZVRvUGlwZURlc2NyaXB0b3IsIG1lc3NhZ2UsIHRocmVhZE1lc3NhZ2VTaXplKSA9PSAtMSkKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gd2FrZSB1cCBXb3JrUXVldWUgVGhyZWFkIik7Cit9
CisKK3ZvaWQqIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVl
KQoreworICAgIHdoaWxlICh3b3JrUXVldWUtPm1fdGhyZWFkTG9vcCkgeworICAgICAgICB3b3Jr
UXVldWUtPnBlcmZvcm1Xb3JrKCk7CisgICAgICAgIHdvcmtRdWV1ZS0+cGVyZm9ybUZpbGVEZXNj
cmlwdG9yV29yaygpOworICAgIH0KKworICAgIGNsb3NlKHdvcmtRdWV1ZS0+bV9yZWFkRnJvbVBp
cGVEZXNjcmlwdG9yKTsKKyAgICBjbG9zZSh3b3JrUXVldWUtPm1fd3JpdGVUb1BpcGVEZXNjcmlw
dG9yKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+
JiBmdW5jdGlvbikKK3sKKyAgICBpZiAobV9zb2NrZXREZXNjcmlwdG9yICE9IGludmFsaWRTb2Nr
ZXREZXNjcmlwdG9yKQorICAgICAgICBMT0dfRVJST1IoIiVkIGlzIGFscmVhZHkgcmVnaXN0ZXJk
LiIsIGZpbGVEZXNjcmlwdG9yKTsKKworICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGZpbGVEZXNj
cmlwdG9yOworICAgIG1fc29ja2V0RXZlbnRIYW5kbGVyID0gZnVuY3Rpb247CisKKyAgICBpZiAo
ZmlsZURlc2NyaXB0b3IgPiBtX21heEZpbGVEZXNjcmlwdG9yKQorICAgICAgICBtX21heEZpbGVE
ZXNjcmlwdG9yID0gZmlsZURlc2NyaXB0b3I7CisgICAgRkRfU0VUKGZpbGVEZXNjcmlwdG9yLCAm
bV9maWxlRGVzY3JpcHRvclNldCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyU29j
a2V0RXZlbnRIYW5kbGVyKGludCBmaWxlRGVzY3JpcHRvcikKK3sKKyAgICBtX3NvY2tldERlc2Ny
aXB0b3IgPSBpbnZhbGlkU29ja2V0RGVzY3JpcHRvcjsKKworICAgIGlmIChmaWxlRGVzY3JpcHRv
ciA9PSBtX21heEZpbGVEZXNjcmlwdG9yKQorICAgICAgICBtX21heEZpbGVEZXNjcmlwdG9yID0g
bV9yZWFkRnJvbVBpcGVEZXNjcmlwdG9yOworICAgIEZEX0NMUihmaWxlRGVzY3JpcHRvciwgJm1f
ZmlsZURlc2NyaXB0b3JTZXQpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goY29uc3Qg
RnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
d29ya0l0ZW1RdWV1ZUxvY2spOworICAgIG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoZnVuY3Rpb24p
OworICAgIHNlbmRNZXNzYWdlVG9UaHJlYWQod2FrdXBUaHJlYWRNZXNzYWdlKTsKK30KKworYm9v
bCBXb3JrUXVldWU6OnRpbWVyRmlyZWQodm9pZCogZGF0YSkKK3sKKyAgICBUaW1lcldvcmtJdGVt
KiBpdGVtID0gc3RhdGljX2Nhc3Q8VGltZXJXb3JrSXRlbSo+KGRhdGEpOworICAgIGlmIChpdGVt
ICYmIGl0ZW0tPnF1ZXVlKCktPm1faXNWYWxpZCkgeworICAgICAgICBpdGVtLT5xdWV1ZSgpLT5k
aXNwYXRjaChpdGVtLT5mdW5jdGlvbigpKTsKKyAgICAgICAgaXRlbS0+cXVldWUoKS0+bV90aW1l
cnMudGFrZShpdGVtLT50aW1lcklEKCkpOworICAgICAgICBkZWxldGUgaXRlbTsKKyAgICB9CisK
KyAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOworfQorCit2b2lkIFdvcmtRdWV1ZTo6
ZGlzcGF0Y2hBZnRlckRlbGF5KGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBkb3Vi
bGUgZGVsYXkpCit7CisgICAgc3RhdGljIGludCB0aW1lcklkID0gMDsKKyAgICBtX3RpbWVycy5z
ZXQodGltZXJJZCwgYWRvcHRQdHIoZWNvcmVfdGltZXJfYWRkKGRlbGF5LCByZWludGVycHJldF9j
YXN0PEVjb3JlX1Rhc2tfQ2I+KHRpbWVyRmlyZWQpLCBuZXcgVGltZXJXb3JrSXRlbSh0aW1lcklk
LCBmdW5jdGlvbiwgdGhpcykpKSk7CisgICAgdGltZXJJZCsrOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCBkOGE3OTdhNmNiNjI0OTZjNmQzNzkzZmEzYmM1OWJiYjkxMTlkNzg5Li45
YTFmMDliNGI2ZjQ5YWQ3Mjc4NzRkZjUxMTU1MjYyMzk4NzAyMjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtNyw3ICs3LDYgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9MSU5LX0ZMQUdT
CiAKIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFBsYXRmb3JtL2VmbC9Nb2R1bGVF
ZmwuY3BwCi0gICAgUGxhdGZvcm0vZWZsL1J1bkxvb3BFZmwuY3BwCiAgICAgUGxhdGZvcm0vZWZs
L1dvcmtRdWV1ZUVmbC5jcHAKICAgICBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3Bw
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>