text:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.opengamma</groupId>
    <artifactId>corporate-parent</artifactId>
    <version>2.8.0</version>
    <relativePath />
  </parent>
  <groupId>com.opengamma.strata</groupId>
  <artifactId>strata-parent</artifactId>
  <version>2.12.14-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Strata-Parent</name>
  <description>OpenGamma Strata Parent</description>

  <!-- ==================================================================== -->
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <!-- ==================================================================== -->
  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/OpenGamma/Strata/issues</url>
  </issueManagement>
  <inceptionYear>2009</inceptionYear>
  <mailingLists>
    <mailingList>
      <name>OpenGamma forum</name>
      <archive>http://forums.opengamma.com/</archive>
    </mailingList>
  </mailingLists>
  <scm>
    <connection>scm:git:https://github.com/OpenGamma/Strata.git</connection>
    <developerConnection>scm:git:https://github.com/OpenGamma/Strata.git</developerConnection>
    <url>https://github.com/OpenGamma/Strata</url>
    <tag>HEAD</tag>
  </scm>

  <!-- ==================================================================== -->
  <modules>
    <module>basics</module>
    <module>collect</module>
    <module>data</module>
    <module>product</module>
    <module>market</module>
    <module>loader</module>
    <module>math</module>
    <module>pricer</module>
    <module>calc</module>
    <module>measure</module>
    <module>report</module>
  </modules>

  <!-- ==================================================================== -->
  <!-- standard build setup -->
  <build>
    <resources>
      <!-- Include all standard resources -->
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <!-- Include LICENSE/NOTICE in jar files -->
      <resource>
        <directory>${root.dir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>LICENSE.txt</include>
          <include>NOTICE.txt</include>
        </includes>
      </resource>
    </resources>
    <testResources>
      <!-- Include all standard resources -->
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
      <!-- Include LICENSE/NOTICE in test jar files -->
      <testResource>
        <directory>${root.dir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>LICENSE.txt</include>
          <include>NOTICE.txt</include>
        </includes>
      </testResource>
    </testResources>
    <plugins>
      <!-- javadoc -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <!-- Java module system has borked Javadoc, links to Joda-Beans/Joda-Convert don't work -->
          <!-- The supposed fixes don't work either -->
          <!-- https://bugs.openjdk.java.net/browse/JDK-8212233 -->
          <!-- https://issues.apache.org/jira/browse/MJAVADOC-615 -->
          <!-- https://issues.apache.org/jira/browse/MJAVADOC-601 -->
          <links>
            <link>https://google.github.io/guava/releases/${guava-docs.version}/api/docs/</link>
          </links>
          <!-- The "allow-script-in-comments" is needed for 1.8.0_u121 and later -->
          <!-- but when it is present on earlier JDK 8 builds Javadoc will complain about an unrecognised flag -->
          <!-- If that happens to you, remove the line or upgrade to a later Java 8 version -->
          <additionalOptions>
            <additionalOption>--allow-script-in-comments</additionalOption>
            <additionalOption>-Xdoclint:missing</additionalOption>
            <additionalOption>-Xdoclint:reference</additionalOption>
          </additionalOptions>
        </configuration>
      </plugin>
      <!--  checkstyle -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <executions>
          <execution>
            <id>run-checkstyle</id>
            <phase>process-sources</phase>
            <goals>
              <goal>checkstyle</goal>
            </goals>
            <configuration>
              <failsOnError>true</failsOnError>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- obtain git commit -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>buildnumber</id>
            <phase>process-sources</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- create and publish test jar files -->
      <!-- include build number in jar files -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>default-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <archive>
                <manifestEntries>
                  <Automatic-Module-Name>${jpms.module.name}</Automatic-Module-Name>
                </manifestEntries>
              </archive>
            </configuration>
          </execution>
          <execution>
            <id>test-jar</id>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <skipIfEmpty>true</skipIfEmpty>
          <archive>
            <manifestEntries>
              <Implementation-Build>${buildNumber}</Implementation-Build>
              <Implementation-Date>${maven.build.timestamp}</Implementation-Date>
              <Implementation-Build-Id>${ci.build}</Implementation-Build-Id>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <!-- attach site -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>attach-descriptor</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- Block bad APIs -->
      <plugin>
        <groupId>de.thetaphi</groupId>
        <artifactId>forbiddenapis</artifactId>
        <configuration>
          <failOnUnsupportedJava>false</failOnUnsupportedJava>
          <bundledSignatures>
            <bundledSignature>jdk-unsafe</bundledSignature>
            <bundledSignature>jdk-deprecated</bundledSignature>
            <bundledSignature>jdk-non-portable</bundledSignature>
          </bundledSignatures>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>check</goal>
              <goal>testCheck</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!--  remove slow SuiteHTMLReporter -
            already defined in corporate parent, but appears to be necessary for some configurations -->
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <properties>
            <property>
              <name>usedefaultlisteners</name>
              <value>false</value>
            </property>
          </properties>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.jboss.bridger</groupId>
          <artifactId>bridger</artifactId>
          <version>${bridger.version}</version>
          <dependencies>
            <!-- Support Java 17 -->
            <dependency>
              <groupId>org.ow2.asm</groupId>
              <artifactId>asm</artifactId>
              <version>${asm.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.jboss.bridger</groupId>
                    <artifactId>bridger</artifactId>
                    <versionRange>[${bridger.version},)</versionRange>
                    <goals>
                      <goal>transform</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <!-- ==================================================================== -->
  <dependencyManagement>
    <dependencies>
      <!-- OpenGamma -->
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-collect</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-basics</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-product</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-data</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-math</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-market</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-loader</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-pricer</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-calc</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-measure</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-report</artifactId>
        <version>${project.version}</version>
      </dependency>
      <!-- Third party -->
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
        <exclusions>
          <exclusion>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.j2objc</groupId>
            <artifactId>j2objc-annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>animal-sniffer-annotations</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-qual</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-compat-qual</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>listenablefuture</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.joda</groupId>
        <artifactId>joda-convert</artifactId>
        <version>${joda-convert.version}</version>
      </dependency>
      <dependency>
        <groupId>org.joda</groupId>
        <artifactId>joda-beans</artifactId>
        <version>${joda-beans.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-nop</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>${jcommander.version}</version>
      </dependency>
      <!-- Testing -->
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-collect</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-basics</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-product</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-data</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-math</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-market</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-loader</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-pricer</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-calc</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.opengamma.strata</groupId>
        <artifactId>strata-measure</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit5.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>${assertj.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <!-- ==================================================================== -->
  <profiles>
    <!-- force correct Java version -->
    <profile>
      <id>forcejavaversion</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <properties>
        <maven.compiler.release>8</maven.compiler.release>
      </properties>
      <build>
      </build>
    </profile>
    <!-- apply strict build rules, activated with -Dstrict -->
    <profile>
      <id>strict</id>
      <activation>
        <property>
          <name>strict</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <!-- no commons-logging or good/evil licensed json, junit only in test/provided -->
                    <bannedDependencies>
                      <excludes>
                        <exclude>commons-logging:*</exclude>
                        <exclude>org.json:json</exclude>
                        <exclude>junit:*</exclude>
                      </excludes>
                      <includes>
                        <include>junit:*:*:*:test</include>
                        <include>junit:*:*:*:provided</include>
                      </includes>
                    </bannedDependencies>
                    <banDuplicateClasses>
                      <ignoreClasses>
                        <ignoreClass>org.apache.commons.collections.ArrayStack</ignoreClass>
                        <ignoreClass>org.apache.commons.collections.Buffer</ignoreClass>
                        <ignoreClass>org.apache.commons.collections.BufferUnderflowException</ignoreClass>
                        <ignoreClass>org.apache.commons.collections.FastHashMap*</ignoreClass>
                        <ignoreClass>org.apache.tools.ant.ExitException</ignoreClass>
                      </ignoreClasses>
                      <findAllDuplicates>true</findAllDuplicates>
                    </banDuplicateClasses>
                    <!-- ensure dependencies resolve to latest version (removed as randomly fails MENFORCER-134) -->
                    <!--requireUpperBoundDeps /-->
                    <!-- need Java SE 8 or greater -->
                    <requireJavaVersion>
                      <version>[1.8,)</version>
                    </requireJavaVersion>
                    <requirePluginVersions>
                    </requirePluginVersions>
                  </rules>
                  <fail>true</fail>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- validate Joda-Beans -->
          <plugin>
            <groupId>org.joda</groupId>
            <artifactId>joda-beans-maven-plugin</artifactId>
            <executions>
              <execution>
                <phase>validate</phase>
                <goals>
                  <goal>validate</goal>
                </goals>
                <configuration>
                  <stopOnError>true</stopOnError>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- Profile creating dist zip triggered by -Ddist -->
    <profile>
      <id>build-dist-javadoc-and-jars</id>
      <activation>
        <property>
          <name>dist</name>
        </property>
      </activation>
      <build>
        <plugins>
          <!-- generate source jar file when packaging -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <phase>package</phase>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
                <configuration>
                  <archive>
                    <manifest>
                      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                      <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                    </manifest>
                    <manifestEntries>
                      <Implementation-Build>${buildNumber}</Implementation-Build>
                      <Implementation-Date>${maven.build.timestamp}</Implementation-Date>
                      <Implementation-Build-Id>${ci.build}</Implementation-Build-Id>
                    </manifestEntries>
                  </archive>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- generate javadoc jar file when packaging -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <phase>package</phase>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <archive>
                    <manifest>
                      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                      <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                    </manifest>
                    <manifestEntries>
                      <Implementation-Build>${buildNumber}</Implementation-Build>
                      <Implementation-Date>${maven.build.timestamp}</Implementation-Date>
                      <Implementation-Build-Id>${ci.build}</Implementation-Build-Id>
                    </manifestEntries>
                  </archive>
                </configuration>
              </execution>
              <!-- create aggregate javadoc -->
              <execution>
                <id>make-javadoc</id>
                <phase>package</phase>
                <goals>
                  <goal>aggregate-no-fork</goal>
                </goals>
                <inherited>false</inherited>
                <configuration>
                  <windowtitle>OpenGamma Strata</windowtitle>
                  <doctitle><![CDATA[<h1>OpenGamma Strata</h1>]]></doctitle>
                  <header><![CDATA[<script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: { inlineMath: [ ['$','$'], ["\\\\(","\\\\)"] ],processEscapes: true} });</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>]]></header>
                  <bottom><![CDATA[<i>Copyright 2009-Present by OpenGamma Inc. and individual contributors</i><br /><i>Apache v2 licensed</i><br /><i>Additional documentation can be found at <a href="http://strata.opengamma.io">strata.opengamma.io</a>.</i><script type="text/javascript">var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-12092825-5']);_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>]]></bottom>
                  <!-- The "allow-script-in-comments" is needed for 1.8.0_u121 and later -->
                  <!-- but when it is present on earlier JDK 8 builds Javadoc will complain about an unrecognised flag -->
                  <!-- If that happens to you, remove the line or upgrade to a later Java 8 version -->
                  <additionalOptions>
                    <additionalOption>--allow-script-in-comments</additionalOption>
                    <additionalOption>-Xdoclint:missing</additionalOption>
                    <additionalOption>-Xdoclint:reference</additionalOption>
                  </additionalOptions>
                  <excludePackageNames>com.opengamma.strata.loader.impl:com.opengamma.strata.math.impl:com.opengamma.strata.pricer.impl:com.opengamma.strata.examples</excludePackageNames>
                  <groups>
                    <group>
                      <title>Measure-level API</title>
                      <packages>com.opengamma.strata.measure:com.opengamma.strata.measure.*</packages>
                    </group>
                    <group>
                      <title>Pricer-level API</title>
                      <packages>com.opengamma.strata.pricer:com.opengamma.strata.pricer.*</packages>
                    </group>
                    <group>
                      <title>Market data structures</title>
                      <packages>com.opengamma.strata.market:com.opengamma.strata.market.*</packages>
                    </group>
                    <group>
                      <title>Product domain model</title>
                      <packages>com.opengamma.strata.product:com.opengamma.strata.product.*</packages>
                    </group>
                    <group>
                      <title>Supporting toolkit</title>
                      <packages>com.opengamma.strata.*</packages>
                    </group>
                  </groups>
                  <validateLinks>true</validateLinks>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- Check for incompatible changes -->
    <profile>
      <id>compat</id>
      <activation>
        <property>
          <name>compat</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.siom79.japicmp</groupId>
            <artifactId>japicmp-maven-plugin</artifactId>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>cmp</goal>
                </goals>
                <configuration>
                  <parameter>
                    <onlyModified>true</onlyModified>
                    <skipXmlReport>true</skipXmlReport>
                  </parameter>
                  <oldVersion>
                    <dependency>
                      <groupId>${project.groupId}</groupId>
                      <artifactId>${project.artifactId}</artifactId>
                      <version>2.0.0</version>
                    </dependency>
                  </oldVersion>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!--  merge files, only works when mvn command run a second time -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <phase>validate</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <inherited>false</inherited>
                <configuration>
                  <target>
                    <mkdir dir="${project.basedir}/target/japicmp" />
                    <concat destfile="${project.basedir}/target/japicmp/japicmp.diff" overwrite="true">
                      <fileset dir="${project.basedir}">
                        <include name="*/target/japicmp/japicmp.diff" />
                      </fileset>
                    </concat>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <!-- ==================================================================== -->
  <properties>
    <!-- Locate the root directory of the multi-module build -->
    <root.dir>${project.basedir}/..</root.dir>
    <!-- Versions -->
    <asm.version>9.3</asm.version>
    <assertj.version>3.23.1</assertj.version>
    <bridger.version>1.6.Final</bridger.version>
    <guava.version>31.1-jre</guava.version><!-- didn't want to go beyond v27 but forced to by security https://github.com/google/guava/issues/3320 -->
    <guava-docs.version>26.0-jre</guava-docs.version>
    <jcommander.version>1.78</jcommander.version>
    <joda-convert.version>2.2.2</joda-convert.version>
    <joda-beans.version>2.8.3</joda-beans.version>
    <joda.beans.version>${joda-beans.version}</joda.beans.version>
    <junit5.version>5.9.0</junit5.version>
    <mockito.version>4.8.0</mockito.version>
    <slf4j.version>1.7.36</slf4j.version>
    <!-- Versions after M3 cause RequireFilesExist to reject relative paths -->
    <extra-enforcer-rules.version>1.2</extra-enforcer-rules.version>
    <maven-enforcer-plugin.version>3.0.0-M3</maven-enforcer-plugin.version>
    <!-- Properties for maven-checkstyle-plugin -->
    <!-- versions must be retained to allow the version to be overridden on the command line -->
    <build-config.version>2.8.1</build-config.version>
    <checkstyle.version>8.45.1</checkstyle.version>
    <!-- Properties for maven-javadoc-plugin -->
    <windowtitle>OpenGamma Strata</windowtitle>
    <doctitle><![CDATA[<h1>OpenGamma Strata</h1>]]></doctitle>
    <header><![CDATA[<script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: { inlineMath: [ ['$','$'], ["\\\\(","\\\\)"] ],processEscapes: true} });</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>]]></header>
    <bottom><![CDATA[<i>Copyright 2009-Present by OpenGamma Inc. and individual contributors</i><br /><i>${javadoc.footer.license}</i><br /><i>Additional documentation can be found at <a href="http://strata.opengamma.io">strata.opengamma.io</a>.</i><script type="text/javascript">var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-12092825-8']);_gaq.push(['_trackPageview']);(function() {var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script>]]></bottom>
    <javadoc.footer.license>Apache v2 licensed</javadoc.footer.license>
  </properties>

</project>


text:
/**
 * Initializes the game
 *
 * @param canvasWidth
 * @param canvasHeight
 */
function initGame(canvasWidth, canvasHeight) {
    var canvas = document.getElementById("game-canvas");
    var context = canvas.getContext("2d");

    canvas.width = canvasWidth;
    canvas.height = canvasHeight;

    context.fillStyle = "black";
    context.fillRect(0, 0, canvas.width, canvas.height);

    var turnsTaken = 0;

    // Make the board
    var gameBoard = new GameBoard(canvas, context);
    gameBoard.draw(4, "white");

    // Create a player X object
    var playerX = new GamePieceX(canvas, context, 4, "red");

    // Create a player O object
    var playerO = new GamePieceO(canvas, context, 4, "green");

    canvas.onclick = function (e) {
        // The max amount of turns possible is 9 so if we are above that
        // there is no need to do the rest of the stuff
        if (turnsTaken < 9) {
            var quad = gameBoard.getQuadrant(e.clientX, e.clientY);

            if (playerO.moves.indexOf(quad) === -1 && playerX.moves.indexOf(quad) === -1) {

                if (turnsTaken % 2) {
                    playerO.draw(quad);
                    playerO.moves.push(quad);

                    if (playerX.moves.length >= 3) {
                        if (checkForWin(playerO.moves)) {
                            // TODO: Fix this
                            turnsTaken = 9;
                            console.log("Player O WINS!!!");
                            return;
                        }
                    }
                } else {
                    playerX.draw(quad);
                    playerX.moves.push(quad);

                    if (playerX.moves.length >= 3) {
                        if (checkForWin(playerX.moves)) {
                            // TODO: Fix this
                            turnsTaken = 9;
                            console.log("Player X WINS!!!");
                            return;
                        }
                    }
                }

                turnsTaken++;
            }
        }
    }
}

/**
 * Helper function that takes an array of player moves and checks to see if
 * it matches a winning combination of quadrants.
 *
 * @param playerMoves An array of quadrants that the player has a piece.
 *
 * @returns {boolean} Returns true if there is a match, false if not.
 */
function checkForWin(playerMoves) {
    // Setup all the possible winning combinations
    var winningCombos = [[0, 1, 2], [0, 3, 6], [0, 4, 8], [1, 4, 7], [2, 5, 8], [2, 4, 6], [3, 4, 5], [6, 7, 8]];

    // Set the flag to false
    var comboMatch = false;

    // Loop through the possible winning combos
    for (var i = 0; i < winningCombos.length; i++) {
        var matches = [];

        // Loop through each quad in each combo array
        for (var k = 0; k < winningCombos[i].length; k++) {

            // Loop through each quad in the players moves
            for (var j = 0; j < playerMoves.length; j++) {
                // If the quad in the player's moves matches the quad in the winningCombo array
                if (playerMoves[j] === winningCombos[i][k]) {
                    // Push the number into the matches array
                    matches.push(winningCombos[i][k]);
                }
            }
        }

        // If the matches array length equals 3 then we know we have a winningCombo
        if (matches.length === 3) {
            // Set the match flag to true
            comboMatch = true;

            // Break out of the loop
            break;
        }

        // Clear out the match array
        while (matches.length > 0) {
            matches.pop();
        }
    }

    // Return whether there was a winningCombo match or not
    return comboMatch;
}

redpajama_set_name: RedPajamaGithub


text:
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.testing.local;

import android.os.Bundle;
import android.os.UserManager;

import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowUserManager;

import java.util.HashMap;
import java.util.Map;

/**
 * TODO(https://crbug.com/779568): Remove this after migrating to Robolectric 3.7+.
 * Robolectric 3.6 and lower doesn't support getApplicationRestrictions.
 */
@Implements(UserManager.class)
public class CustomShadowUserManager extends ShadowUserManager {
    private Map<String, Bundle> mApplicationRestrictions = new HashMap<>();

    @Override
    public Bundle getApplicationRestrictions(String packageName) {
        Bundle bundle = mApplicationRestrictions.get(packageName);
        return bundle != null ? bundle : new Bundle();
    }

    @Override
    public void setApplicationRestrictions(String packageName, Bundle applicationRestrictions) {
        mApplicationRestrictions.put(packageName, applicationRestrictions);
    }
}


text:
import unittest

import mock

from repeater.gevent_server import GEventServer

class GEventServerTestCase(unittest.TestCase):

    def setUp(self):
        self.app = object()
        self.server = GEventServer(self.app, 'host', 1234)
        self.wsgi_mod = self.server.wsgi = mock.Mock()
        self.wsgi_server = self.wsgi_mod.WSGIServer.return_value

    def test_serve_forever(self):
        self.server.serve_forever()
        assert self.wsgi_mod.WSGIServer.call_count == 1
        assert self.wsgi_mod.WSGIServer.mock_calls[0][1] == (
            ('host', 1234),
            self.app
        )
        assert self.wsgi_server.serve_forever.call_count == 1
        assert self.wsgi_server.serve_forever.mock_calls[0][1] == ()


text:
package io.sipstack.example.netty.sip.proxy;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.pkts.packet.sip.SipMessage;
import io.pkts.packet.sip.SipRequest;
import io.pkts.packet.sip.SipResponse;
import io.pkts.packet.sip.address.SipURI;
import io.pkts.packet.sip.header.RouteHeader;
import io.pkts.packet.sip.header.ViaHeader;
import io.sipstack.example.netty.sip.SimpleSipStack;
import io.sipstack.netty.codec.sip.Connection;
import io.sipstack.netty.codec.sip.UdpConnection;
import io.sipstack.netty.codec.sip.event.impl.SipMessageIOEventImpl;

import java.net.InetSocketAddress;

public final class ProxyHandler extends SimpleChannelInboundHandler<SipMessageIOEventImpl> {

    private SimpleSipStack stack;

    public ProxyHandler() {
        // TODO Auto-generated constructor stub
    }

    public void setStack(final SimpleSipStack stack) {
        this.stack = stack;
    }

    @Override
    protected void channelRead0(final ChannelHandlerContext ctx, final SipMessageIOEventImpl event) throws Exception {
        final SipMessage msg = event.message();

        try {
            if (msg.isRequest()) {
                final SipURI next = getNextHop(msg.toRequest());
                proxyTo(next, msg.toRequest());
            } else {
                // responses follow Via-headers to those are easy. Just pop the top-most via
                // since it is supposed to be us and then proxy to the second via. We should
                // check so that the via header we just popped indeed is pointing to us but
                // for now we will ignore these details.
                final SipResponse response = msg.toResponse();
                response.popViaHeader();
                proxy(response);
            }
        } catch (final IllegalArgumentException e) {
            // Taking the lazy way out. If we find anything that isn't to our liking then
            // we will bail out with an IllegalArgumentException, which we will turn
            // into a 400 Bad Request. Of course, in a real world scenario you will
            // have to be a little more nuanced and send back more appropriate error
            // codes that really tells the story so that the UAC at least have a
            // fighting chance to figure out what it did wrong.
            e.printStackTrace();
            final SipResponse response = msg.toRequest().createResponse(400).build();
            event.connection().send(response);
        } catch (final Exception e) {
            // something went wrong, send a 500 back...
            e.printStackTrace();
            final SipResponse response = msg.toRequest().createResponse(500).build();
            event.connection().send(response);
        }
    }

    /**
     * Proxy the response to
     *
     * @param via
     * @param msg
     */
    private void proxy(final SipResponse msg) {
        final ViaHeader via = msg.getViaHeader();
        final Connection connection = this.stack.connect(via.getHost(), via.getPort());
        connection.send(msg);
    }

    /**
     * Whenever we proxy a request we must also add a Via-header, which essentially says that the
     * request went "via this network address using this protocol". The {@link ViaHeader}s are used
     * for responses to find their way back the exact same path as the request took.
     *
     * @param destination
     * @param msg
     */
    private void proxyTo(final SipURI destination, final SipRequest msg) {
        final Connection connection = this.stack.connect(destination.getHost(), destination.getPort());
        final ViaHeader via = ViaHeader.withHost("127.0.0.1")
                .withPort(5060)
                .withTransportUDP()
                .withBranch(ViaHeader.generateBranch())
                .build();
        // msg.addHeaderFirst(via);

        final SipMessage proxyMsg = msg.copy().withTopMostViaHeader(via).build();
        connection.send(proxyMsg);
    }

    /**
     * Calculate the next hop. In SIP, you can specify the path through the network you wish the
     * message to go and this is expressed through Route-headers and the request-uri.
     *
     * Essentially, you check if there are {@link RouteHeader}s present, and if so, the top-most
     * {@link RouteHeader} is where you will proxy this message to and otherwise you will use the
     * request-uri as your target.
     *
     * Of course, you also need to check whether perhaps you are the ultimate target but we will
     * ignore this for now. This is a simple proxy and if you send us bad traffic, bad things will
     * happen :-)
     *
     * @param request
     * @return
     */
    private SipURI getNextHop(final SipRequest request) {

        // normally you also need to check whether this route is
        // pointing to you and it it is you have to "consume" it
        // and look at the next one. As it stands now, if this
        // route is pointing to us and we will use it as the next
        // hop we will of course create a loop. For now, we will
        // ignore this.
        final RouteHeader route = request.getRouteHeader();
        if (route != null) {
            return (SipURI) route.getAddress().getURI();
        }

        return (SipURI) request.getRequestUri();
    }
}


text:
// Copyright (c) 2016, Baidu.com, Inc. All Rights Reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Author: yanshiguang02@baidu.com

#ifndef  BFS_NAMESERVER_CLIENT_H_
#define  BFS_NAMESERVER_CLIENT_H_

#include <string>
#include <vector>

#include <sofa/pbrpc/pbrpc.h>

#include <common/mutex.h>
#include <common/logging.h>

#include "rpc_client.h"
#include "proto/status_code.pb.h"
#include "proto/nameserver.pb.h"

namespace baidu {
namespace bfs {

class RpcClient;
class NameServer_Stub;
class NameServerClient {
public:
    NameServerClient(RpcClient* rpc_client, const std::string& nameserver_nodes);

    template <class Request, class Response, class Callback>
    bool SendRequest(void(NameServer_Stub::*func)(google::protobuf::RpcController*,
                                                  const Request*, Response*, Callback*),
                     const Request* request, Response* response,
                     int32_t rpc_timeout, int retry_times = 1) {
        bool ret = false;
        for (uint32_t i = 0; i < stubs_.size(); i++) {
            int ns_id = leader_id_;
            ret = rpc_client_->SendRequest(stubs_[ns_id], func, request, response,
                                           rpc_timeout, retry_times);
            if (ret && response->status() != kIsFollower) {
            //    LOG(DEBUG, "Send rpc to %d %s return %s",
            //        leader_id_, nameserver_nodes_[leader_id_].c_str(),
            //        StatusCode_Name(response->status()).c_str());
                return true;
            }
            MutexLock lock(&mu_);
            if (ns_id == leader_id_) {
                leader_id_ = (leader_id_ + 1) % stubs_.size();
            }
            //LOG(INFO, "Try next nameserver %d %s",
            //    leader_id_, nameserver_nodes_[leader_id_].c_str());
        }
        return ret;
    }
private:
    RpcClient* rpc_client_;
    std::vector<std::string> nameserver_nodes_;
    std::vector<NameServer_Stub*> stubs_;
    Mutex mu_;
    int leader_id_;
};

}
}
#endif  //__NAMESERVER_CLIENT_H_

/* vim: set expandtab ts=4 sw=4 sts=4 tw=100: */


text:
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>LightZone: Opening a Photo to Edit</title>
    <meta name="description" content="How to open a photo to edit."/>
    <link rel="stylesheet" type="text/css" href="Help.css" media="all"/>
    <link rel="stylesheet" type="text/css" href="Platform.css" media="all"/>

        LightZone Help

        Index

Opening a photo to edit

      You can open a photo from within the
      Photo Browser
      or, if you are currently in the Photo Editor,
      directly from within the Photo Editor.

To open a photo to edit:

Select File > Open...

Navigate to the folder containing the photo you want to open.

Select the photo.

Click Open.

      Alternatively, if you have edited a photo recently,
      select File > Open Recent...
      and the name of the photo from the menu.


text:
<?php

class OptionalOneToMNTest extends UnitTestCase
{

  public function test_CreateStudentWithoutMentor()
  {
    $s = new StudentE();
    $this->assertEqual(null,$s->getMentor());
  }

  public function test_ConstructorWithTooFew()
  {
  	$this->expectException(new Exception("Unable to create MentorE, must have 2 to 5 students. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html"));
    $s = new StudentE();
    new MentorE(array($s));
  }

  public function test_ConstructorWithTooMany()
  {
  	$this->expectException(new Exception("Unable to create MentorE, must have 2 to 5 students. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html"));
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();
    $s5 = new StudentE();
    $s6 = new StudentE();
    new MentorE(array($s,$s2,$s3,$s4,$s5,$s6));
  }

  public function test_constructorJustBigEnough()
  {
    $s = new StudentE();
    $s2 = new StudentE();

    $m = new MentorE(array($s,$s2));

    $this->assertEqual(2,$m->numberOfStudents());
    $this->assertEqual($m,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
  }

  public function test_constructorJustSmallEnough()
  {
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();
    $s5 = new StudentE();

    $m = new MentorE(array($s,$s2,$s3,$s4,$s5));

    $this->assertEqual(5,$m->numberOfStudents());
    $this->assertEqual($m,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
    $this->assertEqual($m,$s3->getMentor());
    $this->assertEqual($m,$s4->getMentor());
    $this->assertEqual($m,$s5->getMentor());
  }

  public function test_constructorWatchOutForDuplicateEntries()
  {
  	$this->expectException(new Exception("Unable to create MentorE, must have 2 to 5 students. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html"));
    $s = new StudentE();
    new MentorE(array($s, $s));
  }

  public function test_constructorCheckForExistingMentorNotEnoughToSurvive()
  {
  	$this->expectException(new Exception("Unable to create MentorE, must have 2 to 5 students. See http://manual.umple.org?RE002ViolationofAssociationMultiplicity.html"));
    $s1 = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();

    $m = new MentorE(array($s1,$s2,$s3));

    $this->assertEqual(3, $m->numberOfStudents());
    $this->assertEqual($m, $s1->getMentor());
    $this->assertEqual($m, $s2->getMentor());
    $this->assertEqual($m, $s3->getMentor());
    $this->assertEqual(null, $s4->getMentor());

    new MentorE(array($s1,$s2,$s4));
  }

  public function test_constructorCheckForExistingMentorEnoughToShare()
  {
    $s1 = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();
    $s5 = new StudentE();

    $m = new MentorE(array($s1,$s2,$s3));

    $this->assertEqual(3, $m->numberOfStudents());
    $this->assertEqual($m, $s1->getMentor());
    $this->assertEqual($m, $s2->getMentor());
    $this->assertEqual($m, $s3->getMentor());
    $this->assertEqual(null, $s4->getMentor());
    $this->assertEqual(null, $s5->getMentor());

    $m2 = new MentorE(array($s2,$s4,$s5));

    $this->assertEqual(2, $m->numberOfStudents());
    $this->assertEqual(3, $m2->numberOfStudents());
    $this->assertEqual($m, $s1->getMentor());
    $this->assertEqual($m2, $s2->getMentor());
    $this->assertEqual($m, $s3->getMentor());
    $this->assertEqual($m2, $s4->getMentor());
    $this->assertEqual($m2, $s5->getMentor());
  }

  public function test_setStudents_outsideNM()
  {
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();
    $s5 = new StudentE();
    $s6 = new StudentE();

    $m = new MentorE(array($s, $s2));

    $this->assertEqual(false, $m->setStudents(array($s, $s2, $s3, $s4, $s5, $s6)));
    $this->assertEqual(2,$m->numberOfStudents());
    $this->assertEqual($m,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
    $this->assertEqual(null,$s3->getMentor());
    $this->assertEqual(null,$s4->getMentor());
    $this->assertEqual(null,$s5->getMentor());
    $this->assertEqual(null,$s6->getMentor());

    $this->assertEqual(false, $m->setStudents(array($s)));
    $this->assertEqual(2,$m->numberOfStudents());
    $this->assertEqual($m,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
    $this->assertEqual(null,$s3->getMentor());
    $this->assertEqual(null,$s4->getMentor());
    $this->assertEqual(null,$s5->getMentor());
    $this->assertEqual(null,$s6->getMentor());

  }

  public function test_setStudents_withinNM()
  {
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();

    $m = new MentorE(array($s, $s2));

    $this->assertEqual(true, $m->setStudents(array($s2, $s3, $s4)));
    $this->assertEqual(3,$m->numberOfStudents());
    $this->assertEqual($s2,$m->getStudent_index(0));
    $this->assertEqual($s3,$m->getStudent_index(1));
    $this->assertEqual($s4,$m->getStudent_index(2));

    $this->assertEqual(null,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
    $this->assertEqual($m,$s3->getMentor());
    $this->assertEqual($m,$s4->getMentor());
  }

  public function test_addStudent()
  {
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();
    $s5 = new StudentE();
    $s6 = new StudentE();

    $m = new MentorE(array($s,$s2,$s3,$s4));

    $this->assertEqual(true,$m->addStudent($s5));

    $this->assertEqual(5,$m->numberOfStudents());
    $this->assertEqual($m,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
    $this->assertEqual($m,$s3->getMentor());
    $this->assertEqual($m,$s4->getMentor());
    $this->assertEqual($m,$s5->getMentor());

    $this->assertEqual(false,$m->addStudent($s6));
    $this->assertEqual(5,$m->numberOfStudents());

  }

  public function test_addStudentHasExistingMentor()
  {
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();
    $s5 = new StudentE();
    $s6 = new StudentE();

    $m = new MentorE(array($s,$s2,$s3));
    $m2 = new MentorE(array($s4,$s5,$s6));

    $this->assertEqual(true,$m->addStudent($s4));

    $this->assertEqual(4,$m->numberOfStudents());
    $this->assertEqual(2,$m2->numberOfStudents());

    $this->assertEqual($m,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
    $this->assertEqual($m,$s3->getMentor());
    $this->assertEqual($m,$s4->getMentor());
    $this->assertEqual($m2,$s5->getMentor());
    $this->assertEqual($m2,$s6->getMentor());

    $this->assertEqual(false,$m->addStudent($s5));
  }

  public function test_removeStudent()
  {
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $s4 = new StudentE();

    $m = new MentorE(array($s,$s2,$s3));

    $this->assertEqual(false,$m->removeStudent($s4));
    $this->assertEqual(true,$m->removeStudent($s3));
    $this->assertEqual(2,$m->numberOfStudents());

    $this->assertEqual($m,$s->getMentor());
    $this->assertEqual($m,$s2->getMentor());
    $this->assertEqual(null,$s3->getMentor());
    $this->assertEqual(null,$s4->getMentor());

    $this->assertEqual(false,$m->removeStudent($s2));
    $this->assertEqual(2,$m->numberOfStudents());

  }

  public function test_setStudents_empty()
  {
    $s = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();
    $m = new MentorE(array($s,$s2,$s3));

    $this->assertEqual(false, $m->setStudents(array()));
    $this->assertEqual(3,$m->numberOfStudents());
  }

  public function test_deletStudentDeletesTheMentorIfNotEnoughLeft()
  {
    $s1 = new StudentE();
    $s2 = new StudentE();

    $m = new MentorE(array($s1,$s2));
    $studentP = new ProgramE();
    $mentorP = new ProgramE();

    $s2->setProgram($studentP);
    $m->setProgram($mentorP);

    $s1->delete();

    $this->assertEqual(0,$m->numberOfStudents());
    $this->assertEqual(null,$m->getProgram());
    $this->assertEqual(null,$mentorP->getMentor());
    $this->assertEqual($studentP,$s2->getProgram());
    $this->assertEqual(null,$s1->getMentor());
  }

  public function test_deleteStudentLeavesMentorAloneIfHasEnough()
  {
    $s1 = new StudentE();
    $s2 = new StudentE();
    $s3 = new StudentE();

    $m = new MentorE(array($s1,$s2,$s3));
    $studentP = new ProgramE();
    $mentorP = new ProgramE();

    $s2->setProgram($studentP);
    $m->setProgram($mentorP);

    $s1->delete();

    $this->assertEqual(2,$m->numberOfStudents());
    $this->assertEqual($mentorP,$m->getProgram());
    $this->assertEqual($m,$mentorP->getMentor());
    $this->assertEqual($studentP,$s2->getProgram());
    $this->assertEqual(null,$s1->getMentor());
  }

}


text:
[Go back to Table of contents][back-to-index]
[Go back to General configuration][back-to-general-config]

These are the default conversions made by the admingenerator for Doctrine ORM. Note that the values are different for the normal forms and the filter forms.

### Form conversion table

Database type | Form type
------------ | -------------
timestamp | Symfony\Component\Form\Extension\Core\Type\DateTimeType
vardatetime | Symfony\Component\Form\Extension\Core\Type\DateTimeType
datetimetz | Symfony\Component\Form\Extension\Core\Type\DateTimeType
date | Symfony\Component\Form\Extension\Core\Type\DateType
time | Symfony\Component\Form\Extension\Core\Type\TimeType
decimal | Symfony\Component\Form\Extension\Core\Type\NumberType
float | Symfony\Component\Form\Extension\Core\Type\NumberType
int | Symfony\Component\Form\Extension\Core\Type\IntegerType
integer | Symfony\Component\Form\Extension\Core\Type\IntegerType
int_id | Symfony\Component\Form\Extension\Core\Type\IntegerType
bigint | Symfony\Component\Form\Extension\Core\Type\IntegerType
smallint | Symfony\Component\Form\Extension\Core\Type\IntegerType
id | Symfony\Component\Form\Extension\Core\Type\TextType
custom_id | Symfony\Component\Form\Extension\Core\Type\TextType
string | Symfony\Component\Form\Extension\Core\Type\TextType
text | Symfony\Component\Form\Extension\Core\Type\TextareaType
document | Doctrine\Bundle\MongoDBBundle\Form\Type\DocumentType
collection | Symfony\Component\Form\Extension\Core\Type\CollectionType
hash | Symfony\Component\Form\Extension\Core\Type\CollectionType
boolean | Symfony\Component\Form\Extension\Core\Type\CheckboxType

### Filter form conversion table

Database type | Filter form type
------------ | -------------
timestamp | Symfony\Component\Form\Extension\Core\Type\DateTimeType
datetime | Symfony\Component\Form\Extension\Core\Type\DateTimeType
vardatetime | Symfony\Component\Form\Extension\Core\Type\DateTimeType
datetimetz | Symfony\Component\Form\Extension\Core\Type\DateTimeType
date | Symfony\Component\Form\Extension\Core\Type\DateType
time | Symfony\Component\Form\Extension\Core\Type\TimeType
decimal | Symfony\Component\Form\Extension\Core\Type\NumberType
float | Symfony\Component\Form\Extension\Core\Type\NumberType
integer | Symfony\Component\Form\Extension\Core\Type\NumberType
bigint | Symfony\Component\Form\Extension\Core\Type\NumberType
smallint | Symfony\Component\Form\Extension\Core\Type\NumberType
string | Symfony\Component\Form\Extension\Core\Type\TextType
text | Symfony\Component\Form\Extension\Core\Type\TextType
entity | Symfony\Bridge\Doctrine\Form\Type\EntityType
collection | Symfony\Component\Form\Extension\Core\Type\CollectionType
array | Symfony\Component\Form\Extension\Core\Type\TextType
boolean | Symfony\Component\Form\Extension\Core\Type\ChoiceType

[back-to-index]: ../../documentation.md
[back-to-general-config]: ../general-configuration.md


text:
package scc

import (
	"fmt"

	"github.com/hyperledger/fabric/common/channelconfig"
	"github.com/hyperledger/fabric/common/policies"
	"github.com/hyperledger/fabric/core/common/sysccprovider"
	"github.com/hyperledger/fabric/core/ledger"
	"github.com/hyperledger/fabric/core/peer"
)

// sccProviderFactory implements the sysccprovider.SystemChaincodeProviderFactory
// interface and returns instances of sysccprovider.SystemChaincodeProvider
type sccProviderFactory struct {
}

// NewSystemChaincodeProvider returns pointers to sccProviderFactory as an
// implementer of the sysccprovider.SystemChaincodeProvider interface
func (c *sccProviderFactory) NewSystemChaincodeProvider() sysccprovider.SystemChaincodeProvider {
	return &sccProviderImpl{}
}

// init is called when this package is loaded. This implementation registers the factory
func init() {
	sysccprovider.RegisterSystemChaincodeProviderFactory(&sccProviderFactory{})
}

// ccProviderImpl is an implementation of the ccprovider.ChaincodeProvider interface
type sccProviderImpl struct {
}

// IsSysCC returns true if the supplied chaincode is a system chaincode
func (c *sccProviderImpl) IsSysCC(name string) bool {
	return IsSysCC(name)
}

// IsSysCCAndNotInvokableCC2CC returns true if the supplied chaincode is
// ia system chaincode and it NOT invokable through a cc2cc invocation
func (c *sccProviderImpl) IsSysCCAndNotInvokableCC2CC(name string) bool {
	return IsSysCCAndNotInvokableCC2CC(name)
}

// GetQueryExecutorForLedger returns a query executor for the specified channel
func (c *sccProviderImpl) GetQueryExecutorForLedger(cid string) (ledger.QueryExecutor, error) {
	l := peer.GetLedger(cid)
	if l == nil {
		return nil, fmt.Errorf("Could not retrieve ledger for channel %s", cid)
	}

	return l.NewQueryExecutor()
}

// IsSysCCAndNotInvokableExternal returns true if the supplied chaincode is
// ia system chaincode and it NOT invokable
func (c *sccProviderImpl) IsSysCCAndNotInvokableExternal(name string) bool {
	// call the static method of the same name
	return IsSysCCAndNotInvokableExternal(name)
}

// GetApplicationConfig returns the configtxapplication.SharedConfig for the channel
// and whether the Application config exists
func (c *sccProviderImpl) GetApplicationConfig(cid string) (channelconfig.Application, bool) {
	return peer.GetSupport().GetApplicationConfig(cid)
}

// Returns the policy manager associated to the passed channel
// and whether the policy manager exists
func (c *sccProviderImpl) PolicyManager(channelID string) (policies.Manager, bool) {
	m := peer.GetPolicyManager(channelID)
	return m, (m != nil)
}


text:
__author__ = 'emalishenko'

from model.group import Group

class GroupHelper:

    def __init__(self, app):
        self.app = app

    def open_groups_page(self):
        wd = self.app.wd
        if not (wd.current_url.endswith("/group.php") and len(wd.find_elements_by_name("new")) > 0):
            wd.find_element_by_link_text("groups").click()

    def return_to_groups_page(self):
        wd = self.app.wd
        if not (wd.current_url.endswith("/group.php") and len(wd.find_elements_by_name("new")) > 0):
            wd.find_element_by_link_text("group page").click()

    def create(self, group):
        wd = self.app.wd
        self.open_groups_page()
        # init group creation
        wd.find_element_by_name("new").click()
        self.fill_group_form(group)
        # submit group creation
        wd.find_element_by_name("submit").click()
        self.return_to_groups_page()
        self.group_cache = None

    def delete_group_by_index(self, index):
        wd = self.app.wd
        self.open_groups_page()
        self.select_group_by_index(index)
        # submit deleton
        wd.find_element_by_name("delete").click()
        self.return_to_groups_page()
        self.group_cache = None

    def delete_first_group(self):
        self.delete_group_by_index(0)

    def select_first_group(self):
        self.select_group_by_index(0)

    def select_group_by_index(self, index):
        wd = self.app.wd
        wd.find_elements_by_name("selected[]")[index].click()

    def modify_group_by_index(self, new_group_data, index):
        wd = self.app.wd
        self.open_groups_page()
        self.select_group_by_index(index)
        # open modification form
        wd.find_element_by_name("edit").click()
        self.fill_group_form(new_group_data)
        # submit modification
        wd.find_element_by_name("update").click()
        self.return_to_groups_page()
        self.group_cache = None

    def modify_first_group(self, new_group_data):
        self.modify_group_by_index(0)

    def fill_group_form(self, group):
        wd = self.app.wd
        self.change_field_value("group_name", group.name)
        self.change_field_value("group_header", group.header)
        self.change_field_value("group_footer", group.footer)

    def change_field_value(self, field_name, text):
        wd = self.app.wd
        if text is not None:
            wd.find_element_by_name(field_name).click()
            wd.find_element_by_name(field_name).clear()
            wd.find_element_by_name(field_name).send_keys(text)

    def count(self):
        wd = self.app.wd
        self.open_groups_page()
        return len(wd.find_elements_by_name("selected[]"))

    group_cache = None

    def get_group_list(self):
        if self.group_cache is None:
            wd = self.app.wd
            self.open_groups_page()
            self.group_cache = []
            for element in wd.find_elements_by_css_selector("span.group"):
                text = element.text
                id = element.find_element_by_name("selected[]").get_attribute("value")
                self.group_cache.append(Group (name = text, id = id))
        return list(self.group_cache)


text:
<?xml version = '1.0' encoding = 'UTF-8'?>
<Table class="oracle.dbtools.crest.model.design.relational.Table" directorySegmentName="seg_0" id="12E82D58-6E3D-3EA1-5FCF-928910918054" name="Partes">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>09C75110-EC8E-8CFC-C760-9C2D4C39E786</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<allowColumnReorder>false</allowColumnReorder>
<existDependencyGenerateInDDl>true</existDependencyGenerateInDDl>
<parsed>true</parsed>
<columns itemClass="oracle.dbtools.crest.model.design.relational.Column">
<Column name="Num_Parte" id="B00BEAB7-4136-0A72-EA45-4E41D1DF970A">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>B3CAFDD2-D3DB-775B-D06A-9190C1AC7E63</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT019</logicalDatatype>
<dataTypePrecision>6</dataTypePrecision>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="KmInicio" id="3B5641A6-A592-32E6-1A54-ACB5D868E233">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>EB604CE4-E82A-D233-7E87-4618FF7B0B81</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT021</logicalDatatype>
<dataTypePrecision>6</dataTypePrecision>
<dataTypeScale>2</dataTypeScale>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="KmFinal" id="B086187F-738F-D636-979B-D397893F743A">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>610D44CD-8BC5-57B4-33FC-71EC8418F5E5</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT021</logicalDatatype>
<dataTypePrecision>6</dataTypePrecision>
<dataTypeScale>2</dataTypeScale>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="G_gasoil" id="2A582240-E545-DD70-F4D6-96C95E42D3B7">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>A8BF4BC7-1583-5B46-DA9F-A9E23AA719D0</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<nullsAllowed>true</nullsAllowed>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT021</logicalDatatype>
<dataTypePrecision>5</dataTypePrecision>
<dataTypeScale>2</dataTypeScale>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="G_autopistas" id="8EB3B533-0640-5B73-5C8A-D2384C7C82D5">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>E3C5CA96-C705-99E9-8B0D-47DE850BB141</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<nullsAllowed>true</nullsAllowed>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT021</logicalDatatype>
<dataTypePrecision>5</dataTypePrecision>
<dataTypeScale>2</dataTypeScale>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="G_dietas" id="0E77A259-B563-5F31-775A-94E3DA8E9E8C">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>590E8BF4-9B48-FCE4-DEDB-1491408B4802</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<nullsAllowed>true</nullsAllowed>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT021</logicalDatatype>
<dataTypePrecision>5</dataTypePrecision>
<dataTypeScale>2</dataTypeScale>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="Otros_gastos" id="3F4C2AD3-C6AE-87C7-B1DA-BF674F0363E9">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>FE8E63A2-C8FD-3307-7AD7-ACF6EC3F6DFC</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<nullsAllowed>true</nullsAllowed>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT021</logicalDatatype>
<dataTypePrecision>5</dataTypePrecision>
<dataTypeScale>2</dataTypeScale>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="Incidencias" id="0915D258-E43D-2FCF-2282-D4D223C166F0">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>AE3ABF19-0C82-4231-A726-6C4AAE7DF81B</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<nullsAllowed>true</nullsAllowed>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT024</logicalDatatype>
<dataTypeSize>250</dataTypeSize>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="DNI" id="6C5ED8FC-A7AB-AF1C-1524-72F2939290BB">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>463283E4-EB36-9CB2-6204-9A4E27D7BD0A</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT024</logicalDatatype>
<dataTypeSize>9</dataTypeSize>
<previousColumn>false</previousColumn>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="DNI1" id="B43F980E-A814-01E9-DBCB-696FD7F03AEF">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>1E5A0979-D612-B271-B45E-C43C61BBF946</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT024</logicalDatatype>
<dataTypeSize>9</dataTypeSize>
<previousColumn>false</previousColumn>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="Estado" id="5BB98039-A485-4BAC-F51B-53CADD74A5AC">
<createdBy>Amets</createdBy>
<createdTime>2016-04-07 08:57:04 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<nullsAllowed>true</nullsAllowed>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT024</logicalDatatype>
<dataTypeSize>7</dataTypeSize>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="Fecha" id="8A35378A-C6DB-90D7-A3CA-7BF14126DD34">
<createdBy>Amets</createdBy>
<createdTime>2016-04-07 08:57:04 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<nullsAllowed>true</nullsAllowed>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT007</logicalDatatype>
<autoIncrementCycle>false</autoIncrementCycle>
</Column>
<Column name="Trabajadores_tr_DNI" id="19819AB1-7B24-A52B-C695-A35EEE08C2D5">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-11 09:43:28 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT024</logicalDatatype>
<dataTypeSize>9</dataTypeSize>
<previousColumn>false</previousColumn>
<autoIncrementCycle>false</autoIncrementCycle>
<associations>
<colAssociation fkAssociation="F7541185-AECB-94CD-72F4-99B9CC58A569" referredColumn="73B249EE-73AD-A108-02F8-1320822458CD"/>
</associations>
</Column>
<Column name="Trabajadores_tr_DNI1" id="E06EAAA5-FFA4-52EB-41FA-7869DD1F6835">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-11 09:44:56 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT024</logicalDatatype>
<dataTypeSize>9</dataTypeSize>
<previousColumn>false</previousColumn>
<autoIncrementCycle>false</autoIncrementCycle>
<associations>
<colAssociation fkAssociation="8DD66F24-53C6-5079-B86B-BBA33A592523" referredColumn="73B249EE-73AD-A108-02F8-1320822458CD"/>
</associations>
</Column>
<Column name="Vehiculo_Matricula" id="215E7B8A-A1FF-A575-A9DA-A430A35DBA36">
<createdBy>aitor</createdBy>
<createdTime>2016-04-23 12:21:15 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<useDomainConstraints>false</useDomainConstraints>
<use>1</use>
<logicalDatatype>LOGDT024</logicalDatatype>
<dataTypeSize>8</dataTypeSize>
<previousColumn>false</previousColumn>
<autoIncrementCycle>false</autoIncrementCycle>
<associations>
<colAssociation fkAssociation="FB4C3260-665F-53E2-A5B7-FADD233F9274" referredColumn="C9936E09-E3AC-B1A8-77C7-F7D340A70A05"/>
</associations>
</Column>
</columns>
<indexes itemClass="oracle.dbtools.crest.model.design.relational.Index">
<ind_PK_UK id="67061FA8-D8D9-C4AA-3E24-8B6D5DC0E428" name="Partes_PK">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-04 07:29:23 UTC</createdTime>
<generatorID>01EBE774-82CE-21A2-7FFB-20C1F6374CC3</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<pk>true</pk>
<indexState>Primary Constraint</indexState>
<isSurrogateKey>false</isSurrogateKey>
<indexColumnUsage>
<colUsage columnID="B00BEAB7-4136-0A72-EA45-4E41D1DF970A"/>
</indexColumnUsage>
</ind_PK_UK>
<ind_PK_UK id="E07BF8C8-E440-5808-BE70-93E5E22CFC2D" name="Partes_Trabajador_logistica_FK">
<createdBy>Amets</createdBy>
<createdTime>2016-04-07 08:53:01 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<indexState>Foreign Key</indexState>
<isSurrogateKey>false</isSurrogateKey>
</ind_PK_UK>
<ind_PK_UK id="2BAC617E-0339-5EDD-1719-29287F13A6F6" name="Partes_Trabajador_administracion_FK">
<createdBy>Amets</createdBy>
<createdTime>2016-04-07 08:53:01 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<indexState>Foreign Key</indexState>
<isSurrogateKey>false</isSurrogateKey>
</ind_PK_UK>
<ind_PK_UK id="0590EC87-6AE4-76D9-4509-52E27E1BBB52" name="Partes_Trabajadores_logistica_escribe_FK">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-11 09:43:28 UTC</createdTime>
<generatorID>E1DCC362-79A2-3C78-02D0-EAF0C58EDAD3</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<indexState>Foreign Key</indexState>
<isSurrogateKey>false</isSurrogateKey>
<indexColumnUsage>
<colUsage columnID="19819AB1-7B24-A52B-C695-A35EEE08C2D5"/>
</indexColumnUsage>
</ind_PK_UK>
<ind_PK_UK id="69C3915D-830A-3C52-C3C9-777D7ECC091D" name="Partes_Trabajador_administracion_FKv1">
<createdBy>1GBD09</createdBy>
<createdTime>2016-03-11 09:44:56 UTC</createdTime>
<generatorID>E1DCC362-79A2-3C78-02D0-EAF0C58EDAD3</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<indexState>Foreign Key</indexState>
<isSurrogateKey>false</isSurrogateKey>
<indexColumnUsage>
<colUsage columnID="E06EAAA5-FFA4-52EB-41FA-7869DD1F6835"/>
</indexColumnUsage>
</ind_PK_UK>
<ind_PK_UK id="E812D81E-7CB1-E7D0-BCD0-7C819C16C161" name="Partes_Trabajador_logistica_FKv1">
<createdBy>aitor</createdBy>
<createdTime>2016-04-23 12:18:57 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<indexState>Foreign Key</indexState>
<isSurrogateKey>false</isSurrogateKey>
</ind_PK_UK>
<ind_PK_UK id="4F23CDB1-439F-7339-7F39-212781B8652A" name="Partes_Trabajador_administracion_FKv2">
<createdBy>aitor</createdBy>
<createdTime>2016-04-23 12:18:57 UTC</createdTime>
<generatorID>Generado por el Usuario</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<indexState>Foreign Key</indexState>
<isSurrogateKey>false</isSurrogateKey>
</ind_PK_UK>
<ind_PK_UK id="5C2B7234-E5FB-A018-B3B0-4DBB2801FE39" name="Partes_Vehiculo_FK">
<createdBy>aitor</createdBy>
<createdTime>2016-04-23 12:21:15 UTC</createdTime>
<generatorID>D9410AD2-9B43-76AC-CEDF-7A21C2D11D44</generatorID>
<ownerDesignName>Modelo logico</ownerDesignName>
<indexState>Foreign Key</indexState>
<isSurrogateKey>false</isSurrogateKey>
<indexColumnUsage>
<colUsage columnID="215E7B8A-A1FF-A575-A9DA-A430A35DBA36"/>
</indexColumnUsage>
</ind_PK_UK>
</indexes>
</Table>