+ )
+}
\ No newline at end of file
diff --git a/src/tools/larft/Header.jsx b/src/tools/larft/Header.jsx
new file mode 100644
index 000000000..55db31c74
--- /dev/null
+++ b/src/tools/larft/Header.jsx
@@ -0,0 +1,38 @@
+import React from 'react'
+import Heading from '../../common/Heading'
+import { Link } from 'react-router-dom'
+import { withAppContext } from '../../common/appContextHOC'
+
+
+const _Header = ({ config: { defaultDocsPeriod = '2018' } }) => (
+
+
+
+ The HMDA LAR formatting tool is a web application created by the
+ Bureau for HMDA filers, who do not have another means of doing so, to
+ enter and format data into a pipe delimited text file. A pipe delimited
+ text file is the required format, beginning with data collected in 2017,
+ for financial institutions to file their loan/application register (LAR)
+ using the HMDA Platform.
+
+ {/*
+ Follow the{' '}
+
+ LAR Formatting Tool instructions
+ {' '}
+ to format your data into a pipe delimited text file.
+
*/}
+
+
+)
+
+export const Header = withAppContext(_Header)
\ No newline at end of file
diff --git a/src/tools/larft/MoreInfo.jsx b/src/tools/larft/MoreInfo.jsx
new file mode 100644
index 000000000..045489db7
--- /dev/null
+++ b/src/tools/larft/MoreInfo.jsx
@@ -0,0 +1,82 @@
+import React, { memo } from 'react'
+import { unity } from './utils'
+
+const List = (title, list, className) => {
+ if (!list?.length) return null
+
+ return (
+
If the Applicant or Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 20,
+ "fieldName": "Ethnicity of Applicant or Borrower: 3",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Applicant or Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 21,
+ "fieldName": "Ethnicity of Applicant or Borrower: 4",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Applicant or Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 22,
+ "fieldName": "Ethnicity of Applicant or Borrower: 5",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Applicant or Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 23,
+ "fieldName": "Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino",
+ "examples": [],
+ "enumerations": [],
+ "descriptions": [
+ "Specify in text the Applicant’s or Borrower’s Other Hispanic or Latino ethnicity(ies) provided by the Applicant or Borrower. Otherwise, leave this data field blank."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 24,
+ "fieldName": "Ethnicity of Co-Applicant or Co-Borrower: 1",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If the Co-Applicant or Co-Borrower did not select any ethnicity(ies)",
+ "but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino",
+ "either leave this this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 25,
+ "fieldName": "Ethnicity of Co-Applicant or Co-Borrower: 2",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 26,
+ "fieldName": "Ethnicity of Co-Applicant or Co-Borrower: 3",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 27,
+ "fieldName": "Ethnicity of Co-Applicant or Co-Borrower: 4",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 28,
+ "fieldName": "Ethnicity of Co-Applicant or Co-Borrower: 5",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Hispanic or Latino"
+ },
+ {
+ "value": "11",
+ "description": "Mexican"
+ },
+ {
+ "value": "12",
+ "description": "Puerto Rican"
+ },
+ {
+ "value": "13",
+ "description": "Cuban"
+ },
+ {
+ "value": "14",
+ "description": "Other Hispanic or Latino"
+ },
+ {
+ "value": "2",
+ "description": "Not Hispanic or Latino"
+ },
+ {
+ "value": "3",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "4",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this this data field blank or enter Code 14."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 29,
+ "fieldName": "Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino",
+ "examples": [],
+ "enumerations": [],
+ "descriptions": [
+ "Specify in text the Co-Applicant’s or Co-Borrower’s Other Hispanic or Latino ethnicity(ies) provided by the Co-Applicant or Co-Borrower. Otherwise, leave this data field blank."
+ ],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 30,
+ "fieldName": "Ethnicity of Applicant or Borrower Collected on the Basis of Visual Observation or Surname",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Collected on the basis of visual observation or surname"
+ },
+ {
+ "value": "2",
+ "description": "Not collected on the basis of visual observation or surname"
+ },
+ {
+ "value": "3",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 31,
+ "fieldName": "Ethnicity of Co-Applicant or Co-Borrower Collected on the Basis of Visual Observation or Surname",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "Collected on the basis of visual observation or surname"
+ },
+ {
+ "value": "2",
+ "description": "Not collected on the basis of visual observation or surname"
+ },
+ {
+ "value": "3",
+ "description": "Not applicable"
+ },
+ {
+ "value": "4",
+ "description": "No co-applicant"
+ }
+ ],
+ "descriptions": [],
+ "dataPoint": "Ethnicity"
+ },
+ {
+ "fieldIndex": 32,
+ "fieldName": "Race of Applicant or Borrower: 1",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ },
+ {
+ "value": "6",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "7",
+ "description": "Not applicable"
+ }
+ ],
+ "descriptions": [
+ "If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Applicant or Borrower: Free Form Text Field for Other Asian, and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 33,
+ "fieldName": "Race of Applicant or Borrower: 2",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Applicant or Borrower: Free Form Text Field for Other Asian, and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 34,
+ "fieldName": "Race of Applicant or Borrower: 3",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Applicant or Borrower: Free Form Text Field for Other Asian, and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 35,
+ "fieldName": "Race of Applicant or Borrower: 4",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Applicant or Borrower: Free Form Text Field for Other Asian, and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 36,
+ "fieldName": "Race of Applicant or Borrower: 5",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry, leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Applicant or Borrower: Free Form Text Field for Other Asian, and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 37,
+ "fieldName": "Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe",
+ "examples": [],
+ "enumerations": [],
+ "descriptions": [
+ "Specify in text the Applicant’s or Borrower’s American Indian or Alaska Native Enrolled or Principal Tribe if Race provided by the Applicant or Borrower. Otherwise, leave this data field blank."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 38,
+ "fieldName": "Race of Applicant or Borrower: Free Form Text Field for Other Asian",
+ "examples": [],
+ "enumerations": [],
+ "descriptions": [
+ "Specify in text the Applicant’s or Borrower’s Other Asian race(s) provided by the Applicant or Borrower. Otherwise, leave this data field blank."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 39,
+ "fieldName": "Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander",
+ "examples": [],
+ "enumerations": [],
+ "descriptions": [
+ "Specify in text the Applicant’s or Borrower’s Other Pacific Islander race(s) provided by the Applicant or Borrower. Otherwise, leave this data field blank."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 40,
+ "fieldName": "Race of Co-Applicant or Co-Borrower: 1",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ },
+ {
+ "value": "6",
+ "description": "Information not provided by applicant in mail, internet, or telephone application"
+ },
+ {
+ "value": "7",
+ "description": "Not applicable"
+ },
+ {
+ "value": "8",
+ "description": "No co-applicant"
+ }
+ ],
+ "descriptions": [
+ "If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian, and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 41,
+ "fieldName": "Race of Co-Applicant or Co-Borrower: 2",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry",
+ "leave it blank.
If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian, and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 42,
+ "fieldName": "Race of Co-Applicant or Co-Borrower: 3",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry",
+ "leave it blank.
If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian, and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 43,
+ "fieldName": "Race of Co-Applicant or Co-Borrower: 4",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry",
+ "leave it blank.
If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe, Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian, and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander, either leave this data field blank or enter, as appropriate, Code 1, 27, or 44."
+ ],
+ "dataPoint": "Race"
+ },
+ {
+ "fieldIndex": 44,
+ "fieldName": "Race of Co-Applicant or Co-Borrower: 5",
+ "examples": [],
+ "enumerations": [
+ {
+ "value": "1",
+ "description": "American Indian or Alaska Native"
+ },
+ {
+ "value": "2",
+ "description": "Asian"
+ },
+ {
+ "value": "21",
+ "description": "Asian Indian"
+ },
+ {
+ "value": "22",
+ "description": "Chinese"
+ },
+ {
+ "value": "23",
+ "description": "Filipino"
+ },
+ {
+ "value": "24",
+ "description": "Japanese"
+ },
+ {
+ "value": "25",
+ "description": "Korean"
+ },
+ {
+ "value": "26",
+ "description": "Vietnamese"
+ },
+ {
+ "value": "27",
+ "description": "Other Asian"
+ },
+ {
+ "value": "3",
+ "description": "Black or African American Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "4",
+ "description": "Native Hawaiian or Other Pacific Islander"
+ },
+ {
+ "value": "41",
+ "description": "Native Hawaiian"
+ },
+ {
+ "value": "42",
+ "description": "Guamanian or Chamorro"
+ },
+ {
+ "value": "43",
+ "description": "Samoan"
+ },
+ {
+ "value": "44",
+ "description": "Other Pacific Islander Race"
+ },
+ {
+ "value": "5",
+ "description": "White"
+ }
+ ],
+ "descriptions": [
+ "If this data field does not contain an entry",
+ "leave it blank.
+ The following rows of your uploaded LAR file are malformed and have been
+ excluded from further processing.
+ Please correct your file and re-upload.
+
+
+ Tips:{' '}
+
+
+ Transmittal Sheet rows should begin with{' '}
+ "1|"
+
+
+ Loan/Application Register rows should begin with{' '}
+ "2|"
+
+ )
+}
diff --git a/src/tools/larft/parsedHelpers.jsx b/src/tools/larft/parsedHelpers.jsx
new file mode 100644
index 000000000..fb6bbf30c
--- /dev/null
+++ b/src/tools/larft/parsedHelpers.jsx
@@ -0,0 +1,35 @@
+import React from 'react'
+
+export const applyFilter = (column, filter) =>
+ !filter.length || column.fieldName.toLowerCase().includes(filter?.toLowerCase())
+
+export const checkHighlighted = (a, b) => {
+ const match = a && b && a.fieldName === b.fieldName ? 'highlight' : ''
+ return match
+}
+
+export const getType = ({ fieldType }) => {
+ if (fieldType == 'Alphanumeric') return 'text'
+ if (fieldType == 'Numeric') return 'number'
+ return 'text'
+}
+
+export const buildOptions = column => {
+ const vals = column.enumerations.map(({ value, description }) => (
+
+ ))
+
+ vals.unshift(
+
+ )
+ return vals
+}
+
+export const toJsDateString = str => {
+ if (!str) return ''
+ return `${str.slice(0, 4)}-${str.slice(4, 6)}-${str.slice(6)}`
+}
diff --git a/src/tools/larft/schemaGenerator.js b/src/tools/larft/schemaGenerator.js
new file mode 100644
index 000000000..3f147a8cb
--- /dev/null
+++ b/src/tools/larft/schemaGenerator.js
@@ -0,0 +1,119 @@
+const fs = require('fs')
+
+const readFile = name => fs.readFileSync(name, 'utf8')
+// const dir = dirname(__FILE__)
+
+let TS_SCHEMA_RAW = readFile(`${__dirname}/schema_ts.psv`)
+let LAR_SCHEMA_RAW = readFile(`${__dirname}/schema_lar.psv`)
+
+const unity = x => x
+const prettyJSON = json => JSON.stringify(JSON.parse(json), null, 2)
+
+const cleanupFieldName = str =>
+ str
+ ?.split('->')[0]
+ .replace(/\\|#|\[",/g, '')
+ .replace(/"/g, '')
+ .replace(/{hyphen}/g, '-')
+ .replace(/{comma}/g, ',')
+ .trim()
+
+const cleanString = str => {
+ const cleaned = str
+ ?.replace(/\\|#|\[",/g, '')
+ .replace(/"/g, '')
+ .replace(/{comma}/g, ',')
+ .trim()
+
+ return cleaned?.length ? cleaned : null
+}
+
+const convertType = type =>
+ type.includes('yyyyddmm')
+ ? 'date'
+ : type.includes('.toString')
+ ? 'enum'
+ : 'string'
+
+const parse = (raw, name) => {
+ const isTs = !!name.toLowerCase().includes('ts')
+
+ return raw
+ .split('\n')
+ .slice(1)
+ .filter(s => s && !s.match(/^"All data fields in the LAR/))
+ .map((line, idx) => {
+ const [
+ field_name,
+ _field_type,
+ _enumerations,
+ _examples,
+ _descriptions,
+ data_point,
+ ] = line.split('|').map(s => s.trim())
+
+ const fieldName = cleanupFieldName(field_name)
+
+ const examples = _examples?.split(',').map(cleanupFieldName).filter(unity)
+ const descriptions = _descriptions
+ ?.split(',')
+ .map(cleanupFieldName)
+ .filter(unity)
+ const enumerations = _enumerations
+ ?.split(',')
+ .map(cleanString)
+ .map(opt => {
+ console.log(opt)
+
+ const [val, desc] =
+ opt
+ ?.split('-')
+ .filter(x => x)
+ .map(x => cleanupFieldName(x)) || []
+
+ if (!val) return
+ return { value: val, description: desc || val }
+ })
+ .filter(unity)
+
+ // const fieldLength = maxLength?.split('_')[1] || 255
+ // const fieldType = convertType(_field_type)
+
+ const obj = {
+ fieldIndex: idx,
+ fieldName,
+ // fieldLength,
+ // fieldType,
+ examples,
+ enumerations,
+ descriptions,
+ }
+
+ // Include Data Point for LAR
+ if (!isTs) {
+ let dataPoint
+ if (!data_point || data_point === 'self') dataPoint = fieldName
+ else dataPoint = data_point
+ obj.dataPoint = dataPoint.trim().replace(/{hyphen}/g, '-')
+ }
+
+ return JSON.stringify(obj)
+ })
+ .join(',')
+}
+
+const makeJsonSchema = (raw, name) =>
+ prettyJSON(`{ "name": "${name}", "schema": [${parse(raw, name)} ] }`)
+
+const saveFile = (fileName, fileContent) => {
+ try {
+ fs.writeFileSync(`${__dirname}/${fileName}.json`, fileContent, {
+ flag: 'w+',
+ })
+ } catch (err) {
+ console.error(err)
+ }
+}
+
+saveFile('SchemaTs', makeJsonSchema(TS_SCHEMA_RAW, 'TS Schema'))
+saveFile('SchemaLar', makeJsonSchema(LAR_SCHEMA_RAW, 'LAR Schema'))
diff --git a/src/tools/larft/schema_lar.psv b/src/tools/larft/schema_lar.psv
new file mode 100644
index 000000000..69263f46b
--- /dev/null
+++ b/src/tools/larft/schema_lar.psv
@@ -0,0 +1,111 @@
+Field Name | _scalaStruct | Enumerations | Examples | Descriptions | Data Point Name
+"Record Identifier"| lar.larIdentifier.id.toString | 1 - TS, 2 - LAR| | 1 - Transmittal Sheet, 2 - Loan/Application Register|
+"Legal Entity Identifier (LEI)"| lar.larIdentifier.LEI | | 10BX939C5543TQA1144M || Legal Entity Identifier (LEI)
+"Universal Loan Identifier (ULI) or Non-Universal Loan Identifier (NULI)" | lar.loan.ULI | | ULI Example - 10BX939C5543TQA1144M999143X38, NULI Example - 999143X || Universal Loan Identifier (ULI) or Non-Universal Loan Identifier (NULI)
+"Application Date" | lar.loan.applicationDate | NA | 20210721 || Application Date
+"Loan Type" | lar.loan.loanType.code.toString | 1 - Conventional (not insured or guaranteed by FHA{comma} VA{comma} RHS{comma} or FSA), 2 - Federal Housing Administration insured (FHA), 3 - Veterans Affairs guaranteed (VA) , 4 - USDA Rural Housing Service or Farm Service Agency guaranteed (RHS or FSA),||| Loan Type
+"Loan Purpose" | lar.loan.loanPurpose.code.toString | 1 - Home purchase, 2 - Home improvement, 31 - Refinancing, 32 - Cash-out refinancing , 4 - Other purpose, 5 - Not applicable, ||| Loan Purpose
+"Preapproval" | lar.action.preapproval.code.toString | 1 - Preapproval requested, 2 - Preapproval not requested, | ||
+"Construction Method"| lar.loan.constructionMethod.code.toString | 1 - Site{hyphen}built, 2 - Manufactured Home, | ||
+"Occupancy Type" | lar.loan.occupancy.code.toString | 1 - Principal residence, 2 - Second residence, 3 - Investment property, | ||
+"Loan Amount" | lar.loan.amount.toString | | 110500, 110500.00 | Dollar ammount of loan{comma} without commas{comma} with cents (decimal required) or without cents. |
+"Action Taken" | lar.action.actionTakenType.code.toString | 1 - Loan originated, 2 - Application approved but not accepted, 3 - Application denied, 4 - Application withdrawn by applicant, 5 - File closed for incompleteness, 6 - Purchased loan, 7 - Preapproval request denied, 8 - Preapproval request approved but not accepted, | ||
+"Action Taken Date"| lar.action.actionTakenDate.toString | | 20210721 | Values in the downloaded LAR file are automatically converted to the valid format. |
+"Street Address" | lar.geography.street | NA, Exempt | 456 W Somewhere Ave Apt 201| | Property Address
+"City" | lar.geography.city | NA, Exempt |Anytown|| Property Address
+"State" | lar.geography.state | NA |CA || Property Location & Property Address
+"Zip Code" | lar.geography.zipCode |NA, Exempt| 90049{hyphen}9998| | Property Address
+"County" | lar.geography.county | NA |06037| |Property Location
+"Census Tract" | lar.geography.tract |NA| 06037264000| | Property Location
+"Ethnicity of Applicant or Borrower: 1" | lar.applicant.ethnicity.ethnicity1.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | | If the Applicant or Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Applicant or Borrower: 2" | lar.applicant.ethnicity.ethnicity2.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | |If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Applicant or Borrower: 3" | lar.applicant.ethnicity.ethnicity3.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | | If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Applicant or Borrower: 4" | lar.applicant.ethnicity.ethnicity4.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | | If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Applicant or Borrower: 5" | lar.applicant.ethnicity.ethnicity5.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | | If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Applicant or Borrower: Free Form Text Field for Other Hispanic or Latino" | lar.applicant.ethnicity.otherHispanicOrLatino ||| Specify in text the Applicant’s or Borrower’s Other Hispanic or Latino ethnicity(ies) provided by the Applicant or Borrower. Otherwise{comma} leave this data field blank. | Ethnicity |
+"Ethnicity of Co{hyphen}Applicant or Co{hyphen}Borrower: 1"| lar.coApplicant.ethnicity.ethnicity1.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | |If the Co-Applicant or Co-Borrower did not select any ethnicity(ies), but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino, either leave this this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Co{hyphen}Applicant or Co{hyphen}Borrower: 2"| lar.coApplicant.ethnicity.ethnicity2.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | |If this data field does not contain an entry{comma} leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Co{hyphen}Applicant or Co{hyphen}Borrower: 3"| lar.coApplicant.ethnicity.ethnicity3.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | |If this data field does not contain an entry{comma} leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Co{hyphen}Applicant or Co{hyphen}Borrower: 4"| lar.coApplicant.ethnicity.ethnicity4.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | |If this data field does not contain an entry{comma} leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Co{hyphen}Applicant or Co{hyphen}Borrower: 5"| lar.coApplicant.ethnicity.ethnicity5.code.toString | 1 - Hispanic or Latino, 11 - Mexican, 12 - Puerto Rican, 13 - Cuban, 14 - Other Hispanic or Latino , 2 - Not Hispanic or Latino , 3 - Information not provided by applicant in mail{comma} internet{comma} or telephone application , 4 - Not applicable, | |If this data field does not contain an entry{comma} leave it blank.
If the Co-Applicant or Co-Borrower did not select any ethnicity(ies){comma} but only provided ethnicity(ies) in the Ethnicity of Co-Applicant or Co-Borrower: Free Form Text Field for Other Hispanic or Latino{comma} either leave this this data field blank or enter Code 14. | Ethnicity
+"Ethnicity of Co{hyphen}Applicant or Co{hyphen}Borrower: Free Form Text Field for Other Hispanic or Latino" | lar.coApplicant.ethnicity.otherHispanicOrLatino | || Specify in text the Co-Applicant’s or Co-Borrower’s Other Hispanic or Latino ethnicity(ies) provided by the Co-Applicant or Co-Borrower. Otherwise{comma} leave this data field blank. |Ethnicity
+"Ethnicity of Applicant or Borrower Collected on the Basis of Visual Observation or Surname" | lar.applicant.ethnicity.ethnicityObserved.code.toString | 1 - Collected on the basis of visual observation or surname, 2 - Not collected on the basis of visual observation or surname , 3 - Not applicable, | ||Ethnicity
+"Ethnicity of Co{hyphen}Applicant or Co{hyphen}Borrower Collected on the Basis of Visual Observation or Surname" | lar.coApplicant.ethnicity.ethnicityObserved.code.toString | 1 - Collected on the basis of visual observation or surname, 2 - Not collected on the basis of visual observation or surname , 3 - Not applicable, 4 - No co{hyphen}applicant, | ||Ethnicity
+"Race of Applicant or Borrower: 1" | lar.applicant.race.race1.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White, 6 - Information not provided by applicant in mail{comma} internet{comma} or telephone application, 7 - Not applicable, ||If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Applicant or Borrower: Free Form Text Field for Other Asian{comma} and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44. | Race
+"Race of Applicant or Borrower: 2" | lar.applicant.race.race2.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White||If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Applicant or Borrower: Free Form Text Field for Other Asian{comma} and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Applicant or Borrower: 3" | lar.applicant.race.race3.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White||If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Applicant or Borrower: Free Form Text Field for Other Asian{comma} and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Applicant or Borrower: 4" | lar.applicant.race.race4.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White||If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Applicant or Borrower: Free Form Text Field for Other Asian{comma} and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Applicant or Borrower: 5" | lar.applicant.race.race5.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White||If this data field does not contain an entry{comma} leave it blank.
If the Applicant or Borrower did not select any race(s) and only provided race(s) in the Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Applicant or Borrower: Free Form Text Field for Other Asian{comma} and/or Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Applicant or Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe" | lar.applicant.race.otherNativeRace | || Specify in text the Applicant’s or Borrower’s American Indian or Alaska Native Enrolled or Principal Tribe if Race provided by the Applicant or Borrower. Otherwise{comma} leave this data field blank. | Race |
+"Race of Applicant or Borrower: Free Form Text Field for Other Asian" | lar.applicant.race.otherAsianRace | || Specify in text the Applicant’s or Borrower’s Other Asian race(s) provided by the Applicant or Borrower. Otherwise{comma} leave this data field blank. | Race |
+"Race of Applicant or Borrower: Free Form Text Field for Other Pacific Islander" | lar.applicant.race.otherPacificIslanderRace | || Specify in text the Applicant’s or Borrower’s Other Pacific Islander race(s) provided by the Applicant or Borrower. Otherwise{comma} leave this data field blank. | Race |
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: 1" | lar.coApplicant.race.race1.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White, 6 - Information not provided by applicant in mail{comma} internet{comma} or telephone application, 7 - Not applicable, 8 - No co{hyphen}applicant ||If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian{comma} and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: 2" | lar.coApplicant.race.race2.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White ||If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian{comma} and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: 3" | lar.coApplicant.race.race3.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White ||If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian{comma} and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: 4" | lar.coApplicant.race.race4.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White ||If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian{comma} and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: 5" | lar.coApplicant.race.race5.code.toString | 1 - American Indian or Alaska Native, 2 - Asian, 21 - Asian Indian , 22 - Chinese, 23 - Filipino, 24 - Japanese , 25 - Korean, 26 - Vietnamese, 27 - Other Asian, 3 - Black or African American Native Hawaiian or Other Pacific Islander, 4 - Native Hawaiian or Other Pacific Islander, 41 - Native Hawaiian, 42 - Guamanian or Chamorro, 43 - Samoan, 44 - Other Pacific Islander Race, 5 - White ||If this data field does not contain an entry, leave it blank.
If the Co-Applicant or Co-Borrower did not select any race(s) and only provided race(s) in the Race of CoApplicant or Co-Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe{comma} Race of Co-Applicant or CoBorrower: Free Form Text Field for Other Asian{comma} and/or Race of CoApplicant or Co-Borrower: Free Form Text Field for Other Pacific Islander{comma} either leave this data field blank or enter{comma} as appropriate{comma} Code 1{comma} 27{comma} or 44.| Race
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: Free Form Text Field for American Indian or Alaska Native Enrolled or Principal Tribe" | lar.coApplicant.race.otherNativeRace | || Specify in text the Co{hyphen}Applicant’s or Co{hyphen}Borrower’s American Indian or Alask a Native Enrolled or Principal Tribe if provided by the Co{hyphen}Applicant or Co{hyphen}Borrower. Otherwise{comma} leave this data field blank. | Race |
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: Free Form Text Field for Other Asian"| lar.coApplicant.race.otherAsianRace | || Specify in text the Co{hyphen}Applicant’s or Co{hyphen}Borrower’s Other Asian race(s) provided by the Co{hyphen}Applicant or Co{hyphen}Borrower. Otherwise{comma} leave this data field blank. | Race
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower: Free Form Text Field for Other Pacific Islander" | lar.coApplicant.race.otherPacificIslanderRace ||| Specify in text the Co{hyphen}Applicant’s or Co{hyphen}Borrower’s Other Pacific Islander race(s) provided by the Co{hyphen}Applicant or Co{hyphen}Borrower. Otherwise{comma} leave this data field blank. | Race
+"Race of Applicant or Borrower Collected on the Basis of Visual Observation or Surname" | lar.applicant.race.raceObserved.code.toString | 1 - Collected on the basis of visual observation or surname, 2 - Not collected on the basis of visual observation or surname , 3 - Not applicable, ||| Race
+"Race of Co{hyphen}Applicant or Co{hyphen}Borrower Collected on the Basis of Visual Observation or Surname" | lar.coApplicant.race.raceObserved.code.toString | 1 - Collected on the basis of visual observation or surname, 2 - Not collected on the basis of visual observation or surname , 3 - Not applicable, 4 - No co{hyphen}applicant, ||| Ethnicity
+"Sex of Applicant or Borrower" | lar.applicant.sex.sexEnum.code.toString | 1 - Male, 2 - Female, 3 - Information not provided by applicant in mail{comma} internet{comma} or Sex 4 telephone application, 4 - Not applicable, 6 - Applicant selected both male and female, ||| Sex
+"Sex of Co{hyphen}Applicant or Co{hyphen}Borrower" | lar.coApplicant.sex.sexEnum.code.toString | 1 - Male, 2 - Female, 3 - Information not provided by applicant in mail{comma} internet{comma} or Sex 4 telephone application, 4 - Not applicable, 6 - Applicant selected both male and female, ||| Sex
+"Sex of Applicant or Borrower Collected on the Basis of Visual Observation or Surname" | lar.applicant.sex.sexObservedEnum.code.toString | 1 - Collected on the basis of visual observation or surname, 2 - Not collected on the basis of visual observation or surname, 3 - Not applicable ||| Sex
+"Sex of Co{hyphen}Applicant or Co{hyphen}Borrower Collected on the Basis of Visual Observation or Surname" | lar.coApplicant.sex.sexObservedEnum.code.toString |1 - Collected on the basis of visual observation or surname, 2 - Not collected on the basis of visual observation or surname, 3 - Not applicable, 4 - No co{hyphen}applicant, ||| Sex
+"Age of Applicant or Borrower" | lar.applicant.age.toString |8888 - NA | 24|| Sex
+"Age of Co{hyphen}Applicant or Co{hyphen}Borrower" | lar.coApplicant.age.toString | 8888 - NA, 9999 - No co{hyphen}applicant |24|| Age
+"Income" | lar.income | NA | 36, -36 | |
+"Type of Purchaser"| lar.purchaserType.code.toString |0 - Not applicable, 1 - Fannie Mae, 2 - Ginnie Mae, 3 - Freddie Mac, 4 - Farmer Mac, 5 - Private securitizer, 6 - Commercial bank{comma} savings bank{comma} or savings association, 71 - Credit union{comma} mortgage company{comma} or finance company, 72 - Life insurance company, 8 - Affiliate institution, 9 - Other type of purchaser, | ||
+"Rate Spread" | lar.loan.rateSpread | NA, Exempt | 0.428,{hyphen}0.428 | |
+"HOEPA Status" | lar.hoepaStatus.code.toString | 1 - High-cost mortgage, 2 - Not a high-cost mortgage , 3 - Not applicable, | ||
+"Lien Status" | lar.lienStatus.code.toString | 1 - Secured by a first lien, 2 - Secured by a subordinate lien | ||
+"Credit Score of Applicant or Borrower" | lar.applicant.creditScore.toString | 7777 - Credit score is not a number, 8888 - Not applicable, 1111 - Exempt |650 || Credit Score
+"Credit Score of Co{hyphen}Applicant or Co{hyphen}Borrower"| lar.coApplicant.creditScore.toString | 7777 - Credit score is not a number, 8888 - Not applicable, 9999 - No co{hyphen}applicant, 1111 - Exempt | 650 || Credit Score
+"Applicant or Borrower, Name and Version of Credit Scoring Model"| lar.applicant.creditScoreType.code.toString | 1 - Equifax Beacon 5.0, 2 - Experian Fair Isaac Risk Model v2 3 , 3 - TransUnion FICO Risk Score Classic 04, 4 - TransUnion FICO Risk Score Classic 98, 5 - VantageScore 2.0, 6 - VantageScore 3.0, 7 - More than one credit scoring model, 8 - Other credit scoring model, 9 - Not applicable , 1111 - Exempt, ||| Credit Score
+"Applicant or Borrower, Name and Version of Credit Scoring Model: Conditional Free Form Text Field for Code 8" | lar.applicant.otherCreditScoreModel | ||Specify in text the applicant’s or borrower’s Other credit scoring model if 8 is entered. Otherwise{comma} leave this data field blank. | Credit Score |
+"Co{hyphen}Applicant or Co{hyphen}Borrower, Name and Version of Credit Scoring Model" | lar.coApplicant.creditScoreType.code.toString | 1 - Equifax Beacon 5.0, 2 - Experian Fair Isaac Risk Model v2 3 , 3 - TransUnion FICO Risk Score Classic 04, 4 - TransUnion FICO Risk Score Classic 98, 5 - VantageScore 2.0, 6 - VantageScore 3.0, 7 - More than one credit scoring model, 8 - Other credit scoring model, 9 - Not applicable , 10 - No co{hyphen}applicant, 1111 - Exempt, | Credit Score
+"Co{hyphen}Applicant or Co{hyphen}Borrower, Name and Version of Credit Scoring Model: Conditional Free Form Text Field for Code 8" | lar.coApplicant.otherCreditScoreModel | ||Specify in text the co{hyphen}applicant’s or coborrower’s Other credit scoring model if 8 is entered. Otherwise{comma} leave this data field blank. | Credit Score
+"Reason for Denial: 1" | lar.denial.denialReason1.code.toString | 1 - Debt{hyphen}to{hyphen}income ratio, 2 - Employment history, 3 - Credit history, 4 - Collateral, 5 - Insufficient cash (downpayment{comma} closing costs), 6 - Unverifiable information , 7 - Credit application incomplete , 8 - Mortgage insurance denied, 9 - Other, 10 - Not applicable, 1111 - Exempt, ||| Reason for Denial
+"Reason for Denial: 2" | lar.denial.denialReason2.code.toString | 1 - Debt{hyphen}to{hyphen}income ratio, 2 - Employment history, 3 - Credit history, 4 - Collateral, 5 - Insufficient cash (downpayment{comma} closing costs), 6 - Unverifiable information , 7 - Credit application incomplete , 8 - Mortgage insurance denied, 9 - Other ||| Reason for Denial
+"Reason for Denial: 3" | lar.denial.denialReason3.code.toString | 1 - Debt{hyphen}to{hyphen}income ratio, 2 - Employment history, 3 - Credit history, 4 - Collateral, 5 - Insufficient cash (downpayment{comma} closing costs), 6 - Unverifiable information , 7 - Credit application incomplete , 8 - Mortgage insurance denied, 9 - Other ||| Reason for Denial
+"Reason for Denial: 4" | lar.denial.denialReason4.code.toString | 1 - Debt{hyphen}to{hyphen}income ratio, 2 - Employment history, 3 - Credit history, 4 - Collateral, 5 - Insufficient cash (downpayment{comma} closing costs), 6 - Unverifiable information , 7 - Credit application incomplete , 8 - Mortgage insurance denied, 9 - Other ||| Reason for Denial
+"Reason for Denial: Conditional Free Form Text Field for Code 9" | lar.denial.otherDenialReason ||| Specify in text the Other Denial Reason(s) if Code 9 is entered. Otherwise{comma} leave this data field blank. | Reason for Denial
+"Total Loan Costs" | lar.loanDisclosure.totalLoanCosts | NA, Exempt |2399.04|| Total Loan Costs or Total Points and Fees
+"Total Points and Fees" | lar.loanDisclosure.totalPointsAndFees | NA, Exempt |2399.04|| Total Loan Costs or Total Points and Fees
+"Origination Charges"| lar.loanDisclosure.originationCharges | NA, Exempt |2399.04|| Origination Charges
+"Discount Points" | lar.loanDisclosure.discountPoints | NA, Exempt |2399.04|| Discount Points
+"Lender Credits" | lar.loanDisclosure.lenderCredits | NA, Exempt |1500.24| |
+"Interest Rate" | lar.loan.interestRate | NA, Exempt |4.125|
+"Prepayment Penalty Term" | lar.loan.prepaymentPenaltyTerm | NA, Exempt |24||
+"Debt-to-Income Ratio" | lar.loan.debtToIncomeRatio | NA, Exempt |42.95, -42.95||
+"Combined Loan-to-Value Ratio" | lar.loan.combinedLoanToValueRatio | NA, Exempt |80.05||
+"Loan Term" | lar.loan.loanTerm | NA, Exempt |360| |
+"Introductory Rate Period" | lar.loan.introductoryRatePeriod | NA, Exempt |24||
+"Balloon Payment" | lar.nonAmortizingFeatures.balloonPayment.code.toString | 1 - Balloon payment, 2 - No balloon payment , 1111 - Exempt, ||| Non{hyphen}Amortizing Features
+"Interest-Only Payments" | lar.nonAmortizingFeatures.interestOnlyPayments.code.toString |1 - Interest{hyphen}only payments, 2 - No interest{hyphen}only payments , 1111 - Exempt, ||| Non{hyphen}Amortizing Features
+"Negative Amortization" | lar.nonAmortizingFeatures.negativeAmortization.code.toString |1 - Negative amortization, 2 - No negative amortization , 1111 - Exempt, ||| Non{hyphen}Amortizing Features
+"Other Non-amortizing Features"| lar.nonAmortizingFeatures.otherNonAmortizingFeatures.code.toString | 1 - Other non{hyphen}fully amortizing features , 2 - No other non{hyphen}fully amortizing features , 1111 - Exempt, ||| Non{hyphen}Amortizing Features
+"Property Value" | lar.property.propertyValue | NA, Exempt |350500||
+"Manufactured Home Secured Property Type" | lar.property.manufacturedHomeSecuredProperty.code.toString | 1 - Manufactured home and land, 2 - Manufactured home and not land , 3 - Not applicable, 1111 - Exempt, | |
+"Manufactured Home Land Property Interest" | lar.property.manufacturedHomeLandPropertyInterest.code.toString | 1 - Direct ownership, 2 - Indirect ownership, 3 - Paid leasehold, 4 - Unpaid leasehold, 5 - Not applicable , 1111 - Exempt, | ||
+"Total Units" | lar.property.totalUnits.toString || 5 | |
+"Multifamily Affordable Units" | lar.property.multiFamilyAffordableUnits | NA, Exempt |5||
+"Submission of Application" | lar.applicationSubmission.code.toString | 1 - Submitted directly to your institution, 2 - Not submitted directly to your institution, 3 - Not applicable, 1111 - Exempt, ||| Application Channel
+"Initially Payable to Your Institution" | lar.payableToInstitution.code.toString | 1 - Initially payable to your institution, 2 - Not initially payable to your institution, 3 - Not applicable, 1111 - Exempt ||| Application Channel
+"NMLSR ID" | lar.larIdentifier.NMLSRIdentifier | NA, Exempt |123450|| Mortgage Loan Originator NMLSR Identifier
+"Automated Underwriting System: 1" | lar.AUS.aus1.code.toString | 1 - Desktop Underwriter (DU), 2 - Loan Prospector (LP) or Loan Product Advisor, 3 - Technology Open to Approved Lenders (TOTAL) Scorecard, 4 - Guaranteed Underwriting System 6 (GUS), 5 - Other, 6 - Not applicable, 7 - Internal Proprietary System, 1111 - Exempt, ||| Automated Underwriting System
+"Automated Underwriting System: 2" | lar.AUS.aus2.code.toString | 1 - Desktop Underwriter (DU), 2 - Loan Prospector (LP) or Loan Product Advisor, 3 - Technology Open to Approved Lenders (TOTAL) Scorecard, 4 - Guaranteed Underwriting System 6 (GUS), 5 - Other, 7 - Internal Proprietary System ||| Automated Underwriting System
+"Automated Underwriting System: 3" | lar.AUS.aus3.code.toString | 1 - Desktop Underwriter (DU), 2 - Loan Prospector (LP) or Loan Product Advisor, 3 - Technology Open to Approved Lenders (TOTAL) Scorecard, 4 - Guaranteed Underwriting System 6 (GUS), 5 - Other, 7 - Internal Proprietary System ||| Automated Underwriting System
+"Automated Underwriting System: 4" | lar.AUS.aus4.code.toString | 1 - Desktop Underwriter (DU), 2 - Loan Prospector (LP) or Loan Product Advisor, 3 - Technology Open to Approved Lenders (TOTAL) Scorecard, 4 - Guaranteed Underwriting System 6 (GUS), 5 - Other, 7 - Internal Proprietary System ||| Automated Underwriting System
+"Automated Underwriting System: 5" | lar.AUS.aus5.code.toString | 1 - Desktop Underwriter (DU), 2 - Loan Prospector (LP) or Loan Product Advisor, 3 - Technology Open to Approved Lenders (TOTAL) Scorecard, 4 - Guaranteed Underwriting System 6 (GUS), 5 - Other, 7 - Internal Proprietary System ||| Automated Underwriting System
+"Automated Underwriting System: Conditional Free Form Text Field for Code 5" | lar.AUS.otherAUS ||| Specify in text the Other Automated Underwriting System(s) if 5 is entered. Otherwise{comma} leave this data field blank. | Automated Underwriting System
+"Automated Underwriting System Result: 1" | lar.ausResult.ausResult1.code.toString | 1 - Approve/Eligible, 2 - Approve/Ineligible , 3 - Refer/Eligible, 4 - Refer/Ineligible, 5 - Refer with Caution , 6 - Out of Scope, 7 - Error, 8 - Accept, 9 - Caution , 10 - Ineligible, 11 - Incomplete, 12 - Invalid, 13 - Refer, 14 - Eligible, 15 - Unable to Determine or Unknown, 16 - Other, 17 - Not Applicable, 18 - Accept/Eligible, 19 - Accept/Ineligible, 20 - Accept/Unable to Determine, 21 - Refer with Caution/Eligible, 22 - Refer with Caution/Ineligible, 23 - Refer/Unable to Determine, 24 - Refer with Caution/Unable to Determine, 1111 - Exempt, ||| Automated Underwriting System
+"Automated Underwriting System Result: 2" | lar.ausResult.ausResult2.code.toString | 1 - Approve/Eligible, 2 - Approve/Ineligible , 3 - Refer/Eligible, 4 - Refer/Ineligible, 5 - Refer with Caution , 6 - Out of Scope, 7 - Error, 8 - Accept, 9 - Caution , 10 - Ineligible, 11 - Incomplete, 12 - Invalid, 13 - Refer, 14 - Eligible, 15 - Unable to Determine or Unknown, 16 - Other, 17 - Not Applicable, 18 - Accept/Eligible, 19 - Accept/Ineligible, 20 - Accept/Unable to Determine, 21 - Refer with Caution/Eligible, 22 - Refer with Caution/Ineligible, 23 - Refer/Unable to Determine, 24 - Refer with Caution/Unable to Determine||If this data field does not contain an entry{comma} leave it blank| Automated Underwriting System
+"Automated Underwriting System Result: 3" | lar.ausResult.ausResult3.code.toString | 1 - Approve/Eligible, 2 - Approve/Ineligible , 3 - Refer/Eligible, 4 - Refer/Ineligible, 5 - Refer with Caution , 6 - Out of Scope, 7 - Error, 8 - Accept, 9 - Caution , 10 - Ineligible, 11 - Incomplete, 12 - Invalid, 13 - Refer, 14 - Eligible, 15 - Unable to Determine or Unknown, 16 - Other, 17 - Not Applicable, 18 - Accept/Eligible, 19 - Accept/Ineligible, 20 - Accept/Unable to Determine, 21 - Refer with Caution/Eligible, 22 - Refer with Caution/Ineligible, 23 - Refer/Unable to Determine, 24 - Refer with Caution/Unable to Determine||If this data field does not contain an entry{comma} leave it blank| Automated Underwriting System
+"Automated Underwriting System Result: 4" | lar.ausResult.ausResult4.code.toString | 1 - Approve/Eligible, 2 - Approve/Ineligible , 3 - Refer/Eligible, 4 - Refer/Ineligible, 5 - Refer with Caution , 6 - Out of Scope, 7 - Error, 8 - Accept, 9 - Caution , 10 - Ineligible, 11 - Incomplete, 12 - Invalid, 13 - Refer, 14 - Eligible, 15 - Unable to Determine or Unknown, 16 - Other, 17 - Not Applicable, 18 - Accept/Eligible, 19 - Accept/Ineligible, 20 - Accept/Unable to Determine, 21 - Refer with Caution/Eligible, 22 - Refer with Caution/Ineligible, 23 - Refer/Unable to Determine, 24 - Refer with Caution/Unable to Determine||If this data field does not contain an entry{comma} leave it blank| Automated Underwriting System
+"Automated Underwriting System Result: 5" | lar.ausResult.ausResult5.code.toString | 1 - Approve/Eligible, 2 - Approve/Ineligible , 3 - Refer/Eligible, 4 - Refer/Ineligible, 5 - Refer with Caution , 6 - Out of Scope, 7 - Error, 8 - Accept, 9 - Caution , 10 - Ineligible, 11 - Incomplete, 12 - Invalid, 13 - Refer, 14 - Eligible, 15 - Unable to Determine or Unknown, 16 - Other, 17 - Not Applicable, 18 - Accept/Eligible, 19 - Accept/Ineligible, 20 - Accept/Unable to Determine, 21 - Refer with Caution/Eligible, 22 - Refer with Caution/Ineligible, 23 - Refer/Unable to Determine, 24 - Refer with Caution/Unable to Determine||If this data field does not contain an entry{comma} leave it blank| Automated Underwriting System
+"Automated Underwriting System Result: Conditional Free Form Text Field for Code 16" | lar.ausResult.otherAusResult ||| Specify in text the Other Automated Underwriting System Result(s) if 16 is entered. Otherwise{comma} leave this data field blank. | Automated Underwriting System
+"Reverse Mortgage" | lar.reverseMortgage.code.toString | 1 - Reverse mortgage , 2 - Not a reverse mortgage, 1111 - Exempt, | ||
+"Open-End Line of Credit" | lar.lineOfCredit.code.toString | 1 - Open{hyphen}end line of credit, 2 - Not an open{hyphen}end line of credit, 1111 - Exempt, |||
+"Business or Commercial Purpose" | lar.businessOrCommercialPurpose.code.toString | 1 - Primarily for a business or commercial purpose, 2 - Not primarily for a business or commercial purpose , 1111 - Exempt, |||
\ No newline at end of file
diff --git a/src/tools/larft/schema_ts.psv b/src/tools/larft/schema_ts.psv
new file mode 100644
index 000000000..68a058854
--- /dev/null
+++ b/src/tools/larft/schema_ts.psv
@@ -0,0 +1,16 @@
+Field Name | _scalaStruct | Enumerations | Examples | Descriptions
+"Record Identifier" | ts.id.toString | 1 - TS, 2 - LAR | ||
+"Financial Institution Name" | ts.institutionName || Ficus Bank ||
+"Calendar Year" | ts.year.toString | 2019 - 2019,2020 - 2020,2021 - 2021,2022 - 2022 | 2021 ||
+"Calendar Quarter" | ts.quarter.toString | 1 - Q1, 2 - Q2, 3 - Q3, 4 - Annual | 4 ||
+"Contact Person's Name" | ts.contact.name || Erika Otis ||
+"Contact Person's Phone Number" | ts.contact.phone || 999{hyphen}999{hyphen}9999 ||
+"Contact Person's E-mail Address" | ts.contact.email || erikaotis@bank.com ||
+"Contact Person's Office Street Address" | ts.contact.address.street || 4321 W Random Blvd Ste 201 ||
+"Contact Person's Office City" | ts.contact.address.city || Somecity ||
+"Contact Person's Office State" | ts.contact.address.state || CA ||
+"Contact Person's Office Zip Code" | ts.contact.address.zipCode || 90049{hyphen}9998 ||
+"Federal Agency" | ts.agency.code.toString | 1 - Office of the Comptroller of the Currency (OCC), 2 - Federal Reserve System (FRS), 3 - Federal Deposit Insurance Corporation (FDIC), 5 - National Credit Union Administration 9 (NCUA), 7 - United States Department of Housing and Urban Development (HUD), 9 - Consumer Financial Protection Bureau (Bureau) |||
+"Total Number of Entries Contained in Submission" | ts.totalLines.toString || 5000 ||
+"Federal Taxpayer Identification Number" | ts.taxId || 99{hyphen}9999999 ||
+"Legal Entity Identifier (LEI)" | ts.LEI || 10BX939C5543TQA1144M ||
diff --git a/src/tools/larft/useRestyledButtonLinks.jsx b/src/tools/larft/useRestyledButtonLinks.jsx
new file mode 100644
index 000000000..a8fa884d6
--- /dev/null
+++ b/src/tools/larft/useRestyledButtonLinks.jsx
@@ -0,0 +1,13 @@
+import { useLayoutEffect } from 'react'
+
+// Remove .button-link to show `Return to top` as a button
+export const useRestyledButtonLinks = () => {
+ useLayoutEffect(
+ () => document
+ .querySelectorAll('.button-link')
+ .forEach(
+ e => (e.className = (e.className || '').replace('button-link', ''))
+ ),
+ []
+ )
+}
diff --git a/src/tools/larft/utils.js b/src/tools/larft/utils.js
new file mode 100644
index 000000000..8f7b08dc1
--- /dev/null
+++ b/src/tools/larft/utils.js
@@ -0,0 +1,68 @@
+import larSchema from './SchemaLar.json'
+import tsSchema from './SchemaTs.json'
+
+export const LAR_SCHEMA = larSchema.schema
+export const TS_SCHEMA = tsSchema.schema
+export const PIPE_DELIMITER = '|'
+export const OR_DELIMITER = ' (or) '
+export const RECORD_IDENTIFIER = 'Record Identifier'
+
+let NEXT_ID = 0
+export const createID = () => (NEXT_ID++).toString()
+
+export const isTS = r => r && r[RECORD_IDENTIFIER] === '1'
+export const isLAR = r => r && r[RECORD_IDENTIFIER] === '2'
+
+export const cloneObject = item => JSON.parse(JSON.stringify(item))
+export const cloneObjectArray = array => array.map(cloneObject)
+
+export const unity = x => x
+
+export const isString = x => typeof x === 'string'
+
+export const log = (...data) =>
+ process.env.NODE_ENV !== 'production' ? console.log(...data) : null
+
+export const getSchema = row => {
+ if (!row) return LAR_SCHEMA
+ // Row string
+ if (isString(row) && row.match(/^1/)) return TS_SCHEMA
+ // Row object
+ else if (isTS(row)) return TS_SCHEMA
+
+ return LAR_SCHEMA
+}
+
+/**
+ * Pipe-delimited values
+ * @param {Object} row
+ * @returns String
+ */
+export const stringifyRow = row =>
+ getSchema(row)
+ .map(column => row && row[column.fieldName])
+ .join(PIPE_DELIMITER)
+
+/**
+ * Parse a LAR row string
+ * @param {String} row
+ * @returns Object
+ */
+export const parseRow = (row = {}) => {
+ if (!row) return {}
+ if (!row.split) return row
+
+ const schema = row.match(/^1/) ? TS_SCHEMA : LAR_SCHEMA
+
+ return row.split(PIPE_DELIMITER).reduce((prev, currVal, currIdx) => {
+ const columnSchema = schema[currIdx]
+ if (!columnSchema) return prev
+
+ prev[columnSchema.fieldName] = currVal
+ return prev
+ }, {})
+}
+
+export const goTo = id =>
+ document.getElementById(id)?.scrollIntoView({ behavior: 'smooth' })
+export const goToFileActions = () => goTo('file-actions')
diff --git a/yarn.lock b/yarn.lock
index 31df071ce..9089e9e8b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10422,6 +10422,13 @@ react-fast-compare@^2.0.2:
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
+react-fluid-table@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/react-fluid-table/-/react-fluid-table-0.4.2.tgz#3ff9f29a1bf00ae2a4c03bc16f985b2bfef9282a"
+ integrity sha512-f+Mw4ZH3RWM0POk9q9x8iaudLzW2qW7p5cl6eCfJPbbhV3cxSKSIFnzMij4U4fmed4gTfTvZ+bv3m7JbxBN19A==
+ dependencies:
+ react-window "^1.8.5"
+
react-helmet@5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-5.2.1.tgz#16a7192fdd09951f8e0fe22ffccbf9bb3e591ffa"
@@ -10611,7 +10618,7 @@ react-transition-group@^4.3.0:
loose-envify "^1.4.0"
prop-types "^15.6.2"
-react-window@1.8.6:
+react-window@1.8.6, react-window@^1.8.5:
version "1.8.6"
resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.6.tgz#d011950ac643a994118632665aad0c6382e2a112"
integrity sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==