Commit 962b5940 by olly Committed by Oliver Woodman

Update ExoPlayer documentation + tweak method naming

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=131843222
parent 9adce6b0
Showing with 138 additions and 126 deletions
......@@ -95,7 +95,7 @@ import java.util.Locale;
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
int periodCount = timeline.getPeriodCount();
int windowCount = timeline.getWindowCount();
Log.d(TAG, "sourceInfo [periodCount=" + periodCount + ", windowCount=" + windowCount);
......
......@@ -330,7 +330,7 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi
}
MediaSource mediaSource = mediaSources.length == 1 ? mediaSources[0]
: new ConcatenatingMediaSource(mediaSources);
player.setMediaSource(mediaSource, !shouldRestorePosition);
player.prepare(mediaSource, !shouldRestorePosition);
playerNeedsSource = false;
updateButtonVisibilities();
}
......@@ -431,7 +431,7 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}
......
......@@ -80,7 +80,7 @@ public class FlacPlaybackTest extends InstrumentationTestCase {
MatroskaExtractor.FACTORY,
null,
null);
player.setMediaSource(mediaSource);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Looper.loop();
}
......@@ -96,7 +96,7 @@ public class FlacPlaybackTest extends InstrumentationTestCase {
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}
......
......@@ -80,7 +80,7 @@ public class OpusPlaybackTest extends InstrumentationTestCase {
MatroskaExtractor.FACTORY,
null,
null);
player.setMediaSource(mediaSource);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Looper.loop();
}
......@@ -96,7 +96,7 @@ public class OpusPlaybackTest extends InstrumentationTestCase {
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}
......
......@@ -99,7 +99,7 @@ public class VpxPlaybackTest extends InstrumentationTestCase {
player.sendMessages(new ExoPlayer.ExoPlayerMessage(videoRenderer,
LibvpxVideoRenderer.MSG_SET_OUTPUT_BUFFER_RENDERER,
new VpxVideoSurfaceView(context)));
player.setMediaSource(mediaSource);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Looper.loop();
}
......@@ -115,7 +115,7 @@ public class VpxPlaybackTest extends InstrumentationTestCase {
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}
......
......@@ -15,83 +15,93 @@
*/
package com.google.android.exoplayer2;
import com.google.android.exoplayer2.source.MediaPeriod;
import com.google.android.exoplayer2.audio.MediaCodecAudioRenderer;
import com.google.android.exoplayer2.metadata.MetadataRenderer;
import com.google.android.exoplayer2.source.ConcatenatingMediaSource;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MergingMediaSource;
import com.google.android.exoplayer2.source.SingleSampleMediaSource;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
import com.google.android.exoplayer2.text.TextRenderer;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.video.MediaCodecVideoRenderer;
/**
* An extensible media player exposing traditional high-level media player functionality, such as
* the ability to buffer media, play, pause and seek.
* the ability to buffer media, play, pause and seek. Instances can be obtained from
* {@link ExoPlayerFactory}.
*
* <p>Topics covered here are:
* <ol>
* <li><a href="#Assumptions">Assumptions and player composition</a>
* <li><a href="#Threading">Threading model</a>
* <li><a href="#State">Player state</a>
* </ol>
*
* <a name="Assumptions"></a>
* <h3>Assumptions and player construction</h3>
*
* <p>The implementation is designed to make no assumptions about (and hence impose no restrictions
* on) the type of the media being played, how and where it is stored, or how it is rendered.
* Rather than implementing the loading and rendering of media directly, {@link ExoPlayer} instead
* delegates this work to one or more {@link Renderer}s, which are injected when the player
* is created. Hence {@link ExoPlayer} is capable of loading and playing any media for which a
* {@link Renderer} implementation can be provided.
* <h3>Player composition</h3>
* <p>ExoPlayer is designed to make few assumptions about (and hence impose few restrictions on) the
* type of the media being played, how and where it is stored, and how it is rendered. Rather than
* implementing the loading and rendering of media directly, ExoPlayer implementations delegate this
* work to components that are injected when a player is created or when it's prepared for playback.
* Components common to all ExoPlayer implementations are:
* <ul>
* <li>A <b>{@link MediaSource}</b> that defines the media to be played, loads the media, and from
* which the loaded media can be read. A MediaSource is injected via {@link #prepare} to prepare
* the player for playback. The library provides default implementations for regular media files
* ({@link ExtractorMediaSource}), DASH ({@link DashMediaSource}), SmoothStreaming
* ({@link SsMediaSource}) and HLS ({@link HlsMediaSource}), implementations for merging
* ({@link MergingMediaSource}) and concatenating ({@link ConcatenatingMediaSource}) other
* MediaSources, and an implementation for loading single samples
* ({@link SingleSampleMediaSource}) most often used for side-loaded subtitle and closed
* caption files.</li>
* <li><b>{@link Renderer}</b>s that render individual components of the media. The library
* provides default implementations for common media types ({@link MediaCodecVideoRenderer},
* {@link MediaCodecAudioRenderer}, {@link TextRenderer} and {@link MetadataRenderer}). A Renderer
* consumes media of its corresponding type from the MediaSource being played. Renderers are
* injected when the player is created.</li>
* <li>A <b>{@link TrackSelector}</b> that selects tracks provided by the MediaSource to be
* consumed by each of the available Renderers. The library provides a default implementation
* ({@link DefaultTrackSelector}) suitable for most use cases. A TrackSelector is injected when
* the player is created.</li>
* <li>A <b>{@link LoadControl}</b> that controls when the MediaSource buffers more media, and how
* much media is buffered. The library provides a default implementation
* ({@link DefaultLoadControl}) suitable for most use cases. A LoadControl is injected when the
* player is created.</li>
* </ul>
* <p>An ExoPlayer can be built using the default components provided by the library, but may also
* be built using custom implementations if non-standard behaviors are required. For example a
* custom LoadControl could be injected to change the player's buffering strategy, or a custom
* Renderer could be injected to use a video codec not supported natively by Android.
*
* <p>{@link com.google.android.exoplayer2.audio.MediaCodecAudioRenderer} and
* {@link com.google.android.exoplayer2.video.MediaCodecVideoRenderer} can be used for the common
* cases of rendering audio and video. These components in turn require an <i>upstream</i>
* {@link MediaPeriod} to be injected through their constructors, where upstream is defined to
* denote a component that is closer to the source of the media. This pattern of upstream dependency
* injection is actively encouraged, since it means that the functionality of the player is built up
* through the composition of components that can easily be exchanged for alternate implementations.
* For example a {@link MediaPeriod} implementation may require a further upstream data loading
* component to be injected through its constructor, with different implementations enabling the
* loading of data from various sources.
* <p>The concept of injecting components that implement pieces of player functionality is present
* throughout the library. The default component implementations listed above delegate work to
* further injected components. This allows many sub-components to be individually replaced with
* custom implementations. For example the default MediaSource implementations require one or more
* {@link DataSource} factories to be injected via their constructors. By providing a custom factory
* it's possible to load data from a non-standard source or through a different network stack.
*
* <a name="Threading"></a>
* <h3>Threading model</h3>
*
* <p>The figure below shows the {@link ExoPlayer} threading model.</p>
* <p align="center"><img src="doc-files/exoplayer-threading-model.png"
* alt="MediaPlayer state diagram"
* border="0"></p>
* <p>The figure below shows ExoPlayer's threading model.</p>
* <p align="center">
* <img src="doc-files/exoplayer-threading-model.svg" alt="ExoPlayer's threading model">
* </p>
*
* <ul>
* <li>It is recommended that instances are created and accessed from a single application thread.
* An application's main thread is ideal. Accessing an instance from multiple threads is
* <li>It is recommended that ExoPlayer instances are created and accessed from a single application
* thread. The application's main thread is ideal. Accessing an instance from multiple threads is
* discouraged, however if an application does wish to do this then it may do so provided that it
* ensures accesses are synchronized.
* </li>
* <li>Registered {@link EventListener}s are called on the thread that created the {@link ExoPlayer}
* instance.</li>
* <li>An internal playback thread is responsible for managing playback and invoking the
* {@link Renderer}s in order to load and play the media.</li>
* <li>{@link Renderer} implementations (or any upstream components that they depend on) may
* use additional background threads (e.g. to load data). These are implementation specific.</li>
* ensures accesses are synchronized.</li>
* <li>Registered listeners are called on the thread that created the ExoPlayer instance.</li>
* <li>An internal playback thread is responsible for playback. Injected player components such as
* Renderers, MediaSources, TrackSelectors and LoadControls are called by the player on this
* thread.</li>
* <li>When the application performs an operation on the player, for example a seek, a message is
* delivered to the internal playback thread via a message queue. The internal playback thread
* consumes messages from the queue and performs the corresponding operations. Similarly, when a
* playback event occurs on the internal playback thread, a message is delivered to the application
* thread via a second message queue. The application thread consumes messages from the queue,
* updating the application visible state and calling corresponding listener methods.</li>
* <li>Injected player components may use additional background threads. For example a MediaSource
* may use a background thread to load data. These are implementation specific.</li>
* </ul>
*
* <a name="State"></a>
* <h3>Player state</h3>
*
* <p>The components of an {@link ExoPlayer}'s state can be divided into two distinct groups. The
* state accessed by calling {@link #getPlayWhenReady()} is only ever changed by invoking
* {@link #setPlayWhenReady(boolean)}, and is never changed as a result of operations that have been
* performed asynchronously by the playback thread. In contrast, the playback state accessed by
* calling {@link #getPlaybackState()} is only ever changed as a result of operations completing on
* the playback thread, as illustrated below.</p>
*
* <p align="center"><img src="doc-files/exoplayer-state.png"
* alt="ExoPlayer state"
* border="0"></p>
*
* <p>The possible playback state transitions are shown below. Transitions can be triggered either
* by changes in the state of the {@link Renderer}s being used, or as a result of
* {@link #setMediaSource(MediaSource)}, {@link #stop()} or {@link #release()} being called.</p>
* <p align="center"><img src="doc-files/exoplayer-playbackstate.png"
* alt="ExoPlayer playback state transitions"
* border="0"></p>
*/
public interface ExoPlayer {
......@@ -117,23 +127,13 @@ public interface ExoPlayer {
*/
void onPlayerStateChanged(boolean playWhenReady, int playbackState);
// TODO: Should be windowIndex and position in the window.
/**
* Called when the player's position changes due to a discontinuity (i.e. due to seeking,
* playback transitioning to the next window, or a source induced discontinuity).
* Called when timeline and/or manifest has been refreshed.
*
* @param periodIndex The index of the period being played.
* @param positionMs The playback position in that period, in milliseconds.
* @param timeline The latest timeline.
* @param manifest The latest manifest.
*/
void onPositionDiscontinuity(int periodIndex, long positionMs);
/**
* Called when manifest and/or timeline has been refreshed.
*
* @param timeline The source's timeline.
* @param manifest The loaded manifest.
*/
void onSourceInfoRefreshed(Timeline timeline, Object manifest);
void onTimelineChanged(Timeline timeline, Object manifest);
/**
* Called when an error occurs. The playback state will transition to {@link #STATE_IDLE}
......@@ -144,6 +144,16 @@ public interface ExoPlayer {
*/
void onPlayerError(ExoPlaybackException error);
// TODO: Should be windowIndex and position in the window.
/**
* Called when the player's position changes due to a discontinuity (i.e. due to seeking,
* playback transitioning to the next window, or a source induced discontinuity).
*
* @param periodIndex The index of the period being played.
* @param positionMs The playback position in that period, in milliseconds.
*/
void onPositionDiscontinuity(int periodIndex, long positionMs);
}
/**
......@@ -239,19 +249,21 @@ public interface ExoPlayer {
int getPlaybackState();
/**
* Sets the {@link MediaSource} to play. Equivalent to {@code setMediaSource(mediaSource, true)}.
* Prepares the player to play the provided {@link MediaSource}. Equivalent to
* {@code prepare(mediaSource, true)}.
*/
void setMediaSource(MediaSource mediaSource);
void prepare(MediaSource mediaSource);
/**
* Sets the {@link MediaSource} to play.
* Prepares the player to play the provided {@link MediaSource}, optionally resetting the playback
* position the default position in the first {@link Timeline.Window}.
*
* @param mediaSource The {@link MediaSource} to play.
* @param resetPosition Whether the playback position should be reset to the source's default
* position. If false, playback will start from the position defined by
* {@link #getCurrentWindowIndex()} and {@link #getCurrentPosition()}.
* @param resetPosition Whether the playback position should be reset to the default position in
* the first {@link Timeline.Window}. If false, playback will start from the position defined
* by {@link #getCurrentWindowIndex()} and {@link #getCurrentPosition()}.
*/
void setMediaSource(MediaSource mediaSource, boolean resetPosition);
void prepare(MediaSource mediaSource, boolean resetPosition);
/**
* Sets whether playback should proceed when {@link #getPlaybackState()} == {@link #STATE_READY}.
......@@ -279,17 +291,15 @@ public interface ExoPlayer {
/**
* Seeks to the default position associated with the current window. The position can depend on
* the type of source passed to {@link #setMediaSource(MediaSource)}. For live streams it will
* typically be the live edge of the window. For other streams it will typically be the start of
* the window.
* the type of source passed to {@link #prepare(MediaSource)}. For live streams it will typically
* be the live edge of the window. For other streams it will typically be the start of the window.
*/
void seekToDefaultPosition();
/**
* Seeks to the default position associated with the specified window. The position can depend on
* the type of source passed to {@link #setMediaSource(MediaSource)}. For live streams it will
* typically be the live edge of the window. For other streams it will typically be the start of
* the window.
* the type of source passed to {@link #prepare(MediaSource)}. For live streams it will typically
* be the live edge of the window. For other streams it will typically be the start of the window.
*
* @param windowIndex The index of the window whose associated default position should be seeked
* to.
......@@ -353,7 +363,7 @@ public interface ExoPlayer {
/**
* Returns the current manifest. The type depends on the {@link MediaSource} passed to
* {@link #setMediaSource(MediaSource)} or {@link #setMediaSource(MediaSource, boolean)}.
* {@link #prepare}.
*/
Object getCurrentManifest();
......
......@@ -28,7 +28,7 @@ import com.google.android.exoplayer2.util.Assertions;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* Concrete implementation of {@link ExoPlayer}.
* An {@link ExoPlayer} implementation. Instances can be obtained from {@link ExoPlayerFactory}.
*/
/* package */ final class ExoPlayerImpl implements ExoPlayer {
......@@ -62,8 +62,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
* @param loadControl The {@link LoadControl} that will be used by the instance.
*/
@SuppressLint("HandlerLeak")
public ExoPlayerImpl(Renderer[] renderers, TrackSelector trackSelector,
LoadControl loadControl) {
public ExoPlayerImpl(Renderer[] renderers, TrackSelector trackSelector, LoadControl loadControl) {
Log.i(TAG, "Init " + ExoPlayerLibraryInfo.VERSION);
Assertions.checkNotNull(renderers);
Assertions.checkState(renderers.length > 0);
......@@ -99,12 +98,12 @@ import java.util.concurrent.CopyOnWriteArraySet;
}
@Override
public void setMediaSource(MediaSource mediaSource) {
setMediaSource(mediaSource, true);
public void prepare(MediaSource mediaSource) {
prepare(mediaSource, true);
}
@Override
public void setMediaSource(MediaSource mediaSource, boolean resetPosition) {
public void prepare(MediaSource mediaSource, boolean resetPosition) {
timeline = null;
internalPlayer.setMediaSource(mediaSource, resetPosition);
}
......@@ -342,7 +341,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
timeline = timelineAndManifest.first;
manifest = timelineAndManifest.second;
for (EventListener listener : listeners) {
listener.onSourceInfoRefreshed(timeline, manifest);
listener.onTimelineChanged(timeline, manifest);
}
break;
}
......
......@@ -45,8 +45,8 @@ import java.util.ArrayList;
import java.util.List;
/**
* An {@link ExoPlayer} that uses default {@link Renderer} components. Instances can be obtained
* from {@link ExoPlayerFactory}.
* An {@link ExoPlayer} implementation that uses default {@link Renderer} components. Instances can
* be obtained from {@link ExoPlayerFactory}.
*/
@TargetApi(16)
public final class SimpleExoPlayer implements ExoPlayer {
......@@ -367,13 +367,13 @@ public final class SimpleExoPlayer implements ExoPlayer {
}
@Override
public void setMediaSource(MediaSource mediaSource) {
player.setMediaSource(mediaSource);
public void prepare(MediaSource mediaSource) {
player.prepare(mediaSource);
}
@Override
public void setMediaSource(MediaSource mediaSource, boolean resetPosition) {
player.setMediaSource(mediaSource, resetPosition);
public void prepare(MediaSource mediaSource, boolean resetPosition) {
player.prepare(mediaSource, resetPosition);
}
@Override
......
......@@ -89,7 +89,7 @@ public final class DebugTextViewHelper implements Runnable, ExoPlayer.EventListe
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="39 1249 524 240" width="524pt" height="20pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><path d="M 70 1260 L 274 1260 C 285.0457 1260 294 1268.9543 294 1280 L 294 1426 C 294 1437.0457 285.0457 1446 274 1446 L 70 1446 C 58.954305 1446 50 1437.0457 50 1426 L 50 1280 C 50 1268.9543 58.954305 1260 70 1260 Z" fill="white" fill-opacity="0"/><path d="M 70 1260 L 274 1260 C 285.0457 1260 294 1268.9543 294 1280 L 294 1426 C 294 1437.0457 285.0457 1446 274 1446 L 70 1446 C 58.954305 1446 50 1437.0457 50 1426 L 50 1280 C 50 1268.9543 58.954305 1260 70 1260 Z" stroke="black" stroke-opacity=".3" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><path d="M 332 1260 L 448 1260 C 459.0457 1260 468 1268.9543 468 1280 L 468 1426 C 468 1437.0457 459.0457 1446 448 1446 L 332 1446 C 320.9543 1446 312 1437.0457 312 1426 L 312 1280 C 312 1268.9543 320.9543 1260 332 1260 Z" fill="white" fill-opacity="0"/><path d="M 332 1260 L 448 1260 C 459.0457 1260 468 1268.9543 468 1280 L 468 1426 C 468 1437.0457 459.0457 1446 448 1446 L 332 1446 C 320.9543 1446 312 1437.0457 312 1426 L 312 1280 C 312 1268.9543 320.9543 1260 332 1260 Z" stroke="black" stroke-opacity=".3" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><path d="M 506 1260 L 532 1260 C 543.0457 1260 552 1268.9543 552 1280 L 552 1426 C 552 1437.0457 543.0457 1446 532 1446 L 506 1446 C 494.9543 1446 486 1437.0457 486 1426 L 486 1280 C 486 1268.9543 494.9543 1260 506 1260 Z" fill="white" fill-opacity="0"/><path d="M 506 1260 L 532 1260 C 543.0457 1260 552 1268.9543 552 1280 L 552 1426 C 552 1437.0457 543.0457 1446 532 1446 L 506 1446 C 494.9543 1446 486 1437.0457 486 1426 L 486 1280 C 486 1268.9543 494.9543 1260 506 1260 Z" stroke="black" stroke-opacity=".3" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><path d="M 420 1322 L 512 1322 C 519.732 1322 526 1328.268 526 1336 L 526 1336 C 526 1343.732 519.732 1350 512 1350 L 420 1350 C 412.26801 1350 406 1343.732 406 1336 L 406 1336 C 406 1328.268 412.26801 1322 420 1322 Z" fill="white"/><path d="M 420 1322 L 512 1322 C 519.732 1322 526 1328.268 526 1336 L 526 1336 C 526 1343.732 519.732 1350 512 1350 L 420 1350 C 412.26801 1350 406 1343.732 406 1336 L 406 1336 C 406 1328.268 412.26801 1322 420 1322 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 213 1287 L 373 1287 C 381.28427 1287 388 1293.7157 388 1302 L 388 1422 C 388 1430.2843 381.28427 1437 373 1437 L 213 1437 C 204.71573 1437 198 1430.2843 198 1422 L 198 1302 C 198 1293.7157 204.71573 1287 213 1287 Z" fill="white"/><path d="M 213 1287 L 373 1287 C 381.28427 1287 388 1293.7157 388 1302 L 388 1422 C 388 1430.2843 381.28427 1437 373 1437 L 213 1437 C 204.71573 1437 198 1430.2843 198 1422 L 198 1302 C 198 1293.7157 204.71573 1287 213 1287 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(203 1356)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="67.211914" y="10" textLength="45.576172">ExoPlayer</tspan></text><path d="M 75 1287 L 111 1287 C 119.28427 1287 126 1293.7157 126 1302 L 126 1422 C 126 1430.2843 119.28427 1437 111 1437 L 75 1437 C 66.71573 1437 60 1430.2843 60 1422 L 60 1302 C 60 1293.7157 66.71573 1287 75 1287 Z" fill="white"/><path d="M 75 1287 L 111 1287 C 119.28427 1287 126 1293.7157 126 1302 L 126 1422 C 126 1430.2843 119.28427 1437 111 1437 L 75 1437 C 66.71573 1437 60 1430.2843 60 1422 L 60 1302 C 60 1293.7157 66.71573 1287 75 1287 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(65 1350)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="3.5395508" y="10" textLength="51.69922">Application </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="17.157715" y="22" textLength="21.68457">code</tspan></text><path d="M 420 1369.75 L 512 1369.75 C 519.732 1369.75 526 1376.018 526 1383.75 L 526 1383.75 C 526 1391.482 519.732 1397.75 512 1397.75 L 420 1397.75 C 412.26801 1397.75 406 1391.482 406 1383.75 L 406 1383.75 C 406 1376.018 412.26801 1369.75 420 1369.75 Z" fill="white"/><path d="M 420 1369.75 L 512 1369.75 C 519.732 1369.75 526 1376.018 526 1383.75 L 526 1383.75 C 526 1391.482 519.732 1397.75 512 1397.75 L 420 1397.75 C 412.26801 1397.75 406 1391.482 406 1383.75 L 406 1383.75 C 406 1376.018 412.26801 1369.75 420 1369.75 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(411 1377.75)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="27.758789" y="10" textLength="54.482422">LoadControl</tspan></text><path d="M 420 1408.125 L 512 1408.125 C 519.732 1408.125 526 1414.393 526 1422.125 L 526 1422.125 C 526 1429.857 519.732 1436.125 512 1436.125 L 420 1436.125 C 412.26801 1436.125 406 1429.857 406 1422.125 L 406 1422.125 C 406 1414.393 412.26801 1408.125 420 1408.125 Z" fill="white"/><path d="M 420 1408.125 L 512 1408.125 C 519.732 1408.125 526 1414.393 526 1422.125 L 526 1422.125 C 526 1429.857 519.732 1436.125 512 1436.125 L 420 1436.125 C 412.26801 1436.125 406 1429.857 406 1422.125 L 406 1422.125 C 406 1414.393 412.26801 1408.125 420 1408.125 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(411 1416.125)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="24.34082" y="10" textLength="6.1083984">T</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="30.083008" y="10" textLength="55.576172">rackSelector</tspan></text><path d="M 420 1287 L 512 1287 C 519.732 1287 526 1293.268 526 1301 L 526 1301 C 526 1308.732 519.732 1315 512 1315 L 420 1315 C 412.26801 1315 406 1308.732 406 1301 L 406 1301 C 406 1293.268 412.26801 1287 420 1287 Z" fill="white"/><path d="M 420 1287 L 512 1287 C 519.732 1287 526 1293.268 526 1301 L 526 1301 C 526 1308.732 519.732 1315 512 1315 L 420 1315 C 412.26801 1315 406 1308.732 406 1301 L 406 1301 C 406 1293.268 412.26801 1287 420 1287 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(411 1295)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="25.539551" y="10" textLength="58.9209">MediaSource</tspan></text><path d="M 428.4375 1328 L 519.5625 1328 C 527.5361 1328 534 1334.4639 534 1342.4375 L 534 1342.4375 C 534 1350.4111 527.5361 1356.875 519.5625 1356.875 L 428.4375 1356.875 C 420.4639 1356.875 414 1350.4111 414 1342.4375 L 414 1342.4375 C 414 1334.4639 420.4639 1328 428.4375 1328 Z" fill="white"/><path d="M 428.4375 1328 L 519.5625 1328 C 527.5361 1328 534 1334.4639 534 1342.4375 L 534 1342.4375 C 534 1350.4111 527.5361 1356.875 519.5625 1356.875 L 428.4375 1356.875 C 420.4639 1356.875 414 1350.4111 414 1342.4375 L 414 1342.4375 C 414 1334.4639 420.4639 1328 428.4375 1328 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 436 1334 L 528 1334 C 535.732 1334 542 1340.268 542 1348 L 542 1348 C 542 1355.732 535.732 1362 528 1362 L 436 1362 C 428.26801 1362 422 1355.732 422 1348 L 422 1348 C 422 1340.268 428.26801 1334 436 1334 Z" fill="white"/><path d="M 436 1334 L 528 1334 C 535.732 1334 542 1340.268 542 1348 L 542 1348 C 542 1355.732 535.732 1362 528 1362 L 436 1362 C 428.26801 1362 422 1355.732 422 1348 L 422 1348 C 422 1340.268 428.26801 1334 436 1334 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(427 1342)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="31.655273" y="10" textLength="46.689453">Renderers</tspan></text><path d="M 212 1389 L 212 1335 C 212 1332.2386 214.23858 1330 217 1330 L 251 1330 C 253.76142 1330 256 1332.2386 256 1335 L 256 1389 C 256 1391.7614 253.76142 1394 251 1394 L 217 1394 C 214.23858 1394 212 1391.7614 212 1389 Z" fill="#f0f0f0"/><path d="M 212 1389 L 212 1335 C 212 1332.2386 214.23858 1330 217 1330 L 251 1330 C 253.76142 1330 256 1332.2386 256 1335 L 256 1389 C 256 1391.7614 253.76142 1394 251 1394 L 217 1394 C 214.23858 1394 212 1391.7614 212 1389 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(222 1389) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.5395508" y="10" textLength="51.69922">Application </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".8769531" y="22" textLength="52.246094">visible state</tspan></text><path d="M 257 1297 L 329 1297 C 331.76142 1297 334 1299.2386 334 1302 L 334 1312 C 334 1314.7614 331.76142 1317 329 1317 L 257 1317 C 254.23858 1317 252 1314.7614 252 1312 L 252 1302 C 252 1299.2386 254.23858 1297 257 1297 Z" fill="#f0f0f0"/><path d="M 257 1297 L 329 1297 C 331.76142 1297 334 1299.2386 334 1302 L 334 1312 C 334 1314.7614 331.76142 1317 329 1317 L 257 1317 C 254.23858 1317 252 1314.7614 252 1312 L 252 1302 C 252 1299.2386 254.23858 1297 257 1297 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(257 1301)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".41894531" y="10" textLength="71.16211">Message queue</tspan></text><path d="M 257 1407 L 329 1407 C 331.76142 1407 334 1409.2386 334 1412 L 334 1422 C 334 1424.7614 331.76142 1427 329 1427 L 257 1427 C 254.23858 1427 252 1424.7614 252 1422 L 252 1412 C 252 1409.2386 254.23858 1407 257 1407 Z" fill="#f0f0f0"/><path d="M 257 1407 L 329 1407 C 331.76142 1407 334 1409.2386 334 1412 L 334 1422 C 334 1424.7614 331.76142 1427 329 1427 L 257 1427 C 254.23858 1427 252 1424.7614 252 1422 L 252 1412 C 252 1409.2386 254.23858 1407 257 1407 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(257 1411)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".41894531" y="10" textLength="71.16211">Message queue</tspan></text><text transform="translate(55 1451)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="77.527344" y="10" textLength="78.945312">application thread</tspan></text><text transform="translate(317 1451)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="19.911621" y="10" textLength="106.17676">internal playback thread</tspan></text><text transform="translate(491 1451)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="1.8696289" y="10" textLength="55.039062">background </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="7.992676" y="22" textLength="40.014648">thread(s)</tspan></text><line x1="379.00036" y1="1332.99964" x2="399.49425" y2="1312.50575" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="381.32324" y1="1350.8131" x2="397.86349" y2="1344.9059" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="381.42508" y1="1372.1009" x2="397.03726" y2="1377.1191" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="379.1903" y1="1389.6265" x2="399.9221" y2="1409.2477" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 328 1389 L 328 1335 C 328 1332.2386 330.23858 1330 333 1330 L 367 1330 C 369.76142 1330 372 1332.2386 372 1335 L 372 1389 C 372 1391.7614 369.76142 1394 367 1394 L 333 1394 C 330.23858 1394 328 1391.7614 328 1389 Z" fill="#f0f0f0"/><path d="M 328 1389 L 328 1335 C 328 1332.2386 330.23858 1330 333 1330 L 367 1330 C 369.76142 1330 372 1332.2386 372 1335 L 372 1389 C 372 1391.7614 369.76142 1394 367 1394 L 333 1394 C 330.23858 1394 328 1391.7614 328 1389 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(338 1389) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="7.2661133" y="10" textLength="42.246094">playback </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x="17.546875" y="22" textLength="18.90625">loop</tspan></text><path d="M 350 1394 L 350 1418 L 346 1418 L 343.9 1418" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 334 1307 L 350 1307 L 350 1312 L 350 1320.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="252" y1="1417" x2="135.9" y2="1417" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="126" y1="1307" x2="242.1" y2="1307" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="234.25" y1="1307" x2="234.19045" y2="1320.1001" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="234.25" y1="1417" x2="234.19045" y2="1403.8999" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="135.9" y1="1362" x2="202.1" y2="1362" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="144.5" y="1338" width="35" height="22" fill="white" fill-opacity="0"/><text transform="translate(149.5 1343)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x=".2734375" y="10" textLength="24.453125">get*()</tspan></text><rect x="136" y="1260" width="52" height="46" fill="white" fill-opacity="0"/><text transform="translate(141 1265)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".43603516" y="10" textLength="41.12793">prepare()</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="1.8276367" y="22" textLength="27.231445">seekT</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="27.950684" y="22" textLength="12.22168">o()</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="9.330078" y="34" textLength="23.339844">etc…</tspan></text><rect x="127.5" y="1393" width="69" height="22" fill="white" fill-opacity="0"/><text transform="translate(132.5 1398)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".3203125" y="10" textLength="58.359375">Listener calls</tspan></text></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 687 478 108" width="478pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="198.47753" y="700" width="148.4428" height="25" fill="#dee1f8"/><rect x="198.47753" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.47753 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="347.1864" y="700" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="700" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period3</tspan></text><rect x="254" y="730" width="195" height="25" fill="#c3f9bc"/><rect x="254" y="730" width="195" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(259 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="73.044434" y="10" textLength="38.911133">window2</tspan></text><circle cx="405" cy="742.5" r="5.000008" fill="black"/><circle cx="405" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="765" x2="485.1" y2="765" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="763.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 768.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="700" width="148.4428" height="25" fill="#dee1f8"/><rect x="50" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="730" width="148.4428" height="25" fill="#c3f9bc"/><rect x="50" y="730" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="742.5" r="5.000008" fill="black"/><circle cx="50" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 687 478 108" width="478pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="198.47753" y="700" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="198.47753" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.47753 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="347.1864" y="700" width="147.8136" height="25" fill="black" fill-opacity="0"/><rect x="347.1864" y="700" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period3</tspan></text><rect x="254" y="730" width="195" height="25" fill="black" fill-opacity="0"/><rect x="254" y="730" width="195" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(259 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="73.044434" y="10" textLength="38.911133">window2</tspan></text><circle cx="405" cy="742.5" r="5.000008" fill="black"/><circle cx="405" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="765" x2="485.1" y2="765" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="763.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 768.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="700" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="730" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="730" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="742.5" r="5.000008" fill="black"/><circle cx="50" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 487 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="500" width="445" height="25" fill="#dee1f8"/><rect x="50" y="500" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 506.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="530" width="399" height="25" fill="#c3f9bc"/><rect x="50" y="530" width="399" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 536.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="175.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="542.5" r="5.000008" fill="black"/><circle cx="405" cy="542.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="565" x2="485.1" y2="565" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="563.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 568.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 487 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="500" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="500" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 506.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="530" width="399" height="25" fill="black" fill-opacity="0"/><rect x="50" y="530" width="399" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 536.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="175.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="542.5" r="5.000008" fill="black"/><circle cx="405" cy="542.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="565" x2="485.1" y2="565" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="563.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 568.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 387 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="400" width="445" height="25" fill="#dee1f8"/><rect x="50" y="400" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 406.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="214.6568" y="430" width="234.3432" height="25" fill="#c3f9bc"/><rect x="214.6568" y="430" width="234.3432" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.6568 436.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.716034" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="442.5" r="5.000008" fill="black"/><circle cx="405" cy="442.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="465" x2="485.1" y2="465" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="463.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 468.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 387 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="400" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="400" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 406.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="214.6568" y="430" width="234.3432" height="25" fill="black" fill-opacity="0"/><rect x="214.6568" y="430" width="234.3432" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.6568 436.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.716034" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="442.5" r="5.000008" fill="black"/><circle cx="405" cy="442.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="465" x2="485.1" y2="465" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="463.4195" width="29" height="22" fill="black" fill-opacity="0"/><text transform="translate(458.41325 468.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 587 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="600" width="296.92033" height="25" fill="#dee1f8"/><rect x="50" y="600" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="600" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="600" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><rect x="214.33803" y="630" width="234.66197" height="25" fill="#c3f9bc"/><rect x="214.33803" y="630" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.33803 636.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="642.5" r="5.000008" fill="black"/><circle cx="405" cy="642.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="665" x2="485.1" y2="665" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="663.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 668.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 587 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="600" width="296.92033" height="25" fill="black" fill-opacity="0"/><rect x="50" y="600" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="600" width="147.8136" height="25" fill="black" fill-opacity="0"/><rect x="347.1864" y="600" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><rect x="214.33803" y="630" width="234.66197" height="25" fill="black" fill-opacity="0"/><rect x="214.33803" y="630" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.33803 636.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="642.5" r="5.000008" fill="black"/><circle cx="405" cy="642.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="665" x2="485.1" y2="665" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="663.4195" width="29" height="22" fill="black" fill-opacity="0"/><text transform="translate(458.41325 668.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 1e3 474 204" width="474pt" height="17pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="1050" width="296.92029" height="25" fill="#dee1f8"/><rect x="50" y="1050" width="296.92029" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 1056.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78046" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="1050" width="147.3136" height="25" fill="#dee1f8"/><rect x="347.1864" y="1050" width="147.3136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 1056.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="51.977112" y="10" textLength="33.359375">period2</tspan></text><line x1="205.33803" y1="1170.82475" x2="337.02033" y2="1170.82475" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="1161.32475" x2="205.5" y2="1192.7024" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="347.1864" y1="1161.32475" x2="347.1864" y2="1192.82475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="204.83803" y="1125" width="234.66197" height="25" fill="#c3f9bc"/><rect x="204.83803" y="1125" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(209.83803 1131.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><line x1="59.9" y1="1170.82475" x2="205.33803" y2="1170.82475" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="1083.82475" x2="50" y2="1192.82475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(66.789836 1175.82475)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".24414062" y="10" textLength="114.51172">period1.positionInWindow</tspan></text><text transform="translate(218.62918 1175.82475)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".24414062" y="10" textLength="114.51172">period2.positionInWindow</tspan></text><circle cx="405.5" cy="1137.5" r="5.000008" fill="black"/><circle cx="405.5" cy="1137.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 277.848 1075 C 283.47152 1077.74604 289.55567 1081.7543 297 1088 C 307.39228 1096.719 313.49444 1106.8151 317.07717 1115.6064" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="198.47753" y="1086.68713" width="104" height="22" fill="white" fill-opacity="0"/><text transform="translate(203.47753 1091.68713)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".024902344" y="10" textLength="93.950195">period1.windowIndex</tspan></text><path d="M 367.49306 1075 C 364.88125 1076.66384 361.57643 1079.39495 357 1083.82475 C 347.66134 1092.8642 339.2789 1105.5559 333.07861 1116.3285" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="348.1864" y="1086.68713" width="104" height="22" fill="white" fill-opacity="0"/><text transform="translate(353.1864 1091.68713)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".024902344" y="10" textLength="93.950195">period2.windowIndex</tspan></text><line x1="50" y1="1019.17525" x2="50" y2="1041.17525" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="347.1864" y1="1019.17525" x2="347.1864" y2="1041.17525" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="59.9" y1="1032.4929" x2="355" y2="1032.4929" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="348.1864" y1="1032.4929" x2="481.2864" y2="1032.4929" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(176.19198 1014.95836)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".36230469" y="10" textLength="72.27539">period1.duration</tspan></text><text transform="translate(367.71016 1015.4929)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".4116211" y="10" textLength="106.17676">period2.duration (unset)</tspan></text><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 1e3 474 204" width="474pt" height="17pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="1050" width="296.92029" height="25" fill="black" fill-opacity="0"/><rect x="50" y="1050" width="296.92029" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 1056.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78046" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="1050" width="147.3136" height="25" fill="black" fill-opacity="0"/><rect x="347.1864" y="1050" width="147.3136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 1056.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="51.977112" y="10" textLength="33.359375">period2</tspan></text><line x1="205.33803" y1="1170.82475" x2="337.02033" y2="1170.82475" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="1161.32475" x2="205.5" y2="1192.7024" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="347.1864" y1="1161.32475" x2="347.1864" y2="1192.82475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="204.83803" y="1125" width="234.66197" height="25" fill="black" fill-opacity="0"/><rect x="204.83803" y="1125" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(209.83803 1131.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><line x1="59.9" y1="1170.82475" x2="205.33803" y2="1170.82475" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="1083.82475" x2="50" y2="1192.82475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(66.789836 1175.82475)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".24414062" y="10" textLength="114.51172">period1.positionInWindow</tspan></text><text transform="translate(218.62918 1175.82475)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".24414062" y="10" textLength="114.51172">period2.positionInWindow</tspan></text><circle cx="405.5" cy="1137.5" r="5.000008" fill="black"/><circle cx="405.5" cy="1137.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 277.848 1075 C 283.47152 1077.74604 289.55567 1081.7543 297 1088 C 307.39228 1096.719 313.49444 1106.8151 317.07717 1115.6064" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="198.47753" y="1086.68713" width="104" height="22" fill="white" fill-opacity="0"/><text transform="translate(203.47753 1091.68713)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".024902344" y="10" textLength="93.950195">period1.windowIndex</tspan></text><path d="M 367.49306 1075 C 364.88125 1076.66384 361.57643 1079.39495 357 1083.82475 C 347.66134 1092.8642 339.2789 1105.5559 333.07861 1116.3285" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="348.1864" y="1086.68713" width="104" height="22" fill="white" fill-opacity="0"/><text transform="translate(353.1864 1091.68713)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".024902344" y="10" textLength="93.950195">period2.windowIndex</tspan></text><line x1="50" y1="1019.17525" x2="50" y2="1041.17525" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="347.1864" y1="1019.17525" x2="347.1864" y2="1041.17525" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="59.9" y1="1032.4929" x2="355" y2="1032.4929" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="348.1864" y1="1032.4929" x2="481.2864" y2="1032.4929" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(176.19198 1014.95836)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".36230469" y="10" textLength="72.27539">period1.duration</tspan></text><text transform="translate(367.71016 1015.4929)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".4116211" y="10" textLength="106.17676">period2.duration (unset)</tspan></text><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 289 473 106" width="473pt" height="106pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="300" width="148.4428" height="25" fill="#dee1f8"/><rect x="50" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="50" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><rect x="198.4428" y="300" width="148.4428" height="25" fill="#dee1f8"/><rect x="198.4428" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="346.8856" y="300" width="148.4428" height="25" fill="#dde1f7"/><rect x="346.8856" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period3</tspan></text><rect x="198.4428" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="198.4428" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window2</tspan></text><rect x="346.8856" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="346.8856" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window3</tspan></text><line x1="50" y1="365" x2="485.1" y2="365" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="363.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 368.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x=".05419922" y="10" textLength="18.891602">time</tspan></text><circle cx="50" cy="342.5" r="5.000008" fill="black"/><circle cx="50" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="198.4428" cy="342.5" r="5.000008" fill="black"/><circle cx="198.4428" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="346.88559" cy="342.5" r="5.000008" fill="black"/><circle cx="346.88559" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 289 473 106" width="473pt" height="106pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="300" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="330" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><rect x="198.4428" y="300" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="198.4428" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="346.8856" y="300" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="346.8856" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period3</tspan></text><rect x="198.4428" y="330" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="198.4428" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window2</tspan></text><rect x="346.8856" y="330" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="346.8856" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window3</tspan></text><line x1="50" y1="365" x2="485.1" y2="365" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="363.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 368.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x=".05419922" y="10" textLength="18.891602">time</tspan></text><circle cx="50" cy="342.5" r="5.000008" fill="black"/><circle cx="50" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="198.4428" cy="342.5" r="5.000008" fill="black"/><circle cx="198.4428" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="346.88559" cy="342.5" r="5.000008" fill="black"/><circle cx="346.88559" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 189 484 107" width="484pt" height="107pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="200" width="445" height="25" fill="#dee1f8"/><rect x="50" y="200" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 206.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="230" width="445" height="25" fill="#c3f9bc"/><rect x="50" y="230" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 236.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="198.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="242.5" r="5.000008" fill="black"/><circle cx="50" cy="242.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="51" y1="266" x2="486.1" y2="266" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="454.41325" y="264.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(459.41325 269.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 189 484 107" width="484pt" height="107pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="200" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="200" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 206.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="230" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="230" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 236.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="198.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="242.5" r="5.000008" fill="black"/><circle cx="50" cy="242.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="51" y1="266" x2="486.1" y2="266" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="454.41325" y="264.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(459.41325 269.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="39 787 473 199" width="473pt" height="199pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="800" width="296.92033" height="25" fill="#dee1f8"/><rect x="50" y="800" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 806.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="800" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="800" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 806.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><line x1="215.23803" y1="920" x2="429.26197" y2="920" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="909.98415" x2="205.5" y2="974.3898" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="439.16197" y1="909.98415" x2="439.16197" y2="974.64095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="205.33803" y="875.00003" width="234.66197" height="25" fill="#c3f9bc"/><rect x="205.33803" y="875.00003" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(210.33803 881.50003)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><line x1="50" y1="920" x2="195.43803" y2="920" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(57.789836 924.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".079101562" y="10" textLength="132.8418">window1.positionInFirstPeriod</tspan></text><text transform="translate(281.1883 924.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.148123" y="10" textLength="77.82715">window1.duration</tspan></text><circle cx="405.956" cy="887.5" r="5.000008" fill="black"/><circle cx="405.956" cy="887.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="953.48415" x2="396.6" y2="953.48415" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="405.6276" y1="928.63515" x2="405.6276" y2="974.3898" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(239.5638 958.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.2958984" y="10" textLength="128.4082">window1.defaultStartPosition</tspan></text><path d="M 294.17111 830.14747 C 298.4618 833.37285 302.96775 837.6977 308.92033 844 C 319.23498 854.92063 322.46793 866.5256 323.23382 875.00003" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="181.5" y="839" width="122" height="22" fill="white" fill-opacity="0"/><text transform="translate(186.5 844)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".4165039" y="10" textLength="46.689453">window1.fi</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="47.105957" y="10" textLength="64.47754">rstPeriodIndex</tspan></text><path d="M 359.39088 830.24503 C 353.18753 834.7477 347.70308 840.4071 339 850.3771 C 330.87957 859.67967 326.78076 868.3698 324.71894 875.00003" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="348.1864" y="839" width="121" height="22" fill="white" fill-opacity="0"/><text transform="translate(353.1864 844)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".18994141" y="10" textLength="110.62012">window1.lastPeriodIndex</tspan></text><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><line x1="50" y1="832.48415" x2="50" y2="941.48415" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="39 787 473 199" width="473pt" height="199pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="800" width="296.92033" height="25" fill="black" fill-opacity="0"/><rect x="50" y="800" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 806.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="800" width="147.8136" height="25" fill="black" fill-opacity="0"/><rect x="347.1864" y="800" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 806.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><line x1="215.23803" y1="920" x2="429.26197" y2="920" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="909.98415" x2="205.5" y2="974.3898" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="439.16197" y1="909.98415" x2="439.16197" y2="974.64095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="205.33803" y="875.00003" width="234.66197" height="25" fill="black" fill-opacity="0"/><rect x="205.33803" y="875.00003" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(210.33803 881.50003)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><line x1="50" y1="920" x2="195.43803" y2="920" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(57.789836 924.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".079101562" y="10" textLength="132.8418">window1.positionInFirstPeriod</tspan></text><text transform="translate(281.1883 924.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.148123" y="10" textLength="77.82715">window1.duration</tspan></text><circle cx="405.956" cy="887.5" r="5.000008" fill="black"/><circle cx="405.956" cy="887.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="953.48415" x2="396.6" y2="953.48415" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="405.6276" y1="928.63515" x2="405.6276" y2="974.3898" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(239.5638 958.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.2958984" y="10" textLength="128.4082">window1.defaultStartPosition</tspan></text><path d="M 294.17111 830.14747 C 298.4618 833.37285 302.96775 837.6977 308.92033 844 C 319.23498 854.92063 322.46793 866.5256 323.23382 875.00003" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="181.5" y="839" width="122" height="22" fill="white" fill-opacity="0"/><text transform="translate(186.5 844)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".4165039" y="10" textLength="46.689453">window1.fi</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="47.105957" y="10" textLength="64.47754">rstPeriodIndex</tspan></text><path d="M 359.39088 830.24503 C 353.18753 834.7477 347.70308 840.4071 339 850.3771 C 330.87957 859.67967 326.78076 868.3698 324.71894 875.00003" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="348.1864" y="839" width="121" height="22" fill="white" fill-opacity="0"/><text transform="translate(353.1864 844)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".18994141" y="10" textLength="110.62012">window1.lastPeriodIndex</tspan></text><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><line x1="50" y1="832.48415" x2="50" y2="941.48415" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
......@@ -132,7 +132,7 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen
String userAgent = "ExoPlayerPlaybackTests";
DrmSessionManager drmSessionManager = buildDrmSessionManager(userAgent);
player = buildExoPlayer(host, surface, trackSelector, drmSessionManager);
player.setMediaSource(buildSource(host, Util.getUserAgent(host, userAgent), bandwidthMeter));
player.prepare(buildSource(host, Util.getUserAgent(host, userAgent), bandwidthMeter));
player.addListener(this);
player.setAudioDebugListener(this);
player.setVideoDebugListener(this);
......@@ -215,7 +215,7 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen
}
@Override
public final void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public final void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment