From 6a1d544565d8338a1cbc8528842dd00cd779f811 Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Wed, 23 Oct 2024 15:24:43 +0530 Subject: [PATCH 01/15] added the csv file for flight --- flight-modified.csv | 12374 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 12374 insertions(+) create mode 100644 flight-modified.csv diff --git a/flight-modified.csv b/flight-modified.csv new file mode 100644 index 0000000..7b1ae86 --- /dev/null +++ b/flight-modified.csv @@ -0,0 +1,12374 @@ +airport,carrier,carrier_name,month,airport_name +ABE,9E,Endeavor Air Inc.,8,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABY,9E,Endeavor Air Inc.,8,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,8,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,8,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,8,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,9E,Endeavor Air Inc.,8,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,8,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,8,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,8,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,8,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,8,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,9E,Endeavor Air Inc.,8,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,8,"Brunswick, GA: Brunswick Golden Isles" +BTV,9E,Endeavor Air Inc.,8,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,8,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,8,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,8,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,8,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,8,"Charleston, SC: Charleston AFB/International" +CLE,9E,Endeavor Air Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,8,"Columbus, OH: John Glenn Columbus International" +CRW,9E,Endeavor Air Inc.,8,"Charleston/Dunbar, WV: West Virginia International Yeager" +CSG,9E,Endeavor Air Inc.,8,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,8,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,8,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DHN,9E,Endeavor Air Inc.,8,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,8,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,8,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,8,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,8,"Newark, NJ: Newark Liberty International" +FAR,9E,Endeavor Air Inc.,8,"Fargo, ND: Hector International" +FAY,9E,Endeavor Air Inc.,8,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FSD,9E,Endeavor Air Inc.,8,"Sioux Falls, SD: Joe Foss Field" +GFK,9E,Endeavor Air Inc.,8,"Grand Forks, ND: Grand Forks International" +GRR,9E,Endeavor Air Inc.,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,8,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,8,"Columbus, MS: Golden Triangle Regional" +IAD,9E,Endeavor Air Inc.,8,"Washington, DC: Washington Dulles International" +ILM,9E,Endeavor Air Inc.,8,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,8,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,8,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,9E,Endeavor Air Inc.,8,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,8,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,8,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,8,"Lexington, KY: Blue Grass" +LFT,9E,Endeavor Air Inc.,8,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,9E,Endeavor Air Inc.,8,"New York, NY: LaGuardia" +LIT,9E,Endeavor Air Inc.,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MBS,9E,Endeavor Air Inc.,8,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,8,"Kansas City, MO: Kansas City International" +MEM,9E,Endeavor Air Inc.,8,"Memphis, TN: Memphis International" +MGM,9E,Endeavor Air Inc.,8,"Montgomery, AL: Montgomery Regional" +MKE,9E,Endeavor Air Inc.,8,"Milwaukee, WI: General Mitchell International" +MLI,9E,Endeavor Air Inc.,8,"Moline, IL: Quad Cities International" +MLU,9E,Endeavor Air Inc.,8,"Monroe, LA: Monroe Regional" +MOB,9E,Endeavor Air Inc.,8,"Mobile, AL: Mobile Regional" +MQT,9E,Endeavor Air Inc.,8,"Marquette, MI: Marquette Sawyer Regional" +MSN,9E,Endeavor Air Inc.,8,"Madison, WI: Dane County Regional-Truax Field" +MSP,9E,Endeavor Air Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MYR,9E,Endeavor Air Inc.,8,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,9E,Endeavor Air Inc.,8,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OMA,9E,Endeavor Air Inc.,8,"Omaha, NE: Eppley Airfield" +ORF,9E,Endeavor Air Inc.,8,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,8,"Worcester, MA: Worcester Regional" +PIT,9E,Endeavor Air Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,8,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,8,"Portland, ME: Portland International Jetport" +RAP,9E,Endeavor Air Inc.,8,"Rapid City, SD: Rapid City Regional" +RDU,9E,Endeavor Air Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,8,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,8,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,9E,Endeavor Air Inc.,8,"Rochester, MN: Rochester International" +SAV,9E,Endeavor Air Inc.,8,"Savannah, GA: Savannah/Hilton Head International" +SDF,9E,Endeavor Air Inc.,8,"Louisville, KY: Louisville Muhammad Ali International" +SHV,9E,Endeavor Air Inc.,8,"Shreveport, LA: Shreveport Regional" +STL,9E,Endeavor Air Inc.,8,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,8,"Syracuse, NY: Syracuse Hancock International" +TLH,9E,Endeavor Air Inc.,8,"Tallahassee, FL: Tallahassee International" +TRI,9E,Endeavor Air Inc.,8,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TVC,9E,Endeavor Air Inc.,8,"Traverse City, MI: Cherry Capital" +TYS,9E,Endeavor Air Inc.,8,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,8,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,8,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,8,"Albuquerque, NM: Albuquerque International Sunport" +ALB,AA,American Airlines Inc.,8,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,8,"Amarillo, TX: Rick Husband Amarillo International" +ANC,AA,American Airlines Inc.,8,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AA,American Airlines Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,8,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,8,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,8,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,8,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,8,"Bakersfield, CA: Meadows Field" +BGR,AA,American Airlines Inc.,8,"Bangor, ME: Bangor International" +BHM,AA,American Airlines Inc.,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,8,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,8,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,8,"Boston, MA: Logan International" +BTV,AA,American Airlines Inc.,8,"Burlington, VT: Burlington International" +BUF,AA,American Airlines Inc.,8,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,8,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,8,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,8,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,8,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,8,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,8,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,8,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,8,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,AA,American Airlines Inc.,8,"Durango, CO: Durango La Plata County" +DSM,AA,American Airlines Inc.,8,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,8,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,8,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,8,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,8,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,8,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,8,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,8,"Fresno, CA: Fresno Yosemite International" +FCA,AA,American Airlines Inc.,8,"Kalispell, MT: Glacier Park International" +FLL,AA,American Airlines Inc.,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,AA,American Airlines Inc.,8,"Sioux Falls, SD: Joe Foss Field" +GEG,AA,American Airlines Inc.,8,"Spokane, WA: Spokane International" +GRR,AA,American Airlines Inc.,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,8,"Greer, SC: Greenville-Spartanburg International" +HNL,AA,American Airlines Inc.,8,"Honolulu, HI: Daniel K Inouye International" +HSV,AA,American Airlines Inc.,8,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,AA,American Airlines Inc.,8,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,8,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,8,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,8,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,8,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,8,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,8,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,8,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,8,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,8,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,8,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,8,"Lubbock, TX: Lubbock Preston Smith International" +LEX,AA,American Airlines Inc.,8,"Lexington, KY: Blue Grass" +LGA,AA,American Airlines Inc.,8,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,8,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,8,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,8,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,8,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,8,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,8,"Mission/McAllen/Edinburg, TX: McAllen International" +MHT,AA,American Airlines Inc.,8,"Manchester, NH: Manchester Boston Regional" +MIA,AA,American Airlines Inc.,8,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,8,"Milwaukee, WI: General Mitchell International" +MRY,AA,American Airlines Inc.,8,"Monterey, CA: Monterey Regional" +MSN,AA,American Airlines Inc.,8,"Madison, WI: Dane County Regional-Truax Field" +MSO,AA,American Airlines Inc.,8,"Missoula, MT: Missoula Montana" +MSP,AA,American Airlines Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,8,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,8,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,8,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,8,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,8,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,8,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,8,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,8,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,8,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,8,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,8,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,8,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,8,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,8,"Portland, ME: Portland International Jetport" +RAP,AA,American Airlines Inc.,8,"Rapid City, SD: Rapid City Regional" +RDU,AA,American Airlines Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,8,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,8,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,8,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,8,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,8,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,8,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,8,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,8,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,8,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,8,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,8,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,8,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,8,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,8,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,8,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,8,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,8,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,8,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,8,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,8,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,8,"Tucson, AZ: Tucson International" +TVC,AA,American Airlines Inc.,8,"Traverse City, MI: Cherry Capital" +TYS,AA,American Airlines Inc.,8,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,8,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,8,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,8,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,8,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,8,"Kodiak, AK: Kodiak Airport" +AKN,AS,Alaska Airlines Inc.,8,"King Salmon, AK: King Salmon Airport" +ANC,AS,Alaska Airlines Inc.,8,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,8,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,8,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,8,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,8,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,8,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,8,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,8,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,8,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,8,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,8,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,8,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,8,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,8,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLG,AS,Alaska Airlines Inc.,8,"Dillingham, AK: Dillingham Airport" +DTW,AS,Alaska Airlines Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,8,"El Paso, TX: El Paso International" +EUG,AS,Alaska Airlines Inc.,8,"Eugene, OR: Mahlon Sweet Field" +EWR,AS,Alaska Airlines Inc.,8,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,8,"Fairbanks, AK: Fairbanks International" +FAT,AS,Alaska Airlines Inc.,8,"Fresno, CA: Fresno Yosemite International" +FLL,AS,Alaska Airlines Inc.,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,8,"Spokane, WA: Spokane International" +GST,AS,Alaska Airlines Inc.,8,"Gustavus, AK: Gustavus Airport" +HNL,AS,Alaska Airlines Inc.,8,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,8,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,8,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,8,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,8,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,8,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,8,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,8,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,8,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,8,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,8,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,8,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,8,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,8,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,8,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,8,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,8,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,8,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,8,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,8,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,8,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,8,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,8,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,8,"Kotzebue, AK: Ralph Wien Memorial" +PDX,AS,Alaska Airlines Inc.,8,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,8,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PSC,AS,Alaska Airlines Inc.,8,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSG,AS,Alaska Airlines Inc.,8,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,8,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,8,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,8,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,8,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,8,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,8,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,8,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,8,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,8,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,8,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,8,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,8,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,8,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,8,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,8,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,8,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,8,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,8,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,8,"Yakutat, AK: Yakutat Airport" +ABQ,B6,JetBlue Airways,8,"Albuquerque, NM: Albuquerque International Sunport" +ACK,B6,JetBlue Airways,8,"Nantucket, MA: Nantucket Memorial" +ALB,B6,JetBlue Airways,8,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,8,"Austin, TX: Austin - Bergstrom International" +AVL,B6,JetBlue Airways,8,"Asheville, NC: Asheville Regional" +BDL,B6,JetBlue Airways,8,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,8,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,8,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,8,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,8,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,8,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,8,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,B6,JetBlue Airways,8,"Bozeman, MT: Bozeman Yellowstone International" +CHS,B6,JetBlue Airways,8,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,8,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,8,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,8,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,8,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,8,"Newark, NJ: Newark Liberty International" +FLL,B6,JetBlue Airways,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HPN,B6,JetBlue Airways,8,"White Plains, NY: Westchester County" +HYA,B6,JetBlue Airways,8,"Hyannis, MA: Cape Cod Gateway" +IAH,B6,JetBlue Airways,8,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,8,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,8,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,8,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,8,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,8,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,8,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,8,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,8,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,8,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,B6,JetBlue Airways,8,"Martha's Vineyard, MA: Martha's Vineyard Airport" +ONT,B6,JetBlue Airways,8,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,8,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,8,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,B6,JetBlue Airways,8,"Portland, OR: Portland International" +PHL,B6,JetBlue Airways,8,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,8,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,8,"Ponce, PR: Mercedita" +PVD,B6,JetBlue Airways,8,"Providence, RI: Rhode Island Tf Green International" +PWM,B6,JetBlue Airways,8,"Portland, ME: Portland International Jetport" +RDU,B6,JetBlue Airways,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,8,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,8,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,8,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,8,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,8,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,8,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,8,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,8,"San Francisco, CA: San Francisco International" +SJC,B6,JetBlue Airways,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,B6,JetBlue Airways,8,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,8,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,8,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,8,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,8,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,8,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,8,"Albuquerque, NM: Albuquerque International Sunport" +ALB,DL,Delta Air Lines Inc.,8,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,8,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,8,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,8,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,8,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,8,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,8,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,8,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,8,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,8,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,8,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,8,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,8,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,8,"Buffalo, NY: Buffalo Niagara International" +BWI,DL,Delta Air Lines Inc.,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,8,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,8,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,8,"Chattanooga, TN: Lovell Field" +CHO,DL,Delta Air Lines Inc.,8,"Charlottesville, VA: Charlottesville Albemarle" +CHS,DL,Delta Air Lines Inc.,8,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,8,"Columbus, OH: John Glenn Columbus International" +COS,DL,Delta Air Lines Inc.,8,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,DL,Delta Air Lines Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,8,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,8,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,8,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,8,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,DL,Delta Air Lines Inc.,8,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,8,"Panama City, FL: Northwest Florida Beaches International" +ELP,DL,Delta Air Lines Inc.,8,"El Paso, TX: El Paso International" +EWR,DL,Delta Air Lines Inc.,8,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,8,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,8,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,8,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,8,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,8,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,8,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,8,"Spokane, WA: Spokane International" +GNV,DL,Delta Air Lines Inc.,8,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,8,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,8,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,8,"Greer, SC: Greenville-Spartanburg International" +HNL,DL,Delta Air Lines Inc.,8,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,8,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,8,"White Plains, NY: Westchester County" +HSV,DL,Delta Air Lines Inc.,8,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,8,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,8,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,8,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,8,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,8,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,8,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,8,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,8,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,8,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,8,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,8,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,8,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,8,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,8,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,8,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,8,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,8,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,8,"Orlando, FL: Orlando International" +MDT,DL,Delta Air Lines Inc.,8,"Harrisburg, PA: Harrisburg International" +MDW,DL,Delta Air Lines Inc.,8,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,8,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,8,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,8,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,8,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,8,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,8,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,8,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,DL,Delta Air Lines Inc.,8,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,8,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,8,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,8,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,8,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,8,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,8,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,8,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,8,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,8,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,8,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,8,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,8,"Pasco/Kennewick/Richland, WA: Tri Cities" +PVD,DL,Delta Air Lines Inc.,8,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,8,"Portland, ME: Portland International Jetport" +RAP,DL,Delta Air Lines Inc.,8,"Rapid City, SD: Rapid City Regional" +RDU,DL,Delta Air Lines Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,8,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,8,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,8,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,8,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,8,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,8,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,8,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,8,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,8,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,8,"San Francisco, CA: San Francisco International" +SGF,DL,Delta Air Lines Inc.,8,"Springfield, MO: Springfield-Branson National" +SJC,DL,Delta Air Lines Inc.,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,8,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,8,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,8,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,8,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,8,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,8,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,8,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,8,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,8,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,8,"Tampa, FL: Tampa International" +TUL,DL,Delta Air Lines Inc.,8,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,8,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,8,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,8,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,8,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,8,"Fayetteville, AR: Northwest Arkansas National" +ATL,F9,Frontier Airlines Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,8,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,8,"Hartford, CT: Bradley International" +BMI,F9,Frontier Airlines Inc.,8,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,8,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,8,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,8,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,8,"Buffalo, NY: Buffalo Niagara International" +BWI,F9,Frontier Airlines Inc.,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,F9,Frontier Airlines Inc.,8,"Charleston, SC: Charleston AFB/International" +CID,F9,Frontier Airlines Inc.,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,8,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,8,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,8,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,8,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,8,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,8,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,8,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,8,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,8,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,8,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,8,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,8,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,8,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,8,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,8,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,8,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,8,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,8,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,8,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,8,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,8,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,8,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,8,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,F9,Frontier Airlines Inc.,8,"Myrtle Beach, SC: Myrtle Beach International" +OKC,F9,Frontier Airlines Inc.,8,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,8,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,8,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,8,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,8,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,8,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,8,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,8,"Pensacola, FL: Pensacola International" +PSE,F9,Frontier Airlines Inc.,8,"Ponce, PR: Mercedita" +PWM,F9,Frontier Airlines Inc.,8,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RSW,F9,Frontier Airlines Inc.,8,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,8,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,8,"San Antonio, TX: San Antonio International" +SAV,F9,Frontier Airlines Inc.,8,"Savannah, GA: Savannah/Hilton Head International" +SEA,F9,Frontier Airlines Inc.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,8,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,8,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,8,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,8,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,8,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,8,"St. Louis, MO: St Louis Lambert International" +STT,F9,Frontier Airlines Inc.,8,"Charlotte Amalie, VI: Cyril E King" +SYR,F9,Frontier Airlines Inc.,8,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,8,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,8,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,8,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,8,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,8,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,8,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,8,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,8,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,8,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,8,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,8,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,8,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,8,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,8,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,8,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,8,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,8,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,8,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,8,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,8,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,8,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,8,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,8,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,8,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,8,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,8,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,8,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,8,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,8,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,8,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,8,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,8,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,8,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,8,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,8,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,8,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,8,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,8,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,8,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,8,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,8,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,8,"Grand Junction, CO: Grand Junction Regional" +GPT,G4,Allegiant Air,8,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRI,G4,Allegiant Air,8,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,8,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,8,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,8,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,8,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,8,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,8,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,8,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,8,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,8,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,8,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,8,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,8,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,8,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,8,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,8,"Lexington, KY: Blue Grass" +LIT,G4,Allegiant Air,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,G4,Allegiant Air,8,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,8,"Kansas City, MO: Kansas City International" +MDT,G4,Allegiant Air,8,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,8,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,8,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,8,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,G4,Allegiant Air,8,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,8,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,8,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,8,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,8,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,8,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,8,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,8,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,8,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,8,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,8,"Norfolk, VA: Norfolk International" +PBG,G4,Allegiant Air,8,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,8,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,8,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,8,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,8,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,8,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,8,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,8,"Portsmouth, NH: Portsmouth International at Pease" +PVD,G4,Allegiant Air,8,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,8,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,8,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,8,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,8,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,8,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,8,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,8,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,8,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,8,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,8,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,8,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,8,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,8,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,8,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,8,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,8,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,8,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,8,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +SWF,G4,Allegiant Air,8,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,8,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,8,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,8,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,8,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,8,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,8,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,8,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,8,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,8,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,8,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,8,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,8,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,8,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,8,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,8,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,8,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,8,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,8,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,8,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,8,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,8,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,8,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,8,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,8,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,8,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,8,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,8,"Sacramento, CA: Sacramento International" +ABI,MQ,Envoy Air,8,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,8,"Albuquerque, NM: Albuquerque International Sunport" +ACK,MQ,Envoy Air,8,"Nantucket, MA: Nantucket Memorial" +AGS,MQ,Envoy Air,8,"Augusta, GA: Augusta Regional at Bush Field" +AMA,MQ,Envoy Air,8,"Amarillo, TX: Rick Husband Amarillo International" +ATL,MQ,Envoy Air,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,MQ,Envoy Air,8,"Austin, TX: Austin - Bergstrom International" +AVL,MQ,Envoy Air,8,"Asheville, NC: Asheville Regional" +AVP,MQ,Envoy Air,8,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,MQ,Envoy Air,8,"Hartford, CT: Bradley International" +BFL,MQ,Envoy Air,8,"Bakersfield, CA: Meadows Field" +BGR,MQ,Envoy Air,8,"Bangor, ME: Bangor International" +BHM,MQ,Envoy Air,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,8,"Billings, MT: Billings Logan International" +BIS,MQ,Envoy Air,8,"Bismarck/Mandan, ND: Bismarck Municipal" +BMI,MQ,Envoy Air,8,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,8,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,8,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,8,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,8,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,MQ,Envoy Air,8,"Buffalo, NY: Buffalo Niagara International" +BUR,MQ,Envoy Air,8,"Burbank, CA: Bob Hope" +BWI,MQ,Envoy Air,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,MQ,Envoy Air,8,"Columbia, SC: Columbia Metropolitan" +CHA,MQ,Envoy Air,8,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,8,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,8,"Cleveland, OH: Cleveland-Hopkins International" +CLL,MQ,Envoy Air,8,"College Station/Bryan, TX: Easterwood Field" +CLT,MQ,Envoy Air,8,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,8,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,8,"Champaign/Urbana, IL: University of Illinois/Willard" +COS,MQ,Envoy Air,8,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,MQ,Envoy Air,8,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,8,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,MQ,Envoy Air,8,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,8,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,MQ,Envoy Air,8,"Des Moines, IA: Des Moines International" +DTW,MQ,Envoy Air,8,"Detroit, MI: Detroit Metro Wayne County" +ECP,MQ,Envoy Air,8,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,8,"El Paso, TX: El Paso International" +EVV,MQ,Envoy Air,8,"Evansville, IN: Evansville Regional" +EYW,MQ,Envoy Air,8,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,8,"Fargo, ND: Hector International" +FAY,MQ,Envoy Air,8,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FSM,MQ,Envoy Air,8,"Fort Smith, AR: Fort Smith Regional" +FWA,MQ,Envoy Air,8,"Fort Wayne, IN: Fort Wayne International" +GJT,MQ,Envoy Air,8,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,8,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,8,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,8,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,8,"Killeen, TX: Robert Gray AAF" +GRR,MQ,Envoy Air,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,MQ,Envoy Air,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,8,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,8,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,8,"Houston, TX: William P Hobby" +HRL,MQ,Envoy Air,8,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,8,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,MQ,Envoy Air,8,"Washington, DC: Washington Dulles International" +IAH,MQ,Envoy Air,8,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,8,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,MQ,Envoy Air,8,"Wilmington, NC: Wilmington International" +IND,MQ,Envoy Air,8,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,8,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,8,"Jacksonville, FL: Jacksonville International" +LBB,MQ,Envoy Air,8,"Lubbock, TX: Lubbock Preston Smith International" +LEX,MQ,Envoy Air,8,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,8,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,MQ,Envoy Air,8,"Laredo, TX: Laredo International" +MAF,MQ,Envoy Air,8,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,8,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,8,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,8,"Montgomery, AL: Montgomery Regional" +MHT,MQ,Envoy Air,8,"Manchester, NH: Manchester Boston Regional" +MIA,MQ,Envoy Air,8,"Miami, FL: Miami International" +MKE,MQ,Envoy Air,8,"Milwaukee, WI: General Mitchell International" +MLI,MQ,Envoy Air,8,"Moline, IL: Quad Cities International" +MLU,MQ,Envoy Air,8,"Monroe, LA: Monroe Regional" +MOB,MQ,Envoy Air,8,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,8,"Marquette, MI: Marquette Sawyer Regional" +MRY,MQ,Envoy Air,8,"Monterey, CA: Monterey Regional" +MSN,MQ,Envoy Air,8,"Madison, WI: Dane County Regional-Truax Field" +MSO,MQ,Envoy Air,8,"Missoula, MT: Missoula Montana" +MSP,MQ,Envoy Air,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,MQ,Envoy Air,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,MQ,Envoy Air,8,"Martha's Vineyard, MA: Martha's Vineyard Airport" +MYR,MQ,Envoy Air,8,"Myrtle Beach, SC: Myrtle Beach International" +OKC,MQ,Envoy Air,8,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,8,"Omaha, NE: Eppley Airfield" +ONT,MQ,Envoy Air,8,"Ontario, CA: Ontario International" +ORD,MQ,Envoy Air,8,"Chicago, IL: Chicago O'Hare International" +ORF,MQ,Envoy Air,8,"Norfolk, VA: Norfolk International" +PDX,MQ,Envoy Air,8,"Portland, OR: Portland International" +PHX,MQ,Envoy Air,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,8,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,8,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,8,"Pensacola, FL: Pensacola International" +PSP,MQ,Envoy Air,8,"Palm Springs, CA: Palm Springs International" +PVD,MQ,Envoy Air,8,"Providence, RI: Rhode Island Tf Green International" +PWM,MQ,Envoy Air,8,"Portland, ME: Portland International Jetport" +RAP,MQ,Envoy Air,8,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,MQ,Envoy Air,8,"Reno, NV: Reno/Tahoe International" +ROC,MQ,Envoy Air,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAT,MQ,Envoy Air,8,"San Antonio, TX: San Antonio International" +SAV,MQ,Envoy Air,8,"Savannah, GA: Savannah/Hilton Head International" +SBP,MQ,Envoy Air,8,"San Luis Obispo, CA: San Luis County Regional" +SDF,MQ,Envoy Air,8,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,8,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,8,"Shreveport, LA: Shreveport Regional" +SJT,MQ,Envoy Air,8,"San Angelo, TX: San Angelo Regional/Mathis Field" +SJU,MQ,Envoy Air,8,"San Juan, PR: Luis Munoz Marin International" +SMF,MQ,Envoy Air,8,"Sacramento, CA: Sacramento International" +SRQ,MQ,Envoy Air,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,MQ,Envoy Air,8,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,8,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SYR,MQ,Envoy Air,8,"Syracuse, NY: Syracuse Hancock International" +TLH,MQ,Envoy Air,8,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,8,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,8,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,8,"Tulsa, OK: Tulsa International" +TUS,MQ,Envoy Air,8,"Tucson, AZ: Tucson International" +TVC,MQ,Envoy Air,8,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,8,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,8,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,8,"Fayetteville, AR: Northwest Arkansas National" +YUM,MQ,Envoy Air,8,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,NK,Spirit Air Lines,8,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,8,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,8,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,8,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,8,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,8,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,8,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,8,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,8,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,NK,Spirit Air Lines,8,"Charleston, SC: Charleston AFB/International" +CLE,NK,Spirit Air Lines,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,8,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,8,"Columbus, OH: John Glenn Columbus International" +DEN,NK,Spirit Air Lines,8,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,8,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,8,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,8,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,8,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,8,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,8,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,8,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,8,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,8,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,8,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,8,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,8,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,8,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,8,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,8,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,8,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,8,"Chicago, IL: Chicago O'Hare International" +ORF,NK,Spirit Air Lines,8,"Norfolk, VA: Norfolk International" +PBI,NK,Spirit Air Lines,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,8,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,8,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,8,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,8,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,8,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,8,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,8,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,8,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,8,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,8,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,8,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,8,"Seattle, WA: Seattle/Tacoma International" +SJC,NK,Spirit Air Lines,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,NK,Spirit Air Lines,8,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,8,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,8,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,8,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,8,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,8,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,8,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,8,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,8,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,8,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,8,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,8,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,8,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,8,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,8,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,8,"Nashville, TN: Nashville International" +BTR,OH,PSA Airlines Inc.,8,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,8,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,8,"Buffalo, NY: Buffalo Niagara International" +CAE,OH,PSA Airlines Inc.,8,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,8,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,8,"Chattanooga, TN: Lovell Field" +CHO,OH,PSA Airlines Inc.,8,"Charlottesville, VA: Charlottesville Albemarle" +CHS,OH,PSA Airlines Inc.,8,"Charleston, SC: Charleston AFB/International" +CID,OH,PSA Airlines Inc.,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,OH,PSA Airlines Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,8,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,8,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,8,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,8,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DFW,OH,PSA Airlines Inc.,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,OH,PSA Airlines Inc.,8,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,8,"Panama City, FL: Northwest Florida Beaches International" +EWN,OH,PSA Airlines Inc.,8,"New Bern/Morehead/Beaufort, NC: Coastal Carolina Regional" +FAY,OH,PSA Airlines Inc.,8,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GNV,OH,PSA Airlines Inc.,8,"Gainesville, FL: Gainesville Regional" +GPT,OH,PSA Airlines Inc.,8,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,8,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,8,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,8,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,OH,PSA Airlines Inc.,8,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,8,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,8,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,8,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,8,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,8,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,8,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,8,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,8,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,8,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,8,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,8,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,8,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,8,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,8,"Melbourne, FL: Melbourne Orlando International" +MSN,OH,PSA Airlines Inc.,8,"Madison, WI: Dane County Regional-Truax Field" +MSP,OH,PSA Airlines Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,8,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,OH,PSA Airlines Inc.,8,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OKC,OH,PSA Airlines Inc.,8,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,8,"Norfolk, VA: Norfolk International" +PHL,OH,PSA Airlines Inc.,8,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,8,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,8,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,8,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,8,"Portland, ME: Portland International Jetport" +RAP,OH,PSA Airlines Inc.,8,"Rapid City, SD: Rapid City Regional" +RDU,OH,PSA Airlines Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,OH,PSA Airlines Inc.,8,"Richmond, VA: Richmond International" +ROA,OH,PSA Airlines Inc.,8,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OH,PSA Airlines Inc.,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,OH,PSA Airlines Inc.,8,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,8,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,8,"Louisville, KY: Louisville Muhammad Ali International" +SGF,OH,PSA Airlines Inc.,8,"Springfield, MO: Springfield-Branson National" +SHV,OH,PSA Airlines Inc.,8,"Shreveport, LA: Shreveport Regional" +SRQ,OH,PSA Airlines Inc.,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OH,PSA Airlines Inc.,8,"St. Louis, MO: St Louis Lambert International" +SYR,OH,PSA Airlines Inc.,8,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,8,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,8,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,8,"Tulsa, OK: Tulsa International" +TVC,OH,PSA Airlines Inc.,8,"Traverse City, MI: Cherry Capital" +TYS,OH,PSA Airlines Inc.,8,"Knoxville, TN: McGhee Tyson" +VPS,OH,PSA Airlines Inc.,8,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,OH,PSA Airlines Inc.,8,"Fayetteville, AR: Northwest Arkansas National" +ABE,OO,SkyWest Airlines Inc.,8,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,8,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,8,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,8,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,8,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,8,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,8,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,8,"Albany, NY: Albany International" +ALW,OO,SkyWest Airlines Inc.,8,"Walla Walla, WA: Walla Walla Regional" +AMA,OO,SkyWest Airlines Inc.,8,"Amarillo, TX: Rick Husband Amarillo International" +APN,OO,SkyWest Airlines Inc.,8,"Alpena, MI: Alpena County Regional" +ASE,OO,SkyWest Airlines Inc.,8,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,8,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,8,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,8,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,8,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OO,SkyWest Airlines Inc.,8,"Hartford, CT: Bradley International" +BFF,OO,SkyWest Airlines Inc.,8,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,8,"Bakersfield, CA: Meadows Field" +BGR,OO,SkyWest Airlines Inc.,8,"Bangor, ME: Bangor International" +BHM,OO,SkyWest Airlines Inc.,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIH,OO,SkyWest Airlines Inc.,8,"Bishop, CA: Bishop Airport" +BIL,OO,SkyWest Airlines Inc.,8,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,8,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,8,"Bemidji, MN: Bemidji Regional" +BLI,OO,SkyWest Airlines Inc.,8,"Bellingham, WA: Bellingham International" +BMI,OO,SkyWest Airlines Inc.,8,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,8,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,8,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,8,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,8,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,8,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,8,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,8,"Butte, MT: Bert Mooney" +BTR,OO,SkyWest Airlines Inc.,8,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,OO,SkyWest Airlines Inc.,8,"Buffalo, NY: Buffalo Niagara International" +BUR,OO,SkyWest Airlines Inc.,8,"Burbank, CA: Bob Hope" +BZN,OO,SkyWest Airlines Inc.,8,"Bozeman, MT: Bozeman Yellowstone International" +CAE,OO,SkyWest Airlines Inc.,8,"Columbia, SC: Columbia Metropolitan" +CAK,OO,SkyWest Airlines Inc.,8,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,8,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,8,"Chattanooga, TN: Lovell Field" +CHO,OO,SkyWest Airlines Inc.,8,"Charlottesville, VA: Charlottesville Albemarle" +CHS,OO,SkyWest Airlines Inc.,8,"Charleston, SC: Charleston AFB/International" +CID,OO,SkyWest Airlines Inc.,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,8,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,8,"College Station/Bryan, TX: Easterwood Field" +CLT,OO,SkyWest Airlines Inc.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,OO,SkyWest Airlines Inc.,8,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,8,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,8,"Moab, UT: Canyonlands Regional" +COS,OO,SkyWest Airlines Inc.,8,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,OO,SkyWest Airlines Inc.,8,"Columbia, MO: Columbia Regional" +CPR,OO,SkyWest Airlines Inc.,8,"Casper, WY: Casper/Natrona County International" +CRW,OO,SkyWest Airlines Inc.,8,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OO,SkyWest Airlines Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,OO,SkyWest Airlines Inc.,8,"Dayton, OH: James M Cox/Dayton International" +DCA,OO,SkyWest Airlines Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,8,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,8,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,8,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,8,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,8,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,8,"Durango, CO: Durango La Plata County" +DSM,OO,SkyWest Airlines Inc.,8,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,8,"Devils Lake, ND: Devils Lake Regional" +ECP,OO,SkyWest Airlines Inc.,8,"Panama City, FL: Northwest Florida Beaches International" +EGE,OO,SkyWest Airlines Inc.,8,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,8,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,8,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,8,"El Paso, TX: El Paso International" +ESC,OO,SkyWest Airlines Inc.,8,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,8,"Eugene, OR: Mahlon Sweet Field" +EVV,OO,SkyWest Airlines Inc.,8,"Evansville, IN: Evansville Regional" +EWR,OO,SkyWest Airlines Inc.,8,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,8,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,8,"Fresno, CA: Fresno Yosemite International" +FAY,OO,SkyWest Airlines Inc.,8,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,OO,SkyWest Airlines Inc.,8,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,8,"Flagstaff, AZ: Flagstaff Pulliam" +FNT,OO,SkyWest Airlines Inc.,8,"Flint, MI: Bishop International" +FOD,OO,SkyWest Airlines Inc.,8,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,8,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,8,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,8,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,8,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,8,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,8,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,8,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,8,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,8,"Grand Junction, CO: Grand Junction Regional" +GNV,OO,SkyWest Airlines Inc.,8,"Gainesville, FL: Gainesville Regional" +GPT,OO,SkyWest Airlines Inc.,8,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,OO,SkyWest Airlines Inc.,8,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,8,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,8,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OO,SkyWest Airlines Inc.,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OO,SkyWest Airlines Inc.,8,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,8,"Great Falls, MT: Great Falls International" +GTR,OO,SkyWest Airlines Inc.,8,"Columbus, MS: Golden Triangle Regional" +GUC,OO,SkyWest Airlines Inc.,8,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,8,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,8,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,8,"Helena, MT: Helena Regional" +HOU,OO,SkyWest Airlines Inc.,8,"Houston, TX: William P Hobby" +HPN,OO,SkyWest Airlines Inc.,8,"White Plains, NY: Westchester County" +HRL,OO,SkyWest Airlines Inc.,8,"Harlingen/San Benito, TX: Valley International" +HSV,OO,SkyWest Airlines Inc.,8,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,8,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,8,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,8,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,8,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,8,"Idaho Falls, ID: Idaho Falls Regional" +IMT,OO,SkyWest Airlines Inc.,8,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,8,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,8,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,8,"Jackson, WY: Jackson Hole" +JAN,OO,SkyWest Airlines Inc.,8,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JFK,OO,SkyWest Airlines Inc.,8,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,8,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,8,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,8,"Johnstown, PA: John Murtha Johnstown-Cambria County" +KTN,OO,SkyWest Airlines Inc.,8,"Ketchikan, AK: Ketchikan International" +LAR,OO,SkyWest Airlines Inc.,8,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,8,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,8,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,8,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,8,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,8,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,8,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,8,"Lake Charles, LA: Lake Charles Regional" +LEX,OO,SkyWest Airlines Inc.,8,"Lexington, KY: Blue Grass" +LFT,OO,SkyWest Airlines Inc.,8,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,8,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,8,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,8,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,8,"Laredo, TX: Laredo International" +LWS,OO,SkyWest Airlines Inc.,8,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,8,"Midland/Odessa, TX: Midland International Air and Space Port" +MBS,OO,SkyWest Airlines Inc.,8,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,OO,SkyWest Airlines Inc.,8,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,8,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,8,"Harrisburg, PA: Harrisburg International" +MDW,OO,SkyWest Airlines Inc.,8,"Chicago, IL: Chicago Midway International" +MEI,OO,SkyWest Airlines Inc.,8,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,8,"Memphis, TN: Memphis International" +MFE,OO,SkyWest Airlines Inc.,8,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,OO,SkyWest Airlines Inc.,8,"Medford, OR: Rogue Valley International - Medford" +MGM,OO,SkyWest Airlines Inc.,8,"Montgomery, AL: Montgomery Regional" +MHT,OO,SkyWest Airlines Inc.,8,"Manchester, NH: Manchester Boston Regional" +MKE,OO,SkyWest Airlines Inc.,8,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,8,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,8,"Monroe, LA: Monroe Regional" +MOT,OO,SkyWest Airlines Inc.,8,"Minot, ND: Minot International" +MRY,OO,SkyWest Airlines Inc.,8,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,8,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,8,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OO,SkyWest Airlines Inc.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,OO,SkyWest Airlines Inc.,8,"Montrose/Delta, CO: Montrose Regional" +OAK,OO,SkyWest Airlines Inc.,8,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,8,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,8,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,8,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,8,"Chicago, IL: Chicago O'Hare International" +ORF,OO,SkyWest Airlines Inc.,8,"Norfolk, VA: Norfolk International" +OTH,OO,SkyWest Airlines Inc.,8,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PDX,OO,SkyWest Airlines Inc.,8,"Portland, OR: Portland International" +PHX,OO,SkyWest Airlines Inc.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,OO,SkyWest Airlines Inc.,8,"Peoria, IL: General Downing - Peoria International" +PIB,OO,SkyWest Airlines Inc.,8,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,8,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,8,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,8,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,8,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,8,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,8,"Palm Springs, CA: Palm Springs International" +PVD,OO,SkyWest Airlines Inc.,8,"Providence, RI: Rhode Island Tf Green International" +RAP,OO,SkyWest Airlines Inc.,8,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,8,"Redding, CA: Redding Regional" +RDM,OO,SkyWest Airlines Inc.,8,"Bend/Redmond, OR: Roberts Field" +RDU,OO,SkyWest Airlines Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RHI,OO,SkyWest Airlines Inc.,8,"Rhinelander, WI: Rhinelander/Oneida County" +RIC,OO,SkyWest Airlines Inc.,8,"Richmond, VA: Richmond International" +RIW,OO,SkyWest Airlines Inc.,8,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,8,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,8,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,8,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OO,SkyWest Airlines Inc.,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +ROW,OO,SkyWest Airlines Inc.,8,"Roswell, NM: Roswell Air Center" +SAF,OO,SkyWest Airlines Inc.,8,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,8,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,8,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,8,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,8,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,8,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,8,"San Luis Obispo, CA: San Luis County Regional" +SCE,OO,SkyWest Airlines Inc.,8,"State College, PA: University Park" +SDF,OO,SkyWest Airlines Inc.,8,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,8,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,8,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,8,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,8,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,8,"Shreveport, LA: Shreveport Regional" +SIT,OO,SkyWest Airlines Inc.,8,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,OO,SkyWest Airlines Inc.,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,8,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,8,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,8,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,8,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,8,"Santa Ana, CA: John Wayne Airport-Orange County" +SPS,OO,SkyWest Airlines Inc.,8,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +STL,OO,SkyWest Airlines Inc.,8,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,8,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,8,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,8,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,8,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,8,"Syracuse, NY: Syracuse Hancock International" +TLH,OO,SkyWest Airlines Inc.,8,"Tallahassee, FL: Tallahassee International" +TRI,OO,SkyWest Airlines Inc.,8,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OO,SkyWest Airlines Inc.,8,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,8,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,8,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,8,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,8,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,8,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,8,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,8,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,8,"Vernal, UT: Vernal Regional" +WYS,OO,SkyWest Airlines Inc.,8,"West Yellowstone, MT: Yellowstone" +XNA,OO,SkyWest Airlines Inc.,8,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,8,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,8,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,8,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,8,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,8,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,8,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,8,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,8,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,8,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,8,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,8,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,8,"Aguadilla, PR: Rafael Hernandez" +BTV,UA,United Air Lines Inc.,8,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,8,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,8,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,8,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,8,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,8,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,8,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,8,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,8,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,8,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,UA,United Air Lines Inc.,8,"Durango, CO: Durango La Plata County" +DSM,UA,United Air Lines Inc.,8,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,8,"Detroit, MI: Detroit Metro Wayne County" +ELP,UA,United Air Lines Inc.,8,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,8,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,8,"Newark, NJ: Newark Liberty International" +FAI,UA,United Air Lines Inc.,8,"Fairbanks, AK: Fairbanks International" +FAT,UA,United Air Lines Inc.,8,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,8,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,8,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,8,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,8,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,8,"Grand Rapids, MI: Gerald R. Ford International" +GSP,UA,United Air Lines Inc.,8,"Greer, SC: Greenville-Spartanburg International" +GTF,UA,United Air Lines Inc.,8,"Great Falls, MT: Great Falls International" +GUM,UA,United Air Lines Inc.,8,"Guam, TT: Guam International" +HNL,UA,United Air Lines Inc.,8,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,8,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,8,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,8,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,8,"Indianapolis, IN: Indianapolis International" +JAC,UA,United Air Lines Inc.,8,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,8,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,8,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,8,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,8,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,8,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,8,"Lihue, HI: Lihue Airport" +MAF,UA,United Air Lines Inc.,8,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,UA,United Air Lines Inc.,8,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,8,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,8,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,8,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,8,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,UA,United Air Lines Inc.,8,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,8,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,8,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,8,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,8,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,UA,United Air Lines Inc.,8,"Myrtle Beach, SC: Myrtle Beach International" +OGG,UA,United Air Lines Inc.,8,"Kahului, HI: Kahului Airport" +OKC,UA,United Air Lines Inc.,8,"Oklahoma City, OK: Will Rogers World" +OMA,UA,United Air Lines Inc.,8,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,8,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,8,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,8,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,8,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,8,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,8,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,8,"Pensacola, FL: Pensacola International" +PVD,UA,United Air Lines Inc.,8,"Providence, RI: Rhode Island Tf Green International" +PWM,UA,United Air Lines Inc.,8,"Portland, ME: Portland International Jetport" +RAP,UA,United Air Lines Inc.,8,"Rapid City, SD: Rapid City Regional" +RDM,UA,United Air Lines Inc.,8,"Bend/Redmond, OR: Roberts Field" +RDU,UA,United Air Lines Inc.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,8,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,8,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,8,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,8,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,8,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,8,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,8,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,8,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,8,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,8,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,8,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,8,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,8,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,8,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,8,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,8,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,8,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,8,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,8,"Tulsa, OK: Tulsa International" +TVC,UA,United Air Lines Inc.,8,"Traverse City, MI: Cherry Capital" +ABQ,WN,Southwest Airlines Co.,8,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,8,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,8,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,8,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,8,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,8,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,8,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,8,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,8,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,8,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,8,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,8,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,8,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,8,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,8,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,8,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,8,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,8,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,8,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,8,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,8,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,8,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,8,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,8,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,8,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,8,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,8,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,8,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,8,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,8,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,8,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,8,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,8,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,8,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,8,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,8,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,8,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,8,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,8,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,8,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,8,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,8,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,8,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,8,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,8,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,8,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,8,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,8,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,8,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,8,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,8,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,8,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,8,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,8,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,8,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,8,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,8,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,8,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,8,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,8,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,8,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,8,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,8,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,8,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,8,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,8,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,8,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,8,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,8,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,8,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,8,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,8,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,8,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,8,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,8,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,8,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,8,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,8,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,8,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,8,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,8,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,8,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,8,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,8,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,8,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,8,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,8,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,8,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,8,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,8,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,8,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,8,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,8,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,8,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,8,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,8,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,8,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ABE,YX,Republic Airline,8,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ACK,YX,Republic Airline,8,"Nantucket, MA: Nantucket Memorial" +AGS,YX,Republic Airline,8,"Augusta, GA: Augusta Regional at Bush Field" +ALB,YX,Republic Airline,8,"Albany, NY: Albany International" +ATL,YX,Republic Airline,8,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,8,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,8,"Asheville, NC: Asheville Regional" +BDL,YX,Republic Airline,8,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,8,"Bangor, ME: Bangor International" +BHM,YX,Republic Airline,8,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,YX,Republic Airline,8,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,8,"Boston, MA: Logan International" +BTR,YX,Republic Airline,8,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,YX,Republic Airline,8,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,8,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,8,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,YX,Republic Airline,8,"Columbia, SC: Columbia Metropolitan" +CAK,YX,Republic Airline,8,"Akron, OH: Akron-Canton Regional" +CHA,YX,Republic Airline,8,"Chattanooga, TN: Lovell Field" +CHO,YX,Republic Airline,8,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,8,"Charleston, SC: Charleston AFB/International" +CID,YX,Republic Airline,8,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,YX,Republic Airline,8,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,8,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,8,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,8,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,8,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,8,"Washington, DC: Ronald Reagan Washington National" +DLH,YX,Republic Airline,8,"Duluth, MN: Duluth International" +DSM,YX,Republic Airline,8,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,8,"Detroit, MI: Detroit Metro Wayne County" +ECP,YX,Republic Airline,8,"Panama City, FL: Northwest Florida Beaches International" +EWR,YX,Republic Airline,8,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,8,"Key West, FL: Key West International" +GRR,YX,Republic Airline,8,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,8,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,8,"Greer, SC: Greenville-Spartanburg International" +HHH,YX,Republic Airline,8,"Hilton Head, SC: Hilton Head Airport" +HPN,YX,Republic Airline,8,"White Plains, NY: Westchester County" +HSV,YX,Republic Airline,8,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,YX,Republic Airline,8,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,8,"Houston, TX: George Bush Intercontinental/Houston" +ILM,YX,Republic Airline,8,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,8,"Indianapolis, IN: Indianapolis International" +JAX,YX,Republic Airline,8,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,8,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,8,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,8,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,8,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,8,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,8,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,8,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,8,"Manchester, NH: Manchester Boston Regional" +MIA,YX,Republic Airline,8,"Miami, FL: Miami International" +MKE,YX,Republic Airline,8,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,8,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,8,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,YX,Republic Airline,8,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,YX,Republic Airline,8,"Martha's Vineyard, MA: Martha's Vineyard Airport" +MYR,YX,Republic Airline,8,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,8,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,8,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,8,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,8,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,8,"Worcester, MA: Worcester Regional" +PHL,YX,Republic Airline,8,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,8,"Pittsburgh, PA: Pittsburgh International" +PNS,YX,Republic Airline,8,"Pensacola, FL: Pensacola International" +PVD,YX,Republic Airline,8,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,8,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,8,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,8,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,8,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,8,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,YX,Republic Airline,8,"Savannah, GA: Savannah/Hilton Head International" +SDF,YX,Republic Airline,8,"Louisville, KY: Louisville Muhammad Ali International" +STL,YX,Republic Airline,8,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,8,"Syracuse, NY: Syracuse Hancock International" +TPA,YX,Republic Airline,8,"Tampa, FL: Tampa International" +TUL,YX,Republic Airline,8,"Tulsa, OK: Tulsa International" +TVC,YX,Republic Airline,8,"Traverse City, MI: Cherry Capital" +TYS,YX,Republic Airline,8,"Knoxville, TN: McGhee Tyson" +XNA,YX,Republic Airline,8,"Fayetteville, AR: Northwest Arkansas National" +ABE,9E,Endeavor Air Inc.,7,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABY,9E,Endeavor Air Inc.,7,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,7,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,7,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,7,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,9E,Endeavor Air Inc.,7,"Appleton, WI: Appleton International" +AUS,9E,Endeavor Air Inc.,7,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,7,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,7,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,7,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,7,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,7,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,9E,Endeavor Air Inc.,7,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,7,"Brunswick, GA: Brunswick Golden Isles" +BTV,9E,Endeavor Air Inc.,7,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,7,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,7,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,7,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,7,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,7,"Charleston, SC: Charleston AFB/International" +CLE,9E,Endeavor Air Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,7,"Columbus, OH: John Glenn Columbus International" +CRW,9E,Endeavor Air Inc.,7,"Charleston/Dunbar, WV: West Virginia International Yeager" +CSG,9E,Endeavor Air Inc.,7,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,7,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,7,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DHN,9E,Endeavor Air Inc.,7,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,7,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,7,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,7,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,7,"Newark, NJ: Newark Liberty International" +FAR,9E,Endeavor Air Inc.,7,"Fargo, ND: Hector International" +FAY,9E,Endeavor Air Inc.,7,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FSD,9E,Endeavor Air Inc.,7,"Sioux Falls, SD: Joe Foss Field" +GFK,9E,Endeavor Air Inc.,7,"Grand Forks, ND: Grand Forks International" +GRB,9E,Endeavor Air Inc.,7,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,9E,Endeavor Air Inc.,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,7,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,7,"Columbus, MS: Golden Triangle Regional" +HSV,9E,Endeavor Air Inc.,7,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,9E,Endeavor Air Inc.,7,"Washington, DC: Washington Dulles International" +ILM,9E,Endeavor Air Inc.,7,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,7,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,7,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,9E,Endeavor Air Inc.,7,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,7,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,7,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,7,"Lexington, KY: Blue Grass" +LGA,9E,Endeavor Air Inc.,7,"New York, NY: LaGuardia" +LIT,9E,Endeavor Air Inc.,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MBS,9E,Endeavor Air Inc.,7,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,7,"Kansas City, MO: Kansas City International" +MDT,9E,Endeavor Air Inc.,7,"Harrisburg, PA: Harrisburg International" +MEM,9E,Endeavor Air Inc.,7,"Memphis, TN: Memphis International" +MGM,9E,Endeavor Air Inc.,7,"Montgomery, AL: Montgomery Regional" +MKE,9E,Endeavor Air Inc.,7,"Milwaukee, WI: General Mitchell International" +MLI,9E,Endeavor Air Inc.,7,"Moline, IL: Quad Cities International" +MLU,9E,Endeavor Air Inc.,7,"Monroe, LA: Monroe Regional" +MOB,9E,Endeavor Air Inc.,7,"Mobile, AL: Mobile Regional" +MQT,9E,Endeavor Air Inc.,7,"Marquette, MI: Marquette Sawyer Regional" +MSN,9E,Endeavor Air Inc.,7,"Madison, WI: Dane County Regional-Truax Field" +MSP,9E,Endeavor Air Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MYR,9E,Endeavor Air Inc.,7,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,9E,Endeavor Air Inc.,7,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OMA,9E,Endeavor Air Inc.,7,"Omaha, NE: Eppley Airfield" +ORF,9E,Endeavor Air Inc.,7,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,7,"Worcester, MA: Worcester Regional" +PIT,9E,Endeavor Air Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,7,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,7,"Portland, ME: Portland International Jetport" +RAP,9E,Endeavor Air Inc.,7,"Rapid City, SD: Rapid City Regional" +RDU,9E,Endeavor Air Inc.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,7,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,7,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,9E,Endeavor Air Inc.,7,"Rochester, MN: Rochester International" +SAV,9E,Endeavor Air Inc.,7,"Savannah, GA: Savannah/Hilton Head International" +SDF,9E,Endeavor Air Inc.,7,"Louisville, KY: Louisville Muhammad Ali International" +SHV,9E,Endeavor Air Inc.,7,"Shreveport, LA: Shreveport Regional" +STL,9E,Endeavor Air Inc.,7,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,7,"Syracuse, NY: Syracuse Hancock International" +TRI,9E,Endeavor Air Inc.,7,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TVC,9E,Endeavor Air Inc.,7,"Traverse City, MI: Cherry Capital" +TYS,9E,Endeavor Air Inc.,7,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,7,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,7,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,7,"Albuquerque, NM: Albuquerque International Sunport" +ALB,AA,American Airlines Inc.,7,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,7,"Amarillo, TX: Rick Husband Amarillo International" +ANC,AA,American Airlines Inc.,7,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AA,American Airlines Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,7,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,7,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,7,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,7,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,7,"Bakersfield, CA: Meadows Field" +BGR,AA,American Airlines Inc.,7,"Bangor, ME: Bangor International" +BHM,AA,American Airlines Inc.,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,7,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,7,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,7,"Boston, MA: Logan International" +BTV,AA,American Airlines Inc.,7,"Burlington, VT: Burlington International" +BUF,AA,American Airlines Inc.,7,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,7,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,7,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,7,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,7,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,7,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,7,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,7,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,7,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,AA,American Airlines Inc.,7,"Durango, CO: Durango La Plata County" +DSM,AA,American Airlines Inc.,7,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,7,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,7,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,7,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,7,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,7,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,7,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,7,"Fresno, CA: Fresno Yosemite International" +FCA,AA,American Airlines Inc.,7,"Kalispell, MT: Glacier Park International" +FLL,AA,American Airlines Inc.,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,AA,American Airlines Inc.,7,"Sioux Falls, SD: Joe Foss Field" +GEG,AA,American Airlines Inc.,7,"Spokane, WA: Spokane International" +GRR,AA,American Airlines Inc.,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,7,"Greer, SC: Greenville-Spartanburg International" +HNL,AA,American Airlines Inc.,7,"Honolulu, HI: Daniel K Inouye International" +HSV,AA,American Airlines Inc.,7,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,AA,American Airlines Inc.,7,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,7,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,7,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,7,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,7,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,7,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,7,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,7,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,7,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,7,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,7,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,7,"Lubbock, TX: Lubbock Preston Smith International" +LEX,AA,American Airlines Inc.,7,"Lexington, KY: Blue Grass" +LGA,AA,American Airlines Inc.,7,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,7,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,7,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,7,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,7,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,7,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,7,"Mission/McAllen/Edinburg, TX: McAllen International" +MIA,AA,American Airlines Inc.,7,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,7,"Milwaukee, WI: General Mitchell International" +MRY,AA,American Airlines Inc.,7,"Monterey, CA: Monterey Regional" +MSN,AA,American Airlines Inc.,7,"Madison, WI: Dane County Regional-Truax Field" +MSO,AA,American Airlines Inc.,7,"Missoula, MT: Missoula Montana" +MSP,AA,American Airlines Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,7,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,7,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,7,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,7,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,7,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,7,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,7,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,7,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,7,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,7,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,7,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,7,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,7,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,7,"Portland, ME: Portland International Jetport" +RAP,AA,American Airlines Inc.,7,"Rapid City, SD: Rapid City Regional" +RDU,AA,American Airlines Inc.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,7,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,7,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,7,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,7,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,7,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,7,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,7,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,7,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,7,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,7,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,7,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,7,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,7,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,7,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,7,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,7,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,7,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,7,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,7,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,7,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,7,"Tucson, AZ: Tucson International" +TVC,AA,American Airlines Inc.,7,"Traverse City, MI: Cherry Capital" +TYS,AA,American Airlines Inc.,7,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,7,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,7,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,7,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,7,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,7,"Kodiak, AK: Kodiak Airport" +AKN,AS,Alaska Airlines Inc.,7,"King Salmon, AK: King Salmon Airport" +ANC,AS,Alaska Airlines Inc.,7,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,7,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,7,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,7,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,7,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,7,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,7,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,7,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,7,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,7,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,7,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,7,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,7,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,7,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLG,AS,Alaska Airlines Inc.,7,"Dillingham, AK: Dillingham Airport" +DTW,AS,Alaska Airlines Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,7,"El Paso, TX: El Paso International" +EUG,AS,Alaska Airlines Inc.,7,"Eugene, OR: Mahlon Sweet Field" +EWR,AS,Alaska Airlines Inc.,7,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,7,"Fairbanks, AK: Fairbanks International" +FAT,AS,Alaska Airlines Inc.,7,"Fresno, CA: Fresno Yosemite International" +FLL,AS,Alaska Airlines Inc.,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,7,"Spokane, WA: Spokane International" +GST,AS,Alaska Airlines Inc.,7,"Gustavus, AK: Gustavus Airport" +HNL,AS,Alaska Airlines Inc.,7,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,7,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,7,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,7,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,7,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,7,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,7,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,7,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,7,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,7,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,7,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,7,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,7,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,7,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,7,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,7,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,7,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,7,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,7,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,7,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,7,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,7,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,7,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,7,"Kotzebue, AK: Ralph Wien Memorial" +PDX,AS,Alaska Airlines Inc.,7,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,7,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PSC,AS,Alaska Airlines Inc.,7,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSG,AS,Alaska Airlines Inc.,7,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,7,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,7,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,7,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,7,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,7,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,7,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,7,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,7,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,7,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,7,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,7,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,7,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,7,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,7,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,7,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,7,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,7,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,7,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,7,"Yakutat, AK: Yakutat Airport" +ABQ,B6,JetBlue Airways,7,"Albuquerque, NM: Albuquerque International Sunport" +ACK,B6,JetBlue Airways,7,"Nantucket, MA: Nantucket Memorial" +ALB,B6,JetBlue Airways,7,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,7,"Austin, TX: Austin - Bergstrom International" +AVL,B6,JetBlue Airways,7,"Asheville, NC: Asheville Regional" +BDL,B6,JetBlue Airways,7,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,7,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,7,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,7,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,7,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,7,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,7,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,B6,JetBlue Airways,7,"Bozeman, MT: Bozeman Yellowstone International" +CHS,B6,JetBlue Airways,7,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,7,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,7,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,7,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,7,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,7,"Newark, NJ: Newark Liberty International" +FLL,B6,JetBlue Airways,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HPN,B6,JetBlue Airways,7,"White Plains, NY: Westchester County" +HYA,B6,JetBlue Airways,7,"Hyannis, MA: Cape Cod Gateway" +IAH,B6,JetBlue Airways,7,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,7,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,7,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,7,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,7,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,7,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,7,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,7,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,7,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,7,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,B6,JetBlue Airways,7,"Martha's Vineyard, MA: Martha's Vineyard Airport" +ONT,B6,JetBlue Airways,7,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,7,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,7,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,B6,JetBlue Airways,7,"Portland, OR: Portland International" +PHL,B6,JetBlue Airways,7,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,7,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,7,"Ponce, PR: Mercedita" +PVD,B6,JetBlue Airways,7,"Providence, RI: Rhode Island Tf Green International" +PWM,B6,JetBlue Airways,7,"Portland, ME: Portland International Jetport" +RDU,B6,JetBlue Airways,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,7,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,7,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,7,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,7,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,7,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,7,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,7,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,7,"San Francisco, CA: San Francisco International" +SJC,B6,JetBlue Airways,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,B6,JetBlue Airways,7,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,7,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,7,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,7,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,7,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,7,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,7,"Albuquerque, NM: Albuquerque International Sunport" +ALB,DL,Delta Air Lines Inc.,7,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,7,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,7,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,7,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,7,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,7,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,7,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,7,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,7,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,7,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,7,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,7,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,7,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,7,"Buffalo, NY: Buffalo Niagara International" +BWI,DL,Delta Air Lines Inc.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,7,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,7,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,7,"Chattanooga, TN: Lovell Field" +CHO,DL,Delta Air Lines Inc.,7,"Charlottesville, VA: Charlottesville Albemarle" +CHS,DL,Delta Air Lines Inc.,7,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,7,"Columbus, OH: John Glenn Columbus International" +COS,DL,Delta Air Lines Inc.,7,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,DL,Delta Air Lines Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,7,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,7,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,7,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,7,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,DL,Delta Air Lines Inc.,7,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,7,"Panama City, FL: Northwest Florida Beaches International" +ELP,DL,Delta Air Lines Inc.,7,"El Paso, TX: El Paso International" +EWR,DL,Delta Air Lines Inc.,7,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,7,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,7,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,7,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,7,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,7,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,7,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,7,"Spokane, WA: Spokane International" +GFK,DL,Delta Air Lines Inc.,7,"Grand Forks, ND: Grand Forks International" +GNV,DL,Delta Air Lines Inc.,7,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,7,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,7,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,7,"Greer, SC: Greenville-Spartanburg International" +HNL,DL,Delta Air Lines Inc.,7,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,7,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,7,"White Plains, NY: Westchester County" +HSV,DL,Delta Air Lines Inc.,7,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,7,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,7,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,7,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,7,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,7,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,7,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,7,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,7,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,7,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,7,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,7,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,7,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,7,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,7,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,7,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,7,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,7,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,7,"Orlando, FL: Orlando International" +MDT,DL,Delta Air Lines Inc.,7,"Harrisburg, PA: Harrisburg International" +MDW,DL,Delta Air Lines Inc.,7,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,7,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,7,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,7,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,7,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,7,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,7,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,7,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,DL,Delta Air Lines Inc.,7,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,7,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,7,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,7,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,7,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,7,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,7,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,7,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,7,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,7,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,7,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,7,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,7,"Pasco/Kennewick/Richland, WA: Tri Cities" +PVD,DL,Delta Air Lines Inc.,7,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,7,"Portland, ME: Portland International Jetport" +RAP,DL,Delta Air Lines Inc.,7,"Rapid City, SD: Rapid City Regional" +RDU,DL,Delta Air Lines Inc.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,7,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,7,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,7,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,7,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,7,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,7,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,7,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,7,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,7,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,7,"San Francisco, CA: San Francisco International" +SGF,DL,Delta Air Lines Inc.,7,"Springfield, MO: Springfield-Branson National" +SJC,DL,Delta Air Lines Inc.,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,7,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,7,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,7,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,7,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,7,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,7,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,7,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,7,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,7,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,7,"Tampa, FL: Tampa International" +TUL,DL,Delta Air Lines Inc.,7,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,7,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,7,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,7,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,7,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,7,"Fayetteville, AR: Northwest Arkansas National" +ATL,F9,Frontier Airlines Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,7,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,7,"Hartford, CT: Bradley International" +BMI,F9,Frontier Airlines Inc.,7,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,7,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,7,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,7,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,7,"Buffalo, NY: Buffalo Niagara International" +BWI,F9,Frontier Airlines Inc.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,F9,Frontier Airlines Inc.,7,"Charleston, SC: Charleston AFB/International" +CID,F9,Frontier Airlines Inc.,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,7,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,7,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,7,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,7,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,7,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,7,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,7,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,7,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,7,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,7,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,7,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,7,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,7,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,7,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,7,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,7,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,7,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,7,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,7,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,7,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,7,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,7,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,7,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,F9,Frontier Airlines Inc.,7,"Myrtle Beach, SC: Myrtle Beach International" +OKC,F9,Frontier Airlines Inc.,7,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,7,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,7,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,7,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,7,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,7,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,7,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,7,"Pensacola, FL: Pensacola International" +PSE,F9,Frontier Airlines Inc.,7,"Ponce, PR: Mercedita" +PWM,F9,Frontier Airlines Inc.,7,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RSW,F9,Frontier Airlines Inc.,7,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,7,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,7,"San Antonio, TX: San Antonio International" +SAV,F9,Frontier Airlines Inc.,7,"Savannah, GA: Savannah/Hilton Head International" +SEA,F9,Frontier Airlines Inc.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,7,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,7,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,7,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,7,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,7,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,7,"St. Louis, MO: St Louis Lambert International" +STT,F9,Frontier Airlines Inc.,7,"Charlotte Amalie, VI: Cyril E King" +SWF,F9,Frontier Airlines Inc.,7,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,F9,Frontier Airlines Inc.,7,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,7,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,7,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,7,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,7,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,7,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,7,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,7,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,7,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,7,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,7,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,7,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,7,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,7,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,7,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,7,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,7,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,7,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,7,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,7,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,7,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,7,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,7,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,7,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,7,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,7,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,7,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,7,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,7,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,7,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,7,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,7,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,7,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,7,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,7,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,7,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,7,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,7,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,7,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,7,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,7,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,7,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,7,"Grand Junction, CO: Grand Junction Regional" +GPT,G4,Allegiant Air,7,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRI,G4,Allegiant Air,7,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,7,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,7,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,7,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,7,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,7,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,7,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,7,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,7,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,7,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,7,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,7,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,7,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,7,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,7,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,7,"Lexington, KY: Blue Grass" +LIT,G4,Allegiant Air,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,G4,Allegiant Air,7,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,7,"Kansas City, MO: Kansas City International" +RDU,UA,United Air Lines Inc.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,7,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,7,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,7,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,7,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,7,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,7,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,7,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,7,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,7,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,7,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,7,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,7,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,7,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,7,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,7,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,7,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,7,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,7,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,7,"Tulsa, OK: Tulsa International" +TVC,UA,United Air Lines Inc.,7,"Traverse City, MI: Cherry Capital" +ABQ,WN,Southwest Airlines Co.,7,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,7,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,7,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,7,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,7,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,7,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,7,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,7,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,7,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,7,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,7,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,7,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,7,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,7,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,7,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,7,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,7,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,7,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,7,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,7,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,7,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,7,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,7,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,7,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,7,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,7,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,7,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,7,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,7,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,7,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,7,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,7,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,7,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,7,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,7,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,7,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,7,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,7,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,7,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,7,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,7,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,7,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,7,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,7,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,7,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,7,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,7,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,7,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,7,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,7,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,7,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,7,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,7,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,7,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,7,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,7,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,7,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,7,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,7,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,7,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,7,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,7,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,7,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,7,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,7,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,7,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,7,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,7,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,7,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,7,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,7,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,7,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,7,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,7,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,7,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,7,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,7,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,7,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,7,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,7,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,7,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,7,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,7,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,7,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,7,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,7,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,7,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,7,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,7,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,7,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ACK,YX,Republic Airline,7,"Nantucket, MA: Nantucket Memorial" +ALB,YX,Republic Airline,7,"Albany, NY: Albany International" +ATL,YX,Republic Airline,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,7,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,7,"Asheville, NC: Asheville Regional" +BDL,YX,Republic Airline,7,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,7,"Bangor, ME: Bangor International" +BHM,YX,Republic Airline,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,YX,Republic Airline,7,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,7,"Boston, MA: Logan International" +BTV,YX,Republic Airline,7,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,7,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,YX,Republic Airline,7,"Columbia, SC: Columbia Metropolitan" +CHA,YX,Republic Airline,7,"Chattanooga, TN: Lovell Field" +CHO,YX,Republic Airline,7,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,7,"Charleston, SC: Charleston AFB/International" +CID,YX,Republic Airline,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,YX,Republic Airline,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,7,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,7,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,7,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,7,"Washington, DC: Ronald Reagan Washington National" +DSM,YX,Republic Airline,7,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,7,"Detroit, MI: Detroit Metro Wayne County" +ECP,YX,Republic Airline,7,"Panama City, FL: Northwest Florida Beaches International" +EWR,YX,Republic Airline,7,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,7,"Key West, FL: Key West International" +GRB,YX,Republic Airline,7,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,YX,Republic Airline,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,7,"Greer, SC: Greenville-Spartanburg International" +HHH,YX,Republic Airline,7,"Hilton Head, SC: Hilton Head Airport" +HPN,YX,Republic Airline,7,"White Plains, NY: Westchester County" +IAD,YX,Republic Airline,7,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,7,"Houston, TX: George Bush Intercontinental/Houston" +ILM,YX,Republic Airline,7,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,7,"Indianapolis, IN: Indianapolis International" +JAX,YX,Republic Airline,7,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,7,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,7,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,7,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,7,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,7,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,7,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,7,"Manchester, NH: Manchester Boston Regional" +MIA,YX,Republic Airline,7,"Miami, FL: Miami International" +MKE,YX,Republic Airline,7,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,7,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,7,"Minneapolis, MN: Minneapolis-St Paul International" +MVY,YX,Republic Airline,7,"Martha's Vineyard, MA: Martha's Vineyard Airport" +MYR,YX,Republic Airline,7,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,7,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,7,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,7,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,7,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,7,"Worcester, MA: Worcester Regional" +PHL,YX,Republic Airline,7,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,7,"Pittsburgh, PA: Pittsburgh International" +PNS,YX,Republic Airline,7,"Pensacola, FL: Pensacola International" +PVD,YX,Republic Airline,7,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,7,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,7,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,7,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,YX,Republic Airline,7,"Savannah, GA: Savannah/Hilton Head International" +SDF,YX,Republic Airline,7,"Louisville, KY: Louisville Muhammad Ali International" +STL,YX,Republic Airline,7,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,7,"Syracuse, NY: Syracuse Hancock International" +TPA,YX,Republic Airline,7,"Tampa, FL: Tampa International" +TUL,YX,Republic Airline,7,"Tulsa, OK: Tulsa International" +TVC,YX,Republic Airline,7,"Traverse City, MI: Cherry Capital" +TYS,YX,Republic Airline,7,"Knoxville, TN: McGhee Tyson" +XNA,YX,Republic Airline,7,"Fayetteville, AR: Northwest Arkansas National" +MDT,G4,Allegiant Air,7,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,7,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,7,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,7,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,G4,Allegiant Air,7,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,7,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,7,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,7,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,7,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,7,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,7,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,7,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,7,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,7,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,7,"Norfolk, VA: Norfolk International" +PBG,G4,Allegiant Air,7,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,7,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,7,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,7,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,7,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,7,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,7,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,7,"Portsmouth, NH: Portsmouth International at Pease" +PVD,G4,Allegiant Air,7,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,7,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,7,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,7,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,7,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,7,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,7,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,7,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,7,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,7,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,7,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,7,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,7,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,7,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,7,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,7,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,7,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,7,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,7,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +SWF,G4,Allegiant Air,7,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,7,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,7,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,7,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,7,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,7,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,7,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,7,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,7,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,7,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,7,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,7,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,7,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,7,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,7,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,7,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,7,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,7,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,7,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,7,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,7,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,7,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,7,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,7,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,7,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,7,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,7,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,7,"Sacramento, CA: Sacramento International" +ABI,MQ,Envoy Air,7,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,7,"Albuquerque, NM: Albuquerque International Sunport" +ACK,MQ,Envoy Air,7,"Nantucket, MA: Nantucket Memorial" +AGS,MQ,Envoy Air,7,"Augusta, GA: Augusta Regional at Bush Field" +AMA,MQ,Envoy Air,7,"Amarillo, TX: Rick Husband Amarillo International" +ATL,MQ,Envoy Air,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,MQ,Envoy Air,7,"Austin, TX: Austin - Bergstrom International" +AVL,MQ,Envoy Air,7,"Asheville, NC: Asheville Regional" +AVP,MQ,Envoy Air,7,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BFL,MQ,Envoy Air,7,"Bakersfield, CA: Meadows Field" +BGR,MQ,Envoy Air,7,"Bangor, ME: Bangor International" +BHM,MQ,Envoy Air,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,7,"Billings, MT: Billings Logan International" +BIS,MQ,Envoy Air,7,"Bismarck/Mandan, ND: Bismarck Municipal" +BMI,MQ,Envoy Air,7,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,7,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,7,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,7,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,7,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,MQ,Envoy Air,7,"Burlington, VT: Burlington International" +BUF,MQ,Envoy Air,7,"Buffalo, NY: Buffalo Niagara International" +BUR,MQ,Envoy Air,7,"Burbank, CA: Bob Hope" +BWI,MQ,Envoy Air,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,MQ,Envoy Air,7,"Columbia, SC: Columbia Metropolitan" +CHA,MQ,Envoy Air,7,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,7,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,7,"Cleveland, OH: Cleveland-Hopkins International" +CLL,MQ,Envoy Air,7,"College Station/Bryan, TX: Easterwood Field" +CLT,MQ,Envoy Air,7,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,7,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,7,"Champaign/Urbana, IL: University of Illinois/Willard" +COS,MQ,Envoy Air,7,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,MQ,Envoy Air,7,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,7,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,MQ,Envoy Air,7,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,7,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,MQ,Envoy Air,7,"Des Moines, IA: Des Moines International" +ECP,MQ,Envoy Air,7,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,7,"El Paso, TX: El Paso International" +EVV,MQ,Envoy Air,7,"Evansville, IN: Evansville Regional" +EYW,MQ,Envoy Air,7,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,7,"Fargo, ND: Hector International" +FSM,MQ,Envoy Air,7,"Fort Smith, AR: Fort Smith Regional" +FWA,MQ,Envoy Air,7,"Fort Wayne, IN: Fort Wayne International" +GJT,MQ,Envoy Air,7,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,7,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,7,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,7,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,7,"Killeen, TX: Robert Gray AAF" +GRR,MQ,Envoy Air,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,MQ,Envoy Air,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,7,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,7,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,7,"Houston, TX: William P Hobby" +HRL,MQ,Envoy Air,7,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,7,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,MQ,Envoy Air,7,"Washington, DC: Washington Dulles International" +IAH,MQ,Envoy Air,7,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,7,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,MQ,Envoy Air,7,"Wilmington, NC: Wilmington International" +IND,MQ,Envoy Air,7,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,7,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,7,"Jacksonville, FL: Jacksonville International" +LBB,MQ,Envoy Air,7,"Lubbock, TX: Lubbock Preston Smith International" +LEX,MQ,Envoy Air,7,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,7,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,MQ,Envoy Air,7,"Laredo, TX: Laredo International" +MAF,MQ,Envoy Air,7,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,7,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,7,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,7,"Montgomery, AL: Montgomery Regional" +MHT,MQ,Envoy Air,7,"Manchester, NH: Manchester Boston Regional" +MIA,MQ,Envoy Air,7,"Miami, FL: Miami International" +MKE,MQ,Envoy Air,7,"Milwaukee, WI: General Mitchell International" +MLI,MQ,Envoy Air,7,"Moline, IL: Quad Cities International" +MLU,MQ,Envoy Air,7,"Monroe, LA: Monroe Regional" +MOB,MQ,Envoy Air,7,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,7,"Marquette, MI: Marquette Sawyer Regional" +MRY,MQ,Envoy Air,7,"Monterey, CA: Monterey Regional" +MSO,MQ,Envoy Air,7,"Missoula, MT: Missoula Montana" +MSP,MQ,Envoy Air,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,MQ,Envoy Air,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,MQ,Envoy Air,7,"Martha's Vineyard, MA: Martha's Vineyard Airport" +OKC,MQ,Envoy Air,7,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,7,"Omaha, NE: Eppley Airfield" +ORD,MQ,Envoy Air,7,"Chicago, IL: Chicago O'Hare International" +ORF,MQ,Envoy Air,7,"Norfolk, VA: Norfolk International" +PDX,MQ,Envoy Air,7,"Portland, OR: Portland International" +PHX,MQ,Envoy Air,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,7,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,7,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,7,"Pensacola, FL: Pensacola International" +PSP,MQ,Envoy Air,7,"Palm Springs, CA: Palm Springs International" +PVD,MQ,Envoy Air,7,"Providence, RI: Rhode Island Tf Green International" +PWM,MQ,Envoy Air,7,"Portland, ME: Portland International Jetport" +RAP,MQ,Envoy Air,7,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,MQ,Envoy Air,7,"Reno, NV: Reno/Tahoe International" +SAV,MQ,Envoy Air,7,"Savannah, GA: Savannah/Hilton Head International" +SBP,MQ,Envoy Air,7,"San Luis Obispo, CA: San Luis County Regional" +SDF,MQ,Envoy Air,7,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,7,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,7,"Shreveport, LA: Shreveport Regional" +SJT,MQ,Envoy Air,7,"San Angelo, TX: San Angelo Regional/Mathis Field" +SJU,MQ,Envoy Air,7,"San Juan, PR: Luis Munoz Marin International" +SLC,MQ,Envoy Air,7,"Salt Lake City, UT: Salt Lake City International" +SMF,MQ,Envoy Air,7,"Sacramento, CA: Sacramento International" +SRQ,MQ,Envoy Air,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,MQ,Envoy Air,7,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,7,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SYR,MQ,Envoy Air,7,"Syracuse, NY: Syracuse Hancock International" +TLH,MQ,Envoy Air,7,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,7,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,7,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,7,"Tulsa, OK: Tulsa International" +TUS,MQ,Envoy Air,7,"Tucson, AZ: Tucson International" +TVC,MQ,Envoy Air,7,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,7,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,7,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,7,"Fayetteville, AR: Northwest Arkansas National" +YUM,MQ,Envoy Air,7,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,NK,Spirit Air Lines,7,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,7,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,7,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,7,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,7,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,7,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,7,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,7,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,7,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,NK,Spirit Air Lines,7,"Charleston, SC: Charleston AFB/International" +CLE,NK,Spirit Air Lines,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,7,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,7,"Columbus, OH: John Glenn Columbus International" +DEN,NK,Spirit Air Lines,7,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,7,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,7,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,7,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,7,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,7,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,7,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,7,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,7,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,7,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,7,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,7,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,7,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,7,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,7,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,7,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,7,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,7,"Chicago, IL: Chicago O'Hare International" +ORF,NK,Spirit Air Lines,7,"Norfolk, VA: Norfolk International" +PBI,NK,Spirit Air Lines,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,7,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,7,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,7,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,7,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,7,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,7,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,7,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,7,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,7,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,7,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,7,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,7,"Seattle, WA: Seattle/Tacoma International" +SJC,NK,Spirit Air Lines,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,NK,Spirit Air Lines,7,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,7,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,7,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,7,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,7,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,7,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,7,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,7,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,7,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,7,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,7,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,7,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,7,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,7,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,7,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,7,"Nashville, TN: Nashville International" +BTR,OH,PSA Airlines Inc.,7,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,7,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,7,"Buffalo, NY: Buffalo Niagara International" +CAE,OH,PSA Airlines Inc.,7,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,7,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,7,"Chattanooga, TN: Lovell Field" +CHO,OH,PSA Airlines Inc.,7,"Charlottesville, VA: Charlottesville Albemarle" +CHS,OH,PSA Airlines Inc.,7,"Charleston, SC: Charleston AFB/International" +CID,OH,PSA Airlines Inc.,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,OH,PSA Airlines Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,7,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,7,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,7,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,7,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DFW,OH,PSA Airlines Inc.,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,OH,PSA Airlines Inc.,7,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,7,"Panama City, FL: Northwest Florida Beaches International" +EWN,OH,PSA Airlines Inc.,7,"New Bern/Morehead/Beaufort, NC: Coastal Carolina Regional" +FAY,OH,PSA Airlines Inc.,7,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GPT,OH,PSA Airlines Inc.,7,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,7,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,7,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,7,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,OH,PSA Airlines Inc.,7,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,7,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,7,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,7,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,7,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,7,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,7,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,7,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,7,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,7,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,7,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,7,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,7,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,7,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,7,"Melbourne, FL: Melbourne Orlando International" +MSN,OH,PSA Airlines Inc.,7,"Madison, WI: Dane County Regional-Truax Field" +MSP,OH,PSA Airlines Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,7,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,OH,PSA Airlines Inc.,7,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OKC,OH,PSA Airlines Inc.,7,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,7,"Norfolk, VA: Norfolk International" +PHL,OH,PSA Airlines Inc.,7,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,7,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,7,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,7,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,7,"Portland, ME: Portland International Jetport" +RAP,OH,PSA Airlines Inc.,7,"Rapid City, SD: Rapid City Regional" +RDU,OH,PSA Airlines Inc.,7,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,OH,PSA Airlines Inc.,7,"Richmond, VA: Richmond International" +ROA,OH,PSA Airlines Inc.,7,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OH,PSA Airlines Inc.,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,OH,PSA Airlines Inc.,7,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,7,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,7,"Louisville, KY: Louisville Muhammad Ali International" +SGF,OH,PSA Airlines Inc.,7,"Springfield, MO: Springfield-Branson National" +SHV,OH,PSA Airlines Inc.,7,"Shreveport, LA: Shreveport Regional" +SRQ,OH,PSA Airlines Inc.,7,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +SYR,OH,PSA Airlines Inc.,7,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,7,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,7,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,7,"Tulsa, OK: Tulsa International" +TVC,OH,PSA Airlines Inc.,7,"Traverse City, MI: Cherry Capital" +TYS,OH,PSA Airlines Inc.,7,"Knoxville, TN: McGhee Tyson" +VPS,OH,PSA Airlines Inc.,7,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,OH,PSA Airlines Inc.,7,"Fayetteville, AR: Northwest Arkansas National" +ABE,OO,SkyWest Airlines Inc.,7,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,7,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,7,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,7,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,7,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,7,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,7,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,7,"Albany, NY: Albany International" +ALW,OO,SkyWest Airlines Inc.,7,"Walla Walla, WA: Walla Walla Regional" +AMA,OO,SkyWest Airlines Inc.,7,"Amarillo, TX: Rick Husband Amarillo International" +ASE,OO,SkyWest Airlines Inc.,7,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,7,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,7,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,7,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,7,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OO,SkyWest Airlines Inc.,7,"Hartford, CT: Bradley International" +BFF,OO,SkyWest Airlines Inc.,7,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,7,"Bakersfield, CA: Meadows Field" +BGR,OO,SkyWest Airlines Inc.,7,"Bangor, ME: Bangor International" +BHM,OO,SkyWest Airlines Inc.,7,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIH,OO,SkyWest Airlines Inc.,7,"Bishop, CA: Bishop Airport" +BIL,OO,SkyWest Airlines Inc.,7,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,7,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,7,"Bemidji, MN: Bemidji Regional" +BLI,OO,SkyWest Airlines Inc.,7,"Bellingham, WA: Bellingham International" +BMI,OO,SkyWest Airlines Inc.,7,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,7,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,7,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,7,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,7,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,7,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,7,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,7,"Butte, MT: Bert Mooney" +BTR,OO,SkyWest Airlines Inc.,7,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,OO,SkyWest Airlines Inc.,7,"Buffalo, NY: Buffalo Niagara International" +BUR,OO,SkyWest Airlines Inc.,7,"Burbank, CA: Bob Hope" +BWI,OO,SkyWest Airlines Inc.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,OO,SkyWest Airlines Inc.,7,"Bozeman, MT: Bozeman Yellowstone International" +CAE,OO,SkyWest Airlines Inc.,7,"Columbia, SC: Columbia Metropolitan" +CAK,OO,SkyWest Airlines Inc.,7,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,7,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,7,"Chattanooga, TN: Lovell Field" +CHS,OO,SkyWest Airlines Inc.,7,"Charleston, SC: Charleston AFB/International" +CID,OO,SkyWest Airlines Inc.,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,7,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,7,"College Station/Bryan, TX: Easterwood Field" +CLT,OO,SkyWest Airlines Inc.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,OO,SkyWest Airlines Inc.,7,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,7,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,7,"Moab, UT: Canyonlands Regional" +COS,OO,SkyWest Airlines Inc.,7,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,OO,SkyWest Airlines Inc.,7,"Columbia, MO: Columbia Regional" +CPR,OO,SkyWest Airlines Inc.,7,"Casper, WY: Casper/Natrona County International" +CRP,OO,SkyWest Airlines Inc.,7,"Corpus Christi, TX: Corpus Christi International" +CRW,OO,SkyWest Airlines Inc.,7,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OO,SkyWest Airlines Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,OO,SkyWest Airlines Inc.,7,"Mosinee, WI: Central Wisconsin" +DAY,OO,SkyWest Airlines Inc.,7,"Dayton, OH: James M Cox/Dayton International" +DCA,OO,SkyWest Airlines Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,7,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,7,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,7,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,7,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,7,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,7,"Durango, CO: Durango La Plata County" +DSM,OO,SkyWest Airlines Inc.,7,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,7,"Devils Lake, ND: Devils Lake Regional" +ECP,OO,SkyWest Airlines Inc.,7,"Panama City, FL: Northwest Florida Beaches International" +EGE,OO,SkyWest Airlines Inc.,7,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,7,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,7,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,7,"El Paso, TX: El Paso International" +ESC,OO,SkyWest Airlines Inc.,7,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,7,"Eugene, OR: Mahlon Sweet Field" +EVV,OO,SkyWest Airlines Inc.,7,"Evansville, IN: Evansville Regional" +EWR,OO,SkyWest Airlines Inc.,7,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,7,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,7,"Fresno, CA: Fresno Yosemite International" +FAY,OO,SkyWest Airlines Inc.,7,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,OO,SkyWest Airlines Inc.,7,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,7,"Flagstaff, AZ: Flagstaff Pulliam" +FNT,OO,SkyWest Airlines Inc.,7,"Flint, MI: Bishop International" +FOD,OO,SkyWest Airlines Inc.,7,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,7,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,7,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,7,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,7,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,7,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,7,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,7,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,7,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,7,"Grand Junction, CO: Grand Junction Regional" +GPT,OO,SkyWest Airlines Inc.,7,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,OO,SkyWest Airlines Inc.,7,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,7,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,7,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,7,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OO,SkyWest Airlines Inc.,7,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OO,SkyWest Airlines Inc.,7,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,7,"Great Falls, MT: Great Falls International" +GTR,OO,SkyWest Airlines Inc.,7,"Columbus, MS: Golden Triangle Regional" +GUC,OO,SkyWest Airlines Inc.,7,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,7,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,7,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,7,"Helena, MT: Helena Regional" +HOU,OO,SkyWest Airlines Inc.,7,"Houston, TX: William P Hobby" +HPN,OO,SkyWest Airlines Inc.,7,"White Plains, NY: Westchester County" +HRL,OO,SkyWest Airlines Inc.,7,"Harlingen/San Benito, TX: Valley International" +HSV,OO,SkyWest Airlines Inc.,7,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,7,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,7,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,7,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,7,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,7,"Idaho Falls, ID: Idaho Falls Regional" +IMT,OO,SkyWest Airlines Inc.,7,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,7,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,7,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,7,"Jackson, WY: Jackson Hole" +JAN,OO,SkyWest Airlines Inc.,7,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OO,SkyWest Airlines Inc.,7,"Jacksonville, FL: Jacksonville International" +JFK,OO,SkyWest Airlines Inc.,7,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,7,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,7,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,7,"Johnstown, PA: John Murtha Johnstown-Cambria County" +KTN,OO,SkyWest Airlines Inc.,7,"Ketchikan, AK: Ketchikan International" +LAR,OO,SkyWest Airlines Inc.,7,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,7,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,7,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,7,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,7,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,7,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,7,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,7,"Lake Charles, LA: Lake Charles Regional" +LEX,OO,SkyWest Airlines Inc.,7,"Lexington, KY: Blue Grass" +LFT,OO,SkyWest Airlines Inc.,7,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,7,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,7,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,7,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,7,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,7,"Laredo, TX: Laredo International" +LWS,OO,SkyWest Airlines Inc.,7,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,7,"Midland/Odessa, TX: Midland International Air and Space Port" +MBS,OO,SkyWest Airlines Inc.,7,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,OO,SkyWest Airlines Inc.,7,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,7,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,7,"Harrisburg, PA: Harrisburg International" +MDW,OO,SkyWest Airlines Inc.,7,"Chicago, IL: Chicago Midway International" +MEI,OO,SkyWest Airlines Inc.,7,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,7,"Memphis, TN: Memphis International" +MFE,OO,SkyWest Airlines Inc.,7,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,OO,SkyWest Airlines Inc.,7,"Medford, OR: Rogue Valley International - Medford" +MGM,OO,SkyWest Airlines Inc.,7,"Montgomery, AL: Montgomery Regional" +MHT,OO,SkyWest Airlines Inc.,7,"Manchester, NH: Manchester Boston Regional" +MKE,OO,SkyWest Airlines Inc.,7,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,7,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,7,"Monroe, LA: Monroe Regional" +MOB,OO,SkyWest Airlines Inc.,7,"Mobile, AL: Mobile Regional" +MOT,OO,SkyWest Airlines Inc.,7,"Minot, ND: Minot International" +MRY,OO,SkyWest Airlines Inc.,7,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,7,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,7,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OO,SkyWest Airlines Inc.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,OO,SkyWest Airlines Inc.,7,"Montrose/Delta, CO: Montrose Regional" +OAK,OO,SkyWest Airlines Inc.,7,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,7,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,7,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,7,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,7,"Chicago, IL: Chicago O'Hare International" +OTH,OO,SkyWest Airlines Inc.,7,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PDX,OO,SkyWest Airlines Inc.,7,"Portland, OR: Portland International" +PHX,OO,SkyWest Airlines Inc.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,OO,SkyWest Airlines Inc.,7,"Peoria, IL: General Downing - Peoria International" +PIB,OO,SkyWest Airlines Inc.,7,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,7,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,7,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,7,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,7,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,7,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,7,"Palm Springs, CA: Palm Springs International" +PVD,OO,SkyWest Airlines Inc.,7,"Providence, RI: Rhode Island Tf Green International" +PWM,OO,SkyWest Airlines Inc.,7,"Portland, ME: Portland International Jetport" +RAP,OO,SkyWest Airlines Inc.,7,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,7,"Redding, CA: Redding Regional" +RDM,OO,SkyWest Airlines Inc.,7,"Bend/Redmond, OR: Roberts Field" +RHI,OO,SkyWest Airlines Inc.,7,"Rhinelander, WI: Rhinelander/Oneida County" +RIC,OO,SkyWest Airlines Inc.,7,"Richmond, VA: Richmond International" +RIW,OO,SkyWest Airlines Inc.,7,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,7,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,7,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,7,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OO,SkyWest Airlines Inc.,7,"Rochester, NY: Frederick Douglass Grtr Rochester International" +ROW,OO,SkyWest Airlines Inc.,7,"Roswell, NM: Roswell Air Center" +RST,OO,SkyWest Airlines Inc.,7,"Rochester, MN: Rochester International" +SAF,OO,SkyWest Airlines Inc.,7,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,7,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,7,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,7,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,7,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,7,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,7,"San Luis Obispo, CA: San Luis County Regional" +SCE,OO,SkyWest Airlines Inc.,7,"State College, PA: University Park" +SDF,OO,SkyWest Airlines Inc.,7,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,7,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,7,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,7,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,7,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,7,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,7,"Shreveport, LA: Shreveport Regional" +SIT,OO,SkyWest Airlines Inc.,7,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,OO,SkyWest Airlines Inc.,7,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,7,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,7,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,7,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,7,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,7,"Santa Ana, CA: John Wayne Airport-Orange County" +SPS,OO,SkyWest Airlines Inc.,7,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +STL,OO,SkyWest Airlines Inc.,7,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,7,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,7,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,7,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,7,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,7,"Syracuse, NY: Syracuse Hancock International" +TLH,OO,SkyWest Airlines Inc.,7,"Tallahassee, FL: Tallahassee International" +TRI,OO,SkyWest Airlines Inc.,7,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OO,SkyWest Airlines Inc.,7,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,7,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,7,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,7,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,7,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,7,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,7,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,7,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,7,"Vernal, UT: Vernal Regional" +WYS,OO,SkyWest Airlines Inc.,7,"West Yellowstone, MT: Yellowstone" +XNA,OO,SkyWest Airlines Inc.,7,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,7,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,7,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,7,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,7,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,7,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,7,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,7,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,7,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,7,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,7,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,7,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,7,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,7,"Aguadilla, PR: Rafael Hernandez" +BTV,UA,United Air Lines Inc.,7,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,7,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,7,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,7,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,7,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,7,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,7,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,7,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,7,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,7,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,7,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,7,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,7,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,7,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,7,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,UA,United Air Lines Inc.,7,"Durango, CO: Durango La Plata County" +DSM,UA,United Air Lines Inc.,7,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,7,"Detroit, MI: Detroit Metro Wayne County" +ELP,UA,United Air Lines Inc.,7,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,7,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,7,"Newark, NJ: Newark Liberty International" +FAI,UA,United Air Lines Inc.,7,"Fairbanks, AK: Fairbanks International" +FAT,UA,United Air Lines Inc.,7,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,7,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,7,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,7,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,7,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,7,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,7,"Grand Rapids, MI: Gerald R. Ford International" +GSP,UA,United Air Lines Inc.,7,"Greer, SC: Greenville-Spartanburg International" +GTF,UA,United Air Lines Inc.,7,"Great Falls, MT: Great Falls International" +GUM,UA,United Air Lines Inc.,7,"Guam, TT: Guam International" +HNL,UA,United Air Lines Inc.,7,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,7,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,7,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,7,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,7,"Indianapolis, IN: Indianapolis International" +JAC,UA,United Air Lines Inc.,7,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,7,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,7,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,7,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,7,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,7,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,7,"Lihue, HI: Lihue Airport" +MAF,UA,United Air Lines Inc.,7,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,UA,United Air Lines Inc.,7,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,7,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,7,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,7,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,7,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,UA,United Air Lines Inc.,7,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,7,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,7,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,7,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,7,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,7,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,7,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,UA,United Air Lines Inc.,7,"Myrtle Beach, SC: Myrtle Beach International" +OGG,UA,United Air Lines Inc.,7,"Kahului, HI: Kahului Airport" +OKC,UA,United Air Lines Inc.,7,"Oklahoma City, OK: Will Rogers World" +OMA,UA,United Air Lines Inc.,7,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,7,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,7,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,7,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,7,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,7,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,7,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,7,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,7,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,7,"Pensacola, FL: Pensacola International" +PVD,UA,United Air Lines Inc.,7,"Providence, RI: Rhode Island Tf Green International" +PWM,UA,United Air Lines Inc.,7,"Portland, ME: Portland International Jetport" +RAP,UA,United Air Lines Inc.,7,"Rapid City, SD: Rapid City Regional" +RDM,UA,United Air Lines Inc.,7,"Bend/Redmond, OR: Roberts Field" +ABE,9E,Endeavor Air Inc.,6,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABY,9E,Endeavor Air Inc.,6,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,6,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,6,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,6,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,9E,Endeavor Air Inc.,6,"Appleton, WI: Appleton International" +AUS,9E,Endeavor Air Inc.,6,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,6,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,6,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,6,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,6,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,6,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,9E,Endeavor Air Inc.,6,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,6,"Brunswick, GA: Brunswick Golden Isles" +BTR,9E,Endeavor Air Inc.,6,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,9E,Endeavor Air Inc.,6,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,6,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,6,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,6,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,6,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,6,"Charleston, SC: Charleston AFB/International" +CLE,9E,Endeavor Air Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,6,"Columbus, OH: John Glenn Columbus International" +CRW,9E,Endeavor Air Inc.,6,"Charleston/Dunbar, WV: West Virginia International Yeager" +CSG,9E,Endeavor Air Inc.,6,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,6,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,6,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DHN,9E,Endeavor Air Inc.,6,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,6,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,6,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,6,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,6,"Newark, NJ: Newark Liberty International" +FAR,9E,Endeavor Air Inc.,6,"Fargo, ND: Hector International" +FAY,9E,Endeavor Air Inc.,6,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FSD,9E,Endeavor Air Inc.,6,"Sioux Falls, SD: Joe Foss Field" +GRB,9E,Endeavor Air Inc.,6,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,9E,Endeavor Air Inc.,6,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,6,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,6,"Columbus, MS: Golden Triangle Regional" +HSV,9E,Endeavor Air Inc.,6,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,9E,Endeavor Air Inc.,6,"Washington, DC: Washington Dulles International" +ICT,9E,Endeavor Air Inc.,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,9E,Endeavor Air Inc.,6,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,6,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,6,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,9E,Endeavor Air Inc.,6,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,6,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,6,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,6,"Lexington, KY: Blue Grass" +LGA,9E,Endeavor Air Inc.,6,"New York, NY: LaGuardia" +LIT,9E,Endeavor Air Inc.,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LSE,9E,Endeavor Air Inc.,6,"La Crosse, WI: La Crosse Regional" +MBS,9E,Endeavor Air Inc.,6,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,6,"Kansas City, MO: Kansas City International" +MDT,9E,Endeavor Air Inc.,6,"Harrisburg, PA: Harrisburg International" +MEM,9E,Endeavor Air Inc.,6,"Memphis, TN: Memphis International" +MGM,9E,Endeavor Air Inc.,6,"Montgomery, AL: Montgomery Regional" +MKE,9E,Endeavor Air Inc.,6,"Milwaukee, WI: General Mitchell International" +MLI,9E,Endeavor Air Inc.,6,"Moline, IL: Quad Cities International" +MLU,9E,Endeavor Air Inc.,6,"Monroe, LA: Monroe Regional" +MOB,9E,Endeavor Air Inc.,6,"Mobile, AL: Mobile Regional" +MQT,9E,Endeavor Air Inc.,6,"Marquette, MI: Marquette Sawyer Regional" +MSN,9E,Endeavor Air Inc.,6,"Madison, WI: Dane County Regional-Truax Field" +MSP,9E,Endeavor Air Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MYR,9E,Endeavor Air Inc.,6,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,9E,Endeavor Air Inc.,6,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OKC,9E,Endeavor Air Inc.,6,"Oklahoma City, OK: Will Rogers World" +ORF,9E,Endeavor Air Inc.,6,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,6,"Worcester, MA: Worcester Regional" +PIT,9E,Endeavor Air Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,6,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,6,"Portland, ME: Portland International Jetport" +RDU,9E,Endeavor Air Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,6,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,6,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,9E,Endeavor Air Inc.,6,"Rochester, MN: Rochester International" +SAV,9E,Endeavor Air Inc.,6,"Savannah, GA: Savannah/Hilton Head International" +SCE,9E,Endeavor Air Inc.,6,"State College, PA: University Park" +SDF,9E,Endeavor Air Inc.,6,"Louisville, KY: Louisville Muhammad Ali International" +SHV,9E,Endeavor Air Inc.,6,"Shreveport, LA: Shreveport Regional" +STL,9E,Endeavor Air Inc.,6,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,6,"Syracuse, NY: Syracuse Hancock International" +TLH,9E,Endeavor Air Inc.,6,"Tallahassee, FL: Tallahassee International" +TRI,9E,Endeavor Air Inc.,6,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TVC,9E,Endeavor Air Inc.,6,"Traverse City, MI: Cherry Capital" +TYS,9E,Endeavor Air Inc.,6,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,6,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,6,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,6,"Albuquerque, NM: Albuquerque International Sunport" +ALB,AA,American Airlines Inc.,6,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,6,"Amarillo, TX: Rick Husband Amarillo International" +ANC,AA,American Airlines Inc.,6,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AA,American Airlines Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,6,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,6,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,6,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,6,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,6,"Bakersfield, CA: Meadows Field" +BGR,AA,American Airlines Inc.,6,"Bangor, ME: Bangor International" +BHM,AA,American Airlines Inc.,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,6,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,6,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,6,"Boston, MA: Logan International" +BTV,AA,American Airlines Inc.,6,"Burlington, VT: Burlington International" +BUF,AA,American Airlines Inc.,6,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,6,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,6,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,6,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,6,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,6,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,6,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,6,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,6,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,AA,American Airlines Inc.,6,"Durango, CO: Durango La Plata County" +DSM,AA,American Airlines Inc.,6,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,6,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,6,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,6,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,6,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,6,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,6,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,6,"Fresno, CA: Fresno Yosemite International" +FCA,AA,American Airlines Inc.,6,"Kalispell, MT: Glacier Park International" +FLL,AA,American Airlines Inc.,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,AA,American Airlines Inc.,6,"Sioux Falls, SD: Joe Foss Field" +GEG,AA,American Airlines Inc.,6,"Spokane, WA: Spokane International" +GRR,AA,American Airlines Inc.,6,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,6,"Greer, SC: Greenville-Spartanburg International" +HNL,AA,American Airlines Inc.,6,"Honolulu, HI: Daniel K Inouye International" +HSV,AA,American Airlines Inc.,6,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,AA,American Airlines Inc.,6,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,6,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,6,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,6,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,6,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,6,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,6,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,6,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,6,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,6,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,6,"Lubbock, TX: Lubbock Preston Smith International" +LEX,AA,American Airlines Inc.,6,"Lexington, KY: Blue Grass" +LGA,AA,American Airlines Inc.,6,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,6,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,6,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,6,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,6,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,6,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,6,"Mission/McAllen/Edinburg, TX: McAllen International" +MIA,AA,American Airlines Inc.,6,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,6,"Milwaukee, WI: General Mitchell International" +MRY,AA,American Airlines Inc.,6,"Monterey, CA: Monterey Regional" +MSN,AA,American Airlines Inc.,6,"Madison, WI: Dane County Regional-Truax Field" +MSO,AA,American Airlines Inc.,6,"Missoula, MT: Missoula Montana" +MSP,AA,American Airlines Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,6,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,6,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,6,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,6,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,6,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,6,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,6,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,6,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,6,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,6,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,6,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,6,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,6,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,6,"Portland, ME: Portland International Jetport" +RAP,AA,American Airlines Inc.,6,"Rapid City, SD: Rapid City Regional" +RDU,AA,American Airlines Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,6,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,6,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,6,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,6,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,6,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,6,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,6,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,6,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,6,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,6,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,6,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,6,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,6,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,6,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,6,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,6,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,6,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,6,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,6,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,6,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,6,"Tucson, AZ: Tucson International" +TVC,AA,American Airlines Inc.,6,"Traverse City, MI: Cherry Capital" +TYS,AA,American Airlines Inc.,6,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,6,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,6,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,6,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,6,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,6,"Kodiak, AK: Kodiak Airport" +AKN,AS,Alaska Airlines Inc.,6,"King Salmon, AK: King Salmon Airport" +ANC,AS,Alaska Airlines Inc.,6,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,6,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,6,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,6,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,6,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,6,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,6,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,6,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,6,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,6,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,6,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,6,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,6,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,6,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLG,AS,Alaska Airlines Inc.,6,"Dillingham, AK: Dillingham Airport" +DTW,AS,Alaska Airlines Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,6,"El Paso, TX: El Paso International" +EUG,AS,Alaska Airlines Inc.,6,"Eugene, OR: Mahlon Sweet Field" +EWR,AS,Alaska Airlines Inc.,6,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,6,"Fairbanks, AK: Fairbanks International" +FAT,AS,Alaska Airlines Inc.,6,"Fresno, CA: Fresno Yosemite International" +FLL,AS,Alaska Airlines Inc.,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,6,"Spokane, WA: Spokane International" +GST,AS,Alaska Airlines Inc.,6,"Gustavus, AK: Gustavus Airport" +HNL,AS,Alaska Airlines Inc.,6,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,6,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,6,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,6,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,6,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,6,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,6,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,6,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,6,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,6,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,6,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,6,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,6,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,6,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,6,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,6,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,6,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,6,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,6,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,6,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,6,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,6,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,6,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,6,"Kotzebue, AK: Ralph Wien Memorial" +PAE,AS,Alaska Airlines Inc.,6,"Everett, WA: Snohomish County" +PDX,AS,Alaska Airlines Inc.,6,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,6,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PSC,AS,Alaska Airlines Inc.,6,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSG,AS,Alaska Airlines Inc.,6,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,6,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,6,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,6,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,6,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,6,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,6,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,6,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,6,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,6,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,6,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,6,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,6,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,6,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,6,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,6,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,6,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,6,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,6,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,6,"Yakutat, AK: Yakutat Airport" +ABQ,B6,JetBlue Airways,6,"Albuquerque, NM: Albuquerque International Sunport" +ACK,B6,JetBlue Airways,6,"Nantucket, MA: Nantucket Memorial" +ALB,B6,JetBlue Airways,6,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,6,"Austin, TX: Austin - Bergstrom International" +AVL,B6,JetBlue Airways,6,"Asheville, NC: Asheville Regional" +BDL,B6,JetBlue Airways,6,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,6,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,6,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,6,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,6,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,6,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,6,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,B6,JetBlue Airways,6,"Bozeman, MT: Bozeman Yellowstone International" +CHS,B6,JetBlue Airways,6,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,6,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,6,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,6,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,6,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,6,"Newark, NJ: Newark Liberty International" +FLL,B6,JetBlue Airways,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HPN,B6,JetBlue Airways,6,"White Plains, NY: Westchester County" +HYA,B6,JetBlue Airways,6,"Hyannis, MA: Cape Cod Gateway" +IAH,B6,JetBlue Airways,6,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,6,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,6,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,6,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,6,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,6,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,6,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,6,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,6,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,6,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,B6,JetBlue Airways,6,"Martha's Vineyard, MA: Martha's Vineyard Airport" +ONT,B6,JetBlue Airways,6,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,6,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,6,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,B6,JetBlue Airways,6,"Portland, OR: Portland International" +PHL,B6,JetBlue Airways,6,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,6,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,6,"Ponce, PR: Mercedita" +PVD,B6,JetBlue Airways,6,"Providence, RI: Rhode Island Tf Green International" +PWM,B6,JetBlue Airways,6,"Portland, ME: Portland International Jetport" +RDU,B6,JetBlue Airways,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,6,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,6,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,6,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,6,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,6,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,6,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,6,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,6,"San Francisco, CA: San Francisco International" +SJC,B6,JetBlue Airways,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,B6,JetBlue Airways,6,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,6,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,6,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,6,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,6,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,6,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,6,"Albuquerque, NM: Albuquerque International Sunport" +ALB,DL,Delta Air Lines Inc.,6,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,6,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,6,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,6,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,6,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,6,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,6,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,6,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,6,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,6,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,6,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,6,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,6,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,6,"Buffalo, NY: Buffalo Niagara International" +BWI,DL,Delta Air Lines Inc.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,6,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,6,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,6,"Chattanooga, TN: Lovell Field" +CHO,DL,Delta Air Lines Inc.,6,"Charlottesville, VA: Charlottesville Albemarle" +CHS,DL,Delta Air Lines Inc.,6,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,6,"Columbus, OH: John Glenn Columbus International" +COS,DL,Delta Air Lines Inc.,6,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,DL,Delta Air Lines Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,6,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,6,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,6,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,6,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLH,DL,Delta Air Lines Inc.,6,"Duluth, MN: Duluth International" +DSM,DL,Delta Air Lines Inc.,6,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,6,"Panama City, FL: Northwest Florida Beaches International" +ELP,DL,Delta Air Lines Inc.,6,"El Paso, TX: El Paso International" +EUG,DL,Delta Air Lines Inc.,6,"Eugene, OR: Mahlon Sweet Field" +EVV,DL,Delta Air Lines Inc.,6,"Evansville, IN: Evansville Regional" +EWR,DL,Delta Air Lines Inc.,6,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,6,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,6,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,6,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,6,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,6,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,6,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,6,"Spokane, WA: Spokane International" +GFK,DL,Delta Air Lines Inc.,6,"Grand Forks, ND: Grand Forks International" +GNV,DL,Delta Air Lines Inc.,6,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,6,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,6,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,6,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,6,"Greer, SC: Greenville-Spartanburg International" +HNL,DL,Delta Air Lines Inc.,6,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,6,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,6,"White Plains, NY: Westchester County" +HSV,DL,Delta Air Lines Inc.,6,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,6,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,6,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,6,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,6,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,6,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,6,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,6,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,6,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,6,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,6,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,6,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,6,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,6,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,6,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,6,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,6,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,6,"Orlando, FL: Orlando International" +MDT,DL,Delta Air Lines Inc.,6,"Harrisburg, PA: Harrisburg International" +MDW,DL,Delta Air Lines Inc.,6,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,6,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,6,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,6,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,6,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,6,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,6,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,6,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,DL,Delta Air Lines Inc.,6,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,6,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,6,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,6,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,6,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,6,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,6,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,6,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,6,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,6,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,6,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,6,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,6,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,DL,Delta Air Lines Inc.,6,"Palm Springs, CA: Palm Springs International" +PVD,DL,Delta Air Lines Inc.,6,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,6,"Portland, ME: Portland International Jetport" +RAP,DL,Delta Air Lines Inc.,6,"Rapid City, SD: Rapid City Regional" +RDU,DL,Delta Air Lines Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,6,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,6,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,6,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,6,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,6,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,6,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,6,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,6,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,6,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,6,"San Francisco, CA: San Francisco International" +SGF,DL,Delta Air Lines Inc.,6,"Springfield, MO: Springfield-Branson National" +SJC,DL,Delta Air Lines Inc.,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,6,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,6,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,6,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,6,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,6,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,6,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,6,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,6,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,6,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,6,"Tampa, FL: Tampa International" +TUL,DL,Delta Air Lines Inc.,6,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,6,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,6,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,6,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,6,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,6,"Fayetteville, AR: Northwest Arkansas National" +ATL,F9,Frontier Airlines Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,6,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,6,"Hartford, CT: Bradley International" +BMI,F9,Frontier Airlines Inc.,6,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,6,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,6,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,6,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,6,"Buffalo, NY: Buffalo Niagara International" +BWI,F9,Frontier Airlines Inc.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,F9,Frontier Airlines Inc.,6,"Charleston, SC: Charleston AFB/International" +CID,F9,Frontier Airlines Inc.,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,6,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,6,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,6,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,6,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,6,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,6,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,6,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,6,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,6,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,6,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,6,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,6,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,6,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,6,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,6,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,6,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,6,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,6,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,6,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,6,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,6,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,6,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,6,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,F9,Frontier Airlines Inc.,6,"Myrtle Beach, SC: Myrtle Beach International" +OKC,F9,Frontier Airlines Inc.,6,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,6,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,6,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,6,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,6,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,6,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,6,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,6,"Pensacola, FL: Pensacola International" +PSE,F9,Frontier Airlines Inc.,6,"Ponce, PR: Mercedita" +PWM,F9,Frontier Airlines Inc.,6,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RSW,F9,Frontier Airlines Inc.,6,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,6,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,6,"San Antonio, TX: San Antonio International" +SAV,F9,Frontier Airlines Inc.,6,"Savannah, GA: Savannah/Hilton Head International" +SEA,F9,Frontier Airlines Inc.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,6,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,6,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,6,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,6,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,6,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,6,"St. Louis, MO: St Louis Lambert International" +STT,F9,Frontier Airlines Inc.,6,"Charlotte Amalie, VI: Cyril E King" +SWF,F9,Frontier Airlines Inc.,6,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,F9,Frontier Airlines Inc.,6,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,6,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,6,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,6,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,6,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,6,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,6,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,6,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,6,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,6,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,6,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,6,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,6,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,6,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,6,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,6,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,6,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,6,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,6,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,6,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,6,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,6,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,6,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,6,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,6,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,6,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,6,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,6,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,6,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,6,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,6,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,6,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,6,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,6,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,6,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,6,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,6,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,6,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,6,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,6,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,6,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,6,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,6,"Grand Junction, CO: Grand Junction Regional" +GPT,G4,Allegiant Air,6,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRI,G4,Allegiant Air,6,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,6,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,6,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,6,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,6,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,6,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,6,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,6,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,6,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,6,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,6,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,6,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,6,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,6,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,6,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,6,"Lexington, KY: Blue Grass" +LIT,G4,Allegiant Air,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,G4,Allegiant Air,6,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,6,"Kansas City, MO: Kansas City International" +MDT,G4,Allegiant Air,6,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,6,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,6,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,6,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,G4,Allegiant Air,6,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,6,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,6,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,6,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,6,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,6,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,6,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,6,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,6,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,6,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,6,"Norfolk, VA: Norfolk International" +PBG,G4,Allegiant Air,6,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,6,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,6,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,6,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,6,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,6,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,6,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,6,"Portsmouth, NH: Portsmouth International at Pease" +PVD,G4,Allegiant Air,6,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,6,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,6,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,6,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,6,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,6,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,6,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,6,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,6,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,6,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,6,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,6,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,6,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,6,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,6,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,6,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,6,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,6,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,6,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +SWF,G4,Allegiant Air,6,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,6,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,6,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,6,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,6,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,6,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,6,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,6,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,6,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,6,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,6,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,6,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,6,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,6,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,6,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,6,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,6,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,6,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,6,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,6,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,6,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,6,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,6,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,6,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,6,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,6,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,6,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,6,"Sacramento, CA: Sacramento International" +ABI,MQ,Envoy Air,6,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,6,"Albuquerque, NM: Albuquerque International Sunport" +ACK,MQ,Envoy Air,6,"Nantucket, MA: Nantucket Memorial" +AGS,MQ,Envoy Air,6,"Augusta, GA: Augusta Regional at Bush Field" +AMA,MQ,Envoy Air,6,"Amarillo, TX: Rick Husband Amarillo International" +ATL,MQ,Envoy Air,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,MQ,Envoy Air,6,"Austin, TX: Austin - Bergstrom International" +AVL,MQ,Envoy Air,6,"Asheville, NC: Asheville Regional" +BFL,MQ,Envoy Air,6,"Bakersfield, CA: Meadows Field" +BGR,MQ,Envoy Air,6,"Bangor, ME: Bangor International" +BHM,MQ,Envoy Air,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,6,"Billings, MT: Billings Logan International" +BIS,MQ,Envoy Air,6,"Bismarck/Mandan, ND: Bismarck Municipal" +BMI,MQ,Envoy Air,6,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,6,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,6,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,6,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,6,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,MQ,Envoy Air,6,"Burlington, VT: Burlington International" +BUF,MQ,Envoy Air,6,"Buffalo, NY: Buffalo Niagara International" +BWI,MQ,Envoy Air,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHA,MQ,Envoy Air,6,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,6,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,6,"Cleveland, OH: Cleveland-Hopkins International" +CLL,MQ,Envoy Air,6,"College Station/Bryan, TX: Easterwood Field" +CLT,MQ,Envoy Air,6,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,6,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,6,"Champaign/Urbana, IL: University of Illinois/Willard" +COU,MQ,Envoy Air,6,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,6,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,MQ,Envoy Air,6,"Daytona Beach, FL: Daytona Beach International" +DAY,MQ,Envoy Air,6,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,6,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,MQ,Envoy Air,6,"Des Moines, IA: Des Moines International" +ECP,MQ,Envoy Air,6,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,6,"El Paso, TX: El Paso International" +EUG,MQ,Envoy Air,6,"Eugene, OR: Mahlon Sweet Field" +EVV,MQ,Envoy Air,6,"Evansville, IN: Evansville Regional" +EYW,MQ,Envoy Air,6,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,6,"Fargo, ND: Hector International" +FSD,MQ,Envoy Air,6,"Sioux Falls, SD: Joe Foss Field" +FSM,MQ,Envoy Air,6,"Fort Smith, AR: Fort Smith Regional" +FWA,MQ,Envoy Air,6,"Fort Wayne, IN: Fort Wayne International" +GJT,MQ,Envoy Air,6,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,6,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,6,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,6,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,6,"Killeen, TX: Robert Gray AAF" +GSO,MQ,Envoy Air,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,6,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,6,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,6,"Houston, TX: William P Hobby" +HPN,MQ,Envoy Air,6,"White Plains, NY: Westchester County" +HRL,MQ,Envoy Air,6,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,6,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,MQ,Envoy Air,6,"Washington, DC: Washington Dulles International" +IAH,MQ,Envoy Air,6,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,MQ,Envoy Air,6,"Wilmington, NC: Wilmington International" +IND,MQ,Envoy Air,6,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,6,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,6,"Jacksonville, FL: Jacksonville International" +LBB,MQ,Envoy Air,6,"Lubbock, TX: Lubbock Preston Smith International" +LEX,MQ,Envoy Air,6,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,6,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,MQ,Envoy Air,6,"Laredo, TX: Laredo International" +MAF,MQ,Envoy Air,6,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,6,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,6,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,6,"Montgomery, AL: Montgomery Regional" +MHT,MQ,Envoy Air,6,"Manchester, NH: Manchester Boston Regional" +MIA,MQ,Envoy Air,6,"Miami, FL: Miami International" +MLI,MQ,Envoy Air,6,"Moline, IL: Quad Cities International" +MLU,MQ,Envoy Air,6,"Monroe, LA: Monroe Regional" +MOB,MQ,Envoy Air,6,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,6,"Marquette, MI: Marquette Sawyer Regional" +MRY,MQ,Envoy Air,6,"Monterey, CA: Monterey Regional" +MSO,MQ,Envoy Air,6,"Missoula, MT: Missoula Montana" +MSP,MQ,Envoy Air,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,MQ,Envoy Air,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,MQ,Envoy Air,6,"Martha's Vineyard, MA: Martha's Vineyard Airport" +OKC,MQ,Envoy Air,6,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,6,"Omaha, NE: Eppley Airfield" +ONT,MQ,Envoy Air,6,"Ontario, CA: Ontario International" +ORD,MQ,Envoy Air,6,"Chicago, IL: Chicago O'Hare International" +ORF,MQ,Envoy Air,6,"Norfolk, VA: Norfolk International" +PHX,MQ,Envoy Air,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,6,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,6,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,6,"Pensacola, FL: Pensacola International" +PVD,MQ,Envoy Air,6,"Providence, RI: Rhode Island Tf Green International" +PWM,MQ,Envoy Air,6,"Portland, ME: Portland International Jetport" +RAP,MQ,Envoy Air,6,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,MQ,Envoy Air,6,"Richmond, VA: Richmond International" +RNO,MQ,Envoy Air,6,"Reno, NV: Reno/Tahoe International" +ROC,MQ,Envoy Air,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,MQ,Envoy Air,6,"Rochester, MN: Rochester International" +SAT,MQ,Envoy Air,6,"San Antonio, TX: San Antonio International" +SAV,MQ,Envoy Air,6,"Savannah, GA: Savannah/Hilton Head International" +SDF,MQ,Envoy Air,6,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,6,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,6,"Shreveport, LA: Shreveport Regional" +SJT,MQ,Envoy Air,6,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,MQ,Envoy Air,6,"Salt Lake City, UT: Salt Lake City International" +SMF,MQ,Envoy Air,6,"Sacramento, CA: Sacramento International" +SRQ,MQ,Envoy Air,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,MQ,Envoy Air,6,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,6,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SYR,MQ,Envoy Air,6,"Syracuse, NY: Syracuse Hancock International" +TLH,MQ,Envoy Air,6,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,6,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,6,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,6,"Tulsa, OK: Tulsa International" +TVC,MQ,Envoy Air,6,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,6,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,6,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,6,"Fayetteville, AR: Northwest Arkansas National" +YUM,MQ,Envoy Air,6,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,NK,Spirit Air Lines,6,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,6,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,6,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,6,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,6,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,6,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,6,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,6,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,6,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,NK,Spirit Air Lines,6,"Charleston, SC: Charleston AFB/International" +CLE,NK,Spirit Air Lines,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,6,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,6,"Columbus, OH: John Glenn Columbus International" +DEN,NK,Spirit Air Lines,6,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,6,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,6,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,6,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,6,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,6,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,6,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,6,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,6,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,6,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,6,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,6,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,6,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,6,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,6,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,6,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,6,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,6,"Chicago, IL: Chicago O'Hare International" +ORF,NK,Spirit Air Lines,6,"Norfolk, VA: Norfolk International" +PBI,NK,Spirit Air Lines,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,6,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,6,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,6,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,6,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,6,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,6,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,6,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,6,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,6,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,6,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,6,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,6,"Seattle, WA: Seattle/Tacoma International" +SJC,NK,Spirit Air Lines,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,NK,Spirit Air Lines,6,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,6,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,6,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,6,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,6,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,6,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,6,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,6,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,6,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,6,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,6,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,6,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,6,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,6,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,6,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,6,"Nashville, TN: Nashville International" +BTR,OH,PSA Airlines Inc.,6,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,6,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,6,"Buffalo, NY: Buffalo Niagara International" +CAE,OH,PSA Airlines Inc.,6,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,6,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,6,"Chattanooga, TN: Lovell Field" +CHO,OH,PSA Airlines Inc.,6,"Charlottesville, VA: Charlottesville Albemarle" +CHS,OH,PSA Airlines Inc.,6,"Charleston, SC: Charleston AFB/International" +CID,OH,PSA Airlines Inc.,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,OH,PSA Airlines Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,6,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,6,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,6,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,6,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DFW,OH,PSA Airlines Inc.,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,OH,PSA Airlines Inc.,6,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,6,"Panama City, FL: Northwest Florida Beaches International" +EWN,OH,PSA Airlines Inc.,6,"New Bern/Morehead/Beaufort, NC: Coastal Carolina Regional" +FAY,OH,PSA Airlines Inc.,6,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GPT,OH,PSA Airlines Inc.,6,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,6,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,6,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,6,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,6,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,OH,PSA Airlines Inc.,6,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,6,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,6,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,6,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,6,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,6,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,6,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,6,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,6,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,6,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,6,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,6,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,6,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,6,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,6,"Melbourne, FL: Melbourne Orlando International" +MSN,OH,PSA Airlines Inc.,6,"Madison, WI: Dane County Regional-Truax Field" +MSP,OH,PSA Airlines Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,6,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,OH,PSA Airlines Inc.,6,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OKC,OH,PSA Airlines Inc.,6,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,6,"Norfolk, VA: Norfolk International" +PHL,OH,PSA Airlines Inc.,6,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,6,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,6,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,6,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,6,"Portland, ME: Portland International Jetport" +RAP,OH,PSA Airlines Inc.,6,"Rapid City, SD: Rapid City Regional" +RDU,OH,PSA Airlines Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,OH,PSA Airlines Inc.,6,"Richmond, VA: Richmond International" +ROA,OH,PSA Airlines Inc.,6,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OH,PSA Airlines Inc.,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,OH,PSA Airlines Inc.,6,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,6,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,6,"Louisville, KY: Louisville Muhammad Ali International" +SGF,OH,PSA Airlines Inc.,6,"Springfield, MO: Springfield-Branson National" +SHV,OH,PSA Airlines Inc.,6,"Shreveport, LA: Shreveport Regional" +SRQ,OH,PSA Airlines Inc.,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +SYR,OH,PSA Airlines Inc.,6,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,6,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,6,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,6,"Tulsa, OK: Tulsa International" +TVC,OH,PSA Airlines Inc.,6,"Traverse City, MI: Cherry Capital" +TYS,OH,PSA Airlines Inc.,6,"Knoxville, TN: McGhee Tyson" +VPS,OH,PSA Airlines Inc.,6,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,OH,PSA Airlines Inc.,6,"Fayetteville, AR: Northwest Arkansas National" +ABE,OO,SkyWest Airlines Inc.,6,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,6,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,6,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,6,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,6,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,6,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,6,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,6,"Albany, NY: Albany International" +ALW,OO,SkyWest Airlines Inc.,6,"Walla Walla, WA: Walla Walla Regional" +AMA,OO,SkyWest Airlines Inc.,6,"Amarillo, TX: Rick Husband Amarillo International" +ASE,OO,SkyWest Airlines Inc.,6,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,6,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,6,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,6,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,6,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OO,SkyWest Airlines Inc.,6,"Hartford, CT: Bradley International" +BFF,OO,SkyWest Airlines Inc.,6,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,6,"Bakersfield, CA: Meadows Field" +BGR,OO,SkyWest Airlines Inc.,6,"Bangor, ME: Bangor International" +BHM,OO,SkyWest Airlines Inc.,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIH,OO,SkyWest Airlines Inc.,6,"Bishop, CA: Bishop Airport" +BIL,OO,SkyWest Airlines Inc.,6,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,6,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,6,"Bemidji, MN: Bemidji Regional" +BLI,OO,SkyWest Airlines Inc.,6,"Bellingham, WA: Bellingham International" +BMI,OO,SkyWest Airlines Inc.,6,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,6,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,6,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,6,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,6,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,6,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,6,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,6,"Butte, MT: Bert Mooney" +BTR,OO,SkyWest Airlines Inc.,6,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,OO,SkyWest Airlines Inc.,6,"Buffalo, NY: Buffalo Niagara International" +BUR,OO,SkyWest Airlines Inc.,6,"Burbank, CA: Bob Hope" +BWI,OO,SkyWest Airlines Inc.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,OO,SkyWest Airlines Inc.,6,"Bozeman, MT: Bozeman Yellowstone International" +CAE,OO,SkyWest Airlines Inc.,6,"Columbia, SC: Columbia Metropolitan" +CAK,OO,SkyWest Airlines Inc.,6,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,6,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,6,"Chattanooga, TN: Lovell Field" +CHS,OO,SkyWest Airlines Inc.,6,"Charleston, SC: Charleston AFB/International" +CID,OO,SkyWest Airlines Inc.,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,6,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,6,"College Station/Bryan, TX: Easterwood Field" +CLT,OO,SkyWest Airlines Inc.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,OO,SkyWest Airlines Inc.,6,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,6,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,6,"Moab, UT: Canyonlands Regional" +COS,OO,SkyWest Airlines Inc.,6,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,OO,SkyWest Airlines Inc.,6,"Columbia, MO: Columbia Regional" +CPR,OO,SkyWest Airlines Inc.,6,"Casper, WY: Casper/Natrona County International" +CRP,OO,SkyWest Airlines Inc.,6,"Corpus Christi, TX: Corpus Christi International" +CRW,OO,SkyWest Airlines Inc.,6,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OO,SkyWest Airlines Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,OO,SkyWest Airlines Inc.,6,"Mosinee, WI: Central Wisconsin" +DAY,OO,SkyWest Airlines Inc.,6,"Dayton, OH: James M Cox/Dayton International" +DCA,OO,SkyWest Airlines Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,6,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,6,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,6,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,6,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,6,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,6,"Durango, CO: Durango La Plata County" +DSM,OO,SkyWest Airlines Inc.,6,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,6,"Devils Lake, ND: Devils Lake Regional" +ECP,OO,SkyWest Airlines Inc.,6,"Panama City, FL: Northwest Florida Beaches International" +EGE,OO,SkyWest Airlines Inc.,6,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,6,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,6,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,6,"El Paso, TX: El Paso International" +ERI,OO,SkyWest Airlines Inc.,6,"Erie, PA: Erie International/Tom Ridge Field" +ESC,OO,SkyWest Airlines Inc.,6,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,6,"Eugene, OR: Mahlon Sweet Field" +EVV,OO,SkyWest Airlines Inc.,6,"Evansville, IN: Evansville Regional" +EWR,OO,SkyWest Airlines Inc.,6,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,6,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,6,"Fresno, CA: Fresno Yosemite International" +FAY,OO,SkyWest Airlines Inc.,6,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,OO,SkyWest Airlines Inc.,6,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,6,"Flagstaff, AZ: Flagstaff Pulliam" +FNT,OO,SkyWest Airlines Inc.,6,"Flint, MI: Bishop International" +FOD,OO,SkyWest Airlines Inc.,6,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,6,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,6,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,6,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,6,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,6,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,6,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,6,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,6,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,6,"Grand Junction, CO: Grand Junction Regional" +GRB,OO,SkyWest Airlines Inc.,6,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,6,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,6,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,6,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OO,SkyWest Airlines Inc.,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OO,SkyWest Airlines Inc.,6,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,6,"Great Falls, MT: Great Falls International" +GUC,OO,SkyWest Airlines Inc.,6,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,6,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,6,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,6,"Helena, MT: Helena Regional" +HOU,OO,SkyWest Airlines Inc.,6,"Houston, TX: William P Hobby" +HPN,OO,SkyWest Airlines Inc.,6,"White Plains, NY: Westchester County" +HSV,OO,SkyWest Airlines Inc.,6,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,6,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,6,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,6,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,6,"Idaho Falls, ID: Idaho Falls Regional" +IMT,OO,SkyWest Airlines Inc.,6,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,6,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,6,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,6,"Jackson, WY: Jackson Hole" +JAN,OO,SkyWest Airlines Inc.,6,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OO,SkyWest Airlines Inc.,6,"Jacksonville, FL: Jacksonville International" +JFK,OO,SkyWest Airlines Inc.,6,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,6,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,6,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,6,"Johnstown, PA: John Murtha Johnstown-Cambria County" +KTN,OO,SkyWest Airlines Inc.,6,"Ketchikan, AK: Ketchikan International" +LAR,OO,SkyWest Airlines Inc.,6,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,6,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,6,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,6,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,6,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,6,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,6,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,6,"Lake Charles, LA: Lake Charles Regional" +LEX,OO,SkyWest Airlines Inc.,6,"Lexington, KY: Blue Grass" +LFT,OO,SkyWest Airlines Inc.,6,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,6,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,6,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,6,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,6,"Laredo, TX: Laredo International" +LWS,OO,SkyWest Airlines Inc.,6,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,6,"Midland/Odessa, TX: Midland International Air and Space Port" +MBS,OO,SkyWest Airlines Inc.,6,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,OO,SkyWest Airlines Inc.,6,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,6,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,6,"Harrisburg, PA: Harrisburg International" +MDW,OO,SkyWest Airlines Inc.,6,"Chicago, IL: Chicago Midway International" +MEI,OO,SkyWest Airlines Inc.,6,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,6,"Memphis, TN: Memphis International" +MFE,OO,SkyWest Airlines Inc.,6,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,OO,SkyWest Airlines Inc.,6,"Medford, OR: Rogue Valley International - Medford" +MGM,OO,SkyWest Airlines Inc.,6,"Montgomery, AL: Montgomery Regional" +MHT,OO,SkyWest Airlines Inc.,6,"Manchester, NH: Manchester Boston Regional" +MKE,OO,SkyWest Airlines Inc.,6,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,6,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,6,"Monroe, LA: Monroe Regional" +MOB,OO,SkyWest Airlines Inc.,6,"Mobile, AL: Mobile Regional" +MOT,OO,SkyWest Airlines Inc.,6,"Minot, ND: Minot International" +MQT,OO,SkyWest Airlines Inc.,6,"Marquette, MI: Marquette Sawyer Regional" +MRY,OO,SkyWest Airlines Inc.,6,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,6,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,6,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OO,SkyWest Airlines Inc.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,OO,SkyWest Airlines Inc.,6,"Montrose/Delta, CO: Montrose Regional" +OAJ,OO,SkyWest Airlines Inc.,6,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,OO,SkyWest Airlines Inc.,6,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,6,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,6,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,6,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,6,"Chicago, IL: Chicago O'Hare International" +OTH,OO,SkyWest Airlines Inc.,6,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PDX,OO,SkyWest Airlines Inc.,6,"Portland, OR: Portland International" +PHX,OO,SkyWest Airlines Inc.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,OO,SkyWest Airlines Inc.,6,"Peoria, IL: General Downing - Peoria International" +PIB,OO,SkyWest Airlines Inc.,6,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,6,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,6,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,6,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,6,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,6,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,6,"Palm Springs, CA: Palm Springs International" +PVD,OO,SkyWest Airlines Inc.,6,"Providence, RI: Rhode Island Tf Green International" +PWM,OO,SkyWest Airlines Inc.,6,"Portland, ME: Portland International Jetport" +RAP,OO,SkyWest Airlines Inc.,6,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,6,"Redding, CA: Redding Regional" +RDM,OO,SkyWest Airlines Inc.,6,"Bend/Redmond, OR: Roberts Field" +RDU,OO,SkyWest Airlines Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RHI,OO,SkyWest Airlines Inc.,6,"Rhinelander, WI: Rhinelander/Oneida County" +RIC,OO,SkyWest Airlines Inc.,6,"Richmond, VA: Richmond International" +RIW,OO,SkyWest Airlines Inc.,6,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,6,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,6,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,6,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OO,SkyWest Airlines Inc.,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +ROW,OO,SkyWest Airlines Inc.,6,"Roswell, NM: Roswell Air Center" +RST,OO,SkyWest Airlines Inc.,6,"Rochester, MN: Rochester International" +SAF,OO,SkyWest Airlines Inc.,6,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,6,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,6,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,6,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,6,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,6,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,6,"San Luis Obispo, CA: San Luis County Regional" +SCE,OO,SkyWest Airlines Inc.,6,"State College, PA: University Park" +SDF,OO,SkyWest Airlines Inc.,6,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,6,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,6,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,6,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,6,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,6,"Shreveport, LA: Shreveport Regional" +SIT,OO,SkyWest Airlines Inc.,6,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,OO,SkyWest Airlines Inc.,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,6,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,6,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,6,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,6,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,6,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,OO,SkyWest Airlines Inc.,6,"Springfield, IL: Abraham Lincoln Capital" +SPS,OO,SkyWest Airlines Inc.,6,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +SRQ,OO,SkyWest Airlines Inc.,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OO,SkyWest Airlines Inc.,6,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,6,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,6,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,6,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,6,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,6,"Syracuse, NY: Syracuse Hancock International" +TRI,OO,SkyWest Airlines Inc.,6,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OO,SkyWest Airlines Inc.,6,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,6,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,6,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,6,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,6,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,6,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,6,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,6,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,6,"Vernal, UT: Vernal Regional" +WYS,OO,SkyWest Airlines Inc.,6,"West Yellowstone, MT: Yellowstone" +XNA,OO,SkyWest Airlines Inc.,6,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,6,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,6,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,6,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,6,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,6,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,6,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,6,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,6,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,6,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,6,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,6,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,6,"Aguadilla, PR: Rafael Hernandez" +BTV,UA,United Air Lines Inc.,6,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,6,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,6,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,6,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,6,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,6,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,6,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,6,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,6,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,UA,United Air Lines Inc.,6,"Durango, CO: Durango La Plata County" +DSM,UA,United Air Lines Inc.,6,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,6,"Detroit, MI: Detroit Metro Wayne County" +ELP,UA,United Air Lines Inc.,6,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,6,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,6,"Newark, NJ: Newark Liberty International" +FAI,UA,United Air Lines Inc.,6,"Fairbanks, AK: Fairbanks International" +FAT,UA,United Air Lines Inc.,6,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,6,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,6,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,6,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,6,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,6,"Grand Rapids, MI: Gerald R. Ford International" +GSP,UA,United Air Lines Inc.,6,"Greer, SC: Greenville-Spartanburg International" +GTF,UA,United Air Lines Inc.,6,"Great Falls, MT: Great Falls International" +GUM,UA,United Air Lines Inc.,6,"Guam, TT: Guam International" +HNL,UA,United Air Lines Inc.,6,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,6,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,6,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,6,"Indianapolis, IN: Indianapolis International" +JAC,UA,United Air Lines Inc.,6,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,6,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,6,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,6,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,6,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,6,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,6,"Lihue, HI: Lihue Airport" +MAF,UA,United Air Lines Inc.,6,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,UA,United Air Lines Inc.,6,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,6,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,6,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,6,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,6,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,UA,United Air Lines Inc.,6,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,6,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,6,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,6,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,6,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,UA,United Air Lines Inc.,6,"Myrtle Beach, SC: Myrtle Beach International" +OGG,UA,United Air Lines Inc.,6,"Kahului, HI: Kahului Airport" +OKC,UA,United Air Lines Inc.,6,"Oklahoma City, OK: Will Rogers World" +OMA,UA,United Air Lines Inc.,6,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,6,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,6,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,6,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,6,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,6,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,6,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,6,"Pensacola, FL: Pensacola International" +PSP,UA,United Air Lines Inc.,6,"Palm Springs, CA: Palm Springs International" +PVD,UA,United Air Lines Inc.,6,"Providence, RI: Rhode Island Tf Green International" +PWM,UA,United Air Lines Inc.,6,"Portland, ME: Portland International Jetport" +RAP,UA,United Air Lines Inc.,6,"Rapid City, SD: Rapid City Regional" +RDM,UA,United Air Lines Inc.,6,"Bend/Redmond, OR: Roberts Field" +RDU,UA,United Air Lines Inc.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,6,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,6,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,6,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,6,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,6,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,6,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,6,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,6,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,6,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,6,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,6,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,6,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,6,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,6,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,6,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,6,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,6,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,6,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,6,"Tulsa, OK: Tulsa International" +TUS,UA,United Air Lines Inc.,6,"Tucson, AZ: Tucson International" +TVC,UA,United Air Lines Inc.,6,"Traverse City, MI: Cherry Capital" +XNA,UA,United Air Lines Inc.,6,"Fayetteville, AR: Northwest Arkansas National" +ABQ,WN,Southwest Airlines Co.,6,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,6,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,6,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,6,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,6,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,6,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,6,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,6,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,6,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,6,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,6,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,6,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,6,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,6,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,6,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,6,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,6,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,6,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,6,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,6,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,6,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,6,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,6,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,6,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,6,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,6,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,6,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,6,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,6,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,6,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,6,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,6,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,6,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,6,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,6,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,6,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,6,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,6,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,6,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,6,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,6,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,6,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,6,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,6,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,6,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,6,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,6,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,6,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,6,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,6,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,6,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,6,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,6,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,6,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,6,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,6,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,6,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,6,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,6,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,6,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,6,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,6,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,6,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,6,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,6,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,6,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,6,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,6,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,6,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,6,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,6,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,6,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,6,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,6,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,6,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,6,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,6,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,6,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,6,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,6,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,6,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,6,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,6,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,6,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,6,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,6,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,6,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,6,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,6,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,6,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,6,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,6,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,6,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,6,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,6,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,6,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,6,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ACK,YX,Republic Airline,6,"Nantucket, MA: Nantucket Memorial" +ALB,YX,Republic Airline,6,"Albany, NY: Albany International" +ATL,YX,Republic Airline,6,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,6,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,6,"Asheville, NC: Asheville Regional" +AVP,YX,Republic Airline,6,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,YX,Republic Airline,6,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,6,"Bangor, ME: Bangor International" +BHM,YX,Republic Airline,6,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,YX,Republic Airline,6,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,6,"Boston, MA: Logan International" +BTV,YX,Republic Airline,6,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,6,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,6,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,YX,Republic Airline,6,"Columbia, SC: Columbia Metropolitan" +CHA,YX,Republic Airline,6,"Chattanooga, TN: Lovell Field" +CHO,YX,Republic Airline,6,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,6,"Charleston, SC: Charleston AFB/International" +CID,YX,Republic Airline,6,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,YX,Republic Airline,6,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,6,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,6,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,6,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,6,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,6,"Washington, DC: Ronald Reagan Washington National" +DFW,YX,Republic Airline,6,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,YX,Republic Airline,6,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,6,"Detroit, MI: Detroit Metro Wayne County" +ECP,YX,Republic Airline,6,"Panama City, FL: Northwest Florida Beaches International" +EWR,YX,Republic Airline,6,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,6,"Key West, FL: Key West International" +GRR,YX,Republic Airline,6,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,6,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,6,"Greer, SC: Greenville-Spartanburg International" +HHH,YX,Republic Airline,6,"Hilton Head, SC: Hilton Head Airport" +HPN,YX,Republic Airline,6,"White Plains, NY: Westchester County" +HSV,YX,Republic Airline,6,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,YX,Republic Airline,6,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,6,"Houston, TX: George Bush Intercontinental/Houston" +ILM,YX,Republic Airline,6,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,6,"Indianapolis, IN: Indianapolis International" +JAX,YX,Republic Airline,6,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,6,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,6,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,6,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,6,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,6,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,6,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,6,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,6,"Manchester, NH: Manchester Boston Regional" +MIA,YX,Republic Airline,6,"Miami, FL: Miami International" +MKE,YX,Republic Airline,6,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,6,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,6,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,YX,Republic Airline,6,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,YX,Republic Airline,6,"Martha's Vineyard, MA: Martha's Vineyard Airport" +MYR,YX,Republic Airline,6,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,6,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,6,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,6,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,6,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,6,"Worcester, MA: Worcester Regional" +PHL,YX,Republic Airline,6,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,6,"Pittsburgh, PA: Pittsburgh International" +PNS,YX,Republic Airline,6,"Pensacola, FL: Pensacola International" +PVD,YX,Republic Airline,6,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,6,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,6,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,6,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,6,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,6,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,YX,Republic Airline,6,"Savannah, GA: Savannah/Hilton Head International" +SDF,YX,Republic Airline,6,"Louisville, KY: Louisville Muhammad Ali International" +STL,YX,Republic Airline,6,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,6,"Syracuse, NY: Syracuse Hancock International" +TPA,YX,Republic Airline,6,"Tampa, FL: Tampa International" +TUL,YX,Republic Airline,6,"Tulsa, OK: Tulsa International" +TVC,YX,Republic Airline,6,"Traverse City, MI: Cherry Capital" +TYS,YX,Republic Airline,6,"Knoxville, TN: McGhee Tyson" +XNA,YX,Republic Airline,6,"Fayetteville, AR: Northwest Arkansas National" +ABE,9E,Endeavor Air Inc.,5,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABY,9E,Endeavor Air Inc.,5,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,5,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,5,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,5,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,9E,Endeavor Air Inc.,5,"Appleton, WI: Appleton International" +AUS,9E,Endeavor Air Inc.,5,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,5,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,5,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,5,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,5,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,5,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BMI,9E,Endeavor Air Inc.,5,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,9E,Endeavor Air Inc.,5,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,5,"Brunswick, GA: Brunswick Golden Isles" +BTR,9E,Endeavor Air Inc.,5,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,9E,Endeavor Air Inc.,5,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,5,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,5,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,5,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,5,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,5,"Charleston, SC: Charleston AFB/International" +CLE,9E,Endeavor Air Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,5,"Columbus, OH: John Glenn Columbus International" +CSG,9E,Endeavor Air Inc.,5,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,5,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,5,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DHN,9E,Endeavor Air Inc.,5,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,5,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,5,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,5,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,5,"Newark, NJ: Newark Liberty International" +EYW,9E,Endeavor Air Inc.,5,"Key West, FL: Key West International" +FAY,9E,Endeavor Air Inc.,5,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GRB,9E,Endeavor Air Inc.,5,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,9E,Endeavor Air Inc.,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,5,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,5,"Columbus, MS: Golden Triangle Regional" +HSV,9E,Endeavor Air Inc.,5,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,9E,Endeavor Air Inc.,5,"Washington, DC: Washington Dulles International" +ICT,9E,Endeavor Air Inc.,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,9E,Endeavor Air Inc.,5,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,5,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,5,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,9E,Endeavor Air Inc.,5,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,5,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,5,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,5,"Lexington, KY: Blue Grass" +LGA,9E,Endeavor Air Inc.,5,"New York, NY: LaGuardia" +LSE,9E,Endeavor Air Inc.,5,"La Crosse, WI: La Crosse Regional" +MBS,9E,Endeavor Air Inc.,5,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,5,"Kansas City, MO: Kansas City International" +MDT,9E,Endeavor Air Inc.,5,"Harrisburg, PA: Harrisburg International" +MEM,9E,Endeavor Air Inc.,5,"Memphis, TN: Memphis International" +MKE,9E,Endeavor Air Inc.,5,"Milwaukee, WI: General Mitchell International" +MLU,9E,Endeavor Air Inc.,5,"Monroe, LA: Monroe Regional" +MQT,9E,Endeavor Air Inc.,5,"Marquette, MI: Marquette Sawyer Regional" +MSP,9E,Endeavor Air Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MYR,9E,Endeavor Air Inc.,5,"Myrtle Beach, SC: Myrtle Beach International" +OKC,9E,Endeavor Air Inc.,5,"Oklahoma City, OK: Will Rogers World" +ORF,9E,Endeavor Air Inc.,5,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,5,"Worcester, MA: Worcester Regional" +PIT,9E,Endeavor Air Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,5,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,5,"Portland, ME: Portland International Jetport" +RDU,9E,Endeavor Air Inc.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,5,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,5,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,9E,Endeavor Air Inc.,5,"Savannah, GA: Savannah/Hilton Head International" +SCE,9E,Endeavor Air Inc.,5,"State College, PA: University Park" +SDF,9E,Endeavor Air Inc.,5,"Louisville, KY: Louisville Muhammad Ali International" +SGF,9E,Endeavor Air Inc.,5,"Springfield, MO: Springfield-Branson National" +SHV,9E,Endeavor Air Inc.,5,"Shreveport, LA: Shreveport Regional" +STL,9E,Endeavor Air Inc.,5,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,5,"Syracuse, NY: Syracuse Hancock International" +TRI,9E,Endeavor Air Inc.,5,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TYS,9E,Endeavor Air Inc.,5,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,5,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,5,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,5,"Albuquerque, NM: Albuquerque International Sunport" +ALB,AA,American Airlines Inc.,5,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,5,"Amarillo, TX: Rick Husband Amarillo International" +ANC,AA,American Airlines Inc.,5,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AA,American Airlines Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,5,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,5,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,5,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,5,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,5,"Bakersfield, CA: Meadows Field" +BHM,AA,American Airlines Inc.,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,5,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,5,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,5,"Boston, MA: Logan International" +BUF,AA,American Airlines Inc.,5,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,5,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,5,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,5,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,5,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,5,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,5,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,5,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,5,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,5,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,AA,American Airlines Inc.,5,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,5,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,5,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,5,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,5,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,5,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,5,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,5,"Fresno, CA: Fresno Yosemite International" +FLL,AA,American Airlines Inc.,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,AA,American Airlines Inc.,5,"Sioux Falls, SD: Joe Foss Field" +GEG,AA,American Airlines Inc.,5,"Spokane, WA: Spokane International" +GRR,AA,American Airlines Inc.,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,5,"Greer, SC: Greenville-Spartanburg International" +HNL,AA,American Airlines Inc.,5,"Honolulu, HI: Daniel K Inouye International" +IAD,AA,American Airlines Inc.,5,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,5,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,5,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,5,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,5,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,5,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,5,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,5,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,5,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,5,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,5,"Lubbock, TX: Lubbock Preston Smith International" +LEX,AA,American Airlines Inc.,5,"Lexington, KY: Blue Grass" +LGA,AA,American Airlines Inc.,5,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,5,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,5,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,5,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,5,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,5,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,5,"Mission/McAllen/Edinburg, TX: McAllen International" +MIA,AA,American Airlines Inc.,5,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,5,"Milwaukee, WI: General Mitchell International" +MRY,AA,American Airlines Inc.,5,"Monterey, CA: Monterey Regional" +MSN,AA,American Airlines Inc.,5,"Madison, WI: Dane County Regional-Truax Field" +MSP,AA,American Airlines Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,5,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,5,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,5,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,5,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,5,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,5,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,5,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,5,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,5,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,5,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,5,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,5,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,5,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,5,"Portland, ME: Portland International Jetport" +RDU,AA,American Airlines Inc.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,5,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,5,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,5,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,5,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,5,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,5,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,5,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,5,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,5,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,5,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,5,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,5,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,5,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,5,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,5,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,5,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,5,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,5,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,5,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,5,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,5,"Tucson, AZ: Tucson International" +TYS,AA,American Airlines Inc.,5,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,5,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,5,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,5,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,5,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,5,"Kodiak, AK: Kodiak Airport" +AKN,AS,Alaska Airlines Inc.,5,"King Salmon, AK: King Salmon Airport" +ANC,AS,Alaska Airlines Inc.,5,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,5,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,5,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,5,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,5,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,5,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,5,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,5,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,5,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,5,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,5,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,5,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,5,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,5,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLG,AS,Alaska Airlines Inc.,5,"Dillingham, AK: Dillingham Airport" +DTW,AS,Alaska Airlines Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,5,"El Paso, TX: El Paso International" +EUG,AS,Alaska Airlines Inc.,5,"Eugene, OR: Mahlon Sweet Field" +EWR,AS,Alaska Airlines Inc.,5,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,5,"Fairbanks, AK: Fairbanks International" +FAT,AS,Alaska Airlines Inc.,5,"Fresno, CA: Fresno Yosemite International" +FLL,AS,Alaska Airlines Inc.,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,5,"Spokane, WA: Spokane International" +HNL,AS,Alaska Airlines Inc.,5,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,5,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,5,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,5,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,5,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,5,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,5,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,5,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,5,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,5,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,5,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,5,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,5,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,5,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,5,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,5,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,5,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,5,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,5,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,5,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,5,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,5,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,5,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,5,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,5,"Kotzebue, AK: Ralph Wien Memorial" +PAE,AS,Alaska Airlines Inc.,5,"Everett, WA: Snohomish County" +PDX,AS,Alaska Airlines Inc.,5,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,5,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PSC,AS,Alaska Airlines Inc.,5,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSG,AS,Alaska Airlines Inc.,5,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,5,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,5,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,5,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,5,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,5,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,5,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,5,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,5,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,5,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,5,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,5,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,5,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,5,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,5,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,5,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,5,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,5,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,5,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,5,"Yakutat, AK: Yakutat Airport" +ABQ,B6,JetBlue Airways,5,"Albuquerque, NM: Albuquerque International Sunport" +ACK,B6,JetBlue Airways,5,"Nantucket, MA: Nantucket Memorial" +ALB,B6,JetBlue Airways,5,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,5,"Austin, TX: Austin - Bergstrom International" +BDL,B6,JetBlue Airways,5,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,5,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,5,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,5,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,5,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,5,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,5,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,B6,JetBlue Airways,5,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,5,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,5,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,5,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,5,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,5,"Newark, NJ: Newark Liberty International" +EYW,B6,JetBlue Airways,5,"Key West, FL: Key West International" +FLL,B6,JetBlue Airways,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HPN,B6,JetBlue Airways,5,"White Plains, NY: Westchester County" +HYA,B6,JetBlue Airways,5,"Hyannis, MA: Cape Cod Gateway" +IAH,B6,JetBlue Airways,5,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,5,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,5,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,5,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,5,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,5,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,5,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,5,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,5,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,5,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,B6,JetBlue Airways,5,"Martha's Vineyard, MA: Martha's Vineyard Airport" +ONT,B6,JetBlue Airways,5,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,5,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,5,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,B6,JetBlue Airways,5,"Portland, OR: Portland International" +PHL,B6,JetBlue Airways,5,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,5,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,5,"Ponce, PR: Mercedita" +PSP,B6,JetBlue Airways,5,"Palm Springs, CA: Palm Springs International" +PVD,B6,JetBlue Airways,5,"Providence, RI: Rhode Island Tf Green International" +PWM,B6,JetBlue Airways,5,"Portland, ME: Portland International Jetport" +RDU,B6,JetBlue Airways,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,5,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,5,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,5,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,5,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,5,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,5,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,5,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,5,"San Francisco, CA: San Francisco International" +SJC,B6,JetBlue Airways,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,B6,JetBlue Airways,5,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,5,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,5,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,5,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,5,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,5,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,5,"Albuquerque, NM: Albuquerque International Sunport" +ALB,DL,Delta Air Lines Inc.,5,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,5,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,5,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,5,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,5,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,5,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,5,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,5,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,5,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,5,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,5,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,5,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,5,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,5,"Buffalo, NY: Buffalo Niagara International" +BUR,DL,Delta Air Lines Inc.,5,"Burbank, CA: Bob Hope" +BWI,DL,Delta Air Lines Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,5,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,5,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,5,"Chattanooga, TN: Lovell Field" +CHO,DL,Delta Air Lines Inc.,5,"Charlottesville, VA: Charlottesville Albemarle" +CHS,DL,Delta Air Lines Inc.,5,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,5,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,5,"Columbus, OH: John Glenn Columbus International" +CVG,DL,Delta Air Lines Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,5,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,5,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,5,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,5,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLH,DL,Delta Air Lines Inc.,5,"Duluth, MN: Duluth International" +DSM,DL,Delta Air Lines Inc.,5,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,5,"Panama City, FL: Northwest Florida Beaches International" +ELP,DL,Delta Air Lines Inc.,5,"El Paso, TX: El Paso International" +EUG,DL,Delta Air Lines Inc.,5,"Eugene, OR: Mahlon Sweet Field" +EVV,DL,Delta Air Lines Inc.,5,"Evansville, IN: Evansville Regional" +EWR,DL,Delta Air Lines Inc.,5,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,5,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,5,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,5,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,5,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,5,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,5,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,5,"Spokane, WA: Spokane International" +GFK,DL,Delta Air Lines Inc.,5,"Grand Forks, ND: Grand Forks International" +GNV,DL,Delta Air Lines Inc.,5,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,5,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,5,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,5,"Greer, SC: Greenville-Spartanburg International" +HNL,DL,Delta Air Lines Inc.,5,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,5,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,5,"White Plains, NY: Westchester County" +HRL,DL,Delta Air Lines Inc.,5,"Harlingen/San Benito, TX: Valley International" +HSV,DL,Delta Air Lines Inc.,5,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,5,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,5,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,5,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,5,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,5,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,5,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,5,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,5,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,5,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,5,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,5,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,5,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,5,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,5,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,5,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,5,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,5,"Orlando, FL: Orlando International" +MDT,DL,Delta Air Lines Inc.,5,"Harrisburg, PA: Harrisburg International" +MDW,DL,Delta Air Lines Inc.,5,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,5,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,5,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,5,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,5,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,5,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,5,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,5,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,DL,Delta Air Lines Inc.,5,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,5,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,5,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,5,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,5,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,5,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,5,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,5,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,5,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,5,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,5,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,5,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,5,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,DL,Delta Air Lines Inc.,5,"Palm Springs, CA: Palm Springs International" +PVD,DL,Delta Air Lines Inc.,5,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,5,"Portland, ME: Portland International Jetport" +RDU,DL,Delta Air Lines Inc.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,5,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,5,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,5,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,5,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,5,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,5,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,5,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,5,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,5,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,5,"San Francisco, CA: San Francisco International" +SGF,DL,Delta Air Lines Inc.,5,"Springfield, MO: Springfield-Branson National" +SJC,DL,Delta Air Lines Inc.,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,5,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,5,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,5,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,5,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,5,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,5,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,5,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,5,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,5,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,5,"Tampa, FL: Tampa International" +TUL,DL,Delta Air Lines Inc.,5,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,5,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,5,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,5,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,5,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,5,"Fayetteville, AR: Northwest Arkansas National" +ATL,F9,Frontier Airlines Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,5,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,5,"Hartford, CT: Bradley International" +BFF,F9,Frontier Airlines Inc.,5,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BMI,F9,Frontier Airlines Inc.,5,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,5,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,5,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,5,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,5,"Buffalo, NY: Buffalo Niagara International" +BWI,F9,Frontier Airlines Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,F9,Frontier Airlines Inc.,5,"Charleston, SC: Charleston AFB/International" +CID,F9,Frontier Airlines Inc.,5,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,5,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,5,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,5,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,5,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,5,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,5,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,5,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,5,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,5,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,5,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,5,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,5,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,5,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,5,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,5,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,5,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,5,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,5,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,5,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,5,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,5,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,5,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,5,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,F9,Frontier Airlines Inc.,5,"Myrtle Beach, SC: Myrtle Beach International" +OAK,F9,Frontier Airlines Inc.,5,"Oakland, CA: Metro Oakland International" +OKC,F9,Frontier Airlines Inc.,5,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,5,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,5,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,5,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,5,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,5,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,5,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,5,"Pensacola, FL: Pensacola International" +PSE,F9,Frontier Airlines Inc.,5,"Ponce, PR: Mercedita" +PWM,F9,Frontier Airlines Inc.,5,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +ROC,F9,Frontier Airlines Inc.,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,F9,Frontier Airlines Inc.,5,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,5,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,5,"San Antonio, TX: San Antonio International" +SAV,F9,Frontier Airlines Inc.,5,"Savannah, GA: Savannah/Hilton Head International" +SEA,F9,Frontier Airlines Inc.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,5,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,5,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,5,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,5,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,5,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,5,"St. Louis, MO: St Louis Lambert International" +SWF,F9,Frontier Airlines Inc.,5,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,F9,Frontier Airlines Inc.,5,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,5,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,5,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,5,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,5,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,5,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,5,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,5,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,5,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,5,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,5,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,5,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,5,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,5,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,5,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,5,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,5,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,5,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,5,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,5,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,5,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,5,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,5,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,5,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,5,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,5,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,5,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,5,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,5,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,5,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,5,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,5,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,5,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,5,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,5,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,5,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,5,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,5,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,5,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,5,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,5,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,5,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,5,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,5,"Grand Junction, CO: Grand Junction Regional" +GPT,G4,Allegiant Air,5,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRI,G4,Allegiant Air,5,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,5,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,5,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,5,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,5,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,5,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,5,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,5,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,5,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,5,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,5,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,5,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,5,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,5,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,5,"Lexington, KY: Blue Grass" +LIT,G4,Allegiant Air,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,G4,Allegiant Air,5,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,5,"Kansas City, MO: Kansas City International" +MDT,G4,Allegiant Air,5,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,5,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,5,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,5,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,G4,Allegiant Air,5,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,5,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,5,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,5,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,5,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,5,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,5,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,5,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,5,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,5,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,5,"Norfolk, VA: Norfolk International" +OWB,G4,Allegiant Air,5,"Owensboro, KY: Owensboro Daviess County Regional" +PBG,G4,Allegiant Air,5,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,5,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,5,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,5,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,5,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,5,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,5,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,5,"Portsmouth, NH: Portsmouth International at Pease" +PSP,G4,Allegiant Air,5,"Palm Springs, CA: Palm Springs International" +PVD,G4,Allegiant Air,5,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,5,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,5,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,5,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,5,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,5,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,5,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,5,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,5,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,5,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,5,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,5,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,5,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,5,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,5,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,5,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,5,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,5,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,5,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STC,G4,Allegiant Air,5,"St. Cloud, MN: St. Cloud Regional" +SWF,G4,Allegiant Air,5,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,5,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,5,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,5,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,5,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,5,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,5,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,5,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,5,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,5,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,5,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,5,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,5,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,5,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,5,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,5,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,5,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,5,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,5,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,5,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,5,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,5,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,5,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,5,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,5,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,5,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,5,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,5,"Sacramento, CA: Sacramento International" +ABI,MQ,Envoy Air,5,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,5,"Albuquerque, NM: Albuquerque International Sunport" +AGS,MQ,Envoy Air,5,"Augusta, GA: Augusta Regional at Bush Field" +AMA,MQ,Envoy Air,5,"Amarillo, TX: Rick Husband Amarillo International" +AUS,MQ,Envoy Air,5,"Austin, TX: Austin - Bergstrom International" +AVP,MQ,Envoy Air,5,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BFL,MQ,Envoy Air,5,"Bakersfield, CA: Meadows Field" +BHM,MQ,Envoy Air,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,5,"Billings, MT: Billings Logan International" +BMI,MQ,Envoy Air,5,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,5,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,5,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,5,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,5,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,MQ,Envoy Air,5,"Buffalo, NY: Buffalo Niagara International" +BUR,MQ,Envoy Air,5,"Burbank, CA: Bob Hope" +BWI,MQ,Envoy Air,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,MQ,Envoy Air,5,"Bozeman, MT: Bozeman Yellowstone International" +CHA,MQ,Envoy Air,5,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,5,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,5,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,5,"Cleveland, OH: Cleveland-Hopkins International" +CLL,MQ,Envoy Air,5,"College Station/Bryan, TX: Easterwood Field" +CLT,MQ,Envoy Air,5,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,5,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,5,"Champaign/Urbana, IL: University of Illinois/Willard" +COS,MQ,Envoy Air,5,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,MQ,Envoy Air,5,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,5,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,MQ,Envoy Air,5,"Mosinee, WI: Central Wisconsin" +DAB,MQ,Envoy Air,5,"Daytona Beach, FL: Daytona Beach International" +DAY,MQ,Envoy Air,5,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,5,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,MQ,Envoy Air,5,"Durango, CO: Durango La Plata County" +DSM,MQ,Envoy Air,5,"Des Moines, IA: Des Moines International" +DTW,MQ,Envoy Air,5,"Detroit, MI: Detroit Metro Wayne County" +ECP,MQ,Envoy Air,5,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,5,"El Paso, TX: El Paso International" +EUG,MQ,Envoy Air,5,"Eugene, OR: Mahlon Sweet Field" +EVV,MQ,Envoy Air,5,"Evansville, IN: Evansville Regional" +EWR,MQ,Envoy Air,5,"Newark, NJ: Newark Liberty International" +EYW,MQ,Envoy Air,5,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,5,"Fargo, ND: Hector International" +FAT,MQ,Envoy Air,5,"Fresno, CA: Fresno Yosemite International" +FAY,MQ,Envoy Air,5,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,MQ,Envoy Air,5,"Kalispell, MT: Glacier Park International" +FNT,MQ,Envoy Air,5,"Flint, MI: Bishop International" +FSD,MQ,Envoy Air,5,"Sioux Falls, SD: Joe Foss Field" +FSM,MQ,Envoy Air,5,"Fort Smith, AR: Fort Smith Regional" +FWA,MQ,Envoy Air,5,"Fort Wayne, IN: Fort Wayne International" +GJT,MQ,Envoy Air,5,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,5,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,5,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,5,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,5,"Killeen, TX: Robert Gray AAF" +GRR,MQ,Envoy Air,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,MQ,Envoy Air,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,5,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,5,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,5,"Houston, TX: William P Hobby" +HPN,MQ,Envoy Air,5,"White Plains, NY: Westchester County" +HRL,MQ,Envoy Air,5,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,5,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,MQ,Envoy Air,5,"Washington, DC: Washington Dulles International" +IAH,MQ,Envoy Air,5,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,MQ,Envoy Air,5,"Wilmington, NC: Wilmington International" +IND,MQ,Envoy Air,5,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,5,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,5,"Jacksonville, FL: Jacksonville International" +LBB,MQ,Envoy Air,5,"Lubbock, TX: Lubbock Preston Smith International" +LEX,MQ,Envoy Air,5,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,5,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,MQ,Envoy Air,5,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,5,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,5,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,5,"Montgomery, AL: Montgomery Regional" +MHK,MQ,Envoy Air,5,"Manhattan/Ft. Riley, KS: Manhattan Regional" +MIA,MQ,Envoy Air,5,"Miami, FL: Miami International" +MLI,MQ,Envoy Air,5,"Moline, IL: Quad Cities International" +MOB,MQ,Envoy Air,5,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,5,"Marquette, MI: Marquette Sawyer Regional" +MSN,MQ,Envoy Air,5,"Madison, WI: Dane County Regional-Truax Field" +MSO,MQ,Envoy Air,5,"Missoula, MT: Missoula Montana" +MSP,MQ,Envoy Air,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,MQ,Envoy Air,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,MQ,Envoy Air,5,"Montrose/Delta, CO: Montrose Regional" +MYR,MQ,Envoy Air,5,"Myrtle Beach, SC: Myrtle Beach International" +OKC,MQ,Envoy Air,5,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,5,"Omaha, NE: Eppley Airfield" +ONT,MQ,Envoy Air,5,"Ontario, CA: Ontario International" +ORD,MQ,Envoy Air,5,"Chicago, IL: Chicago O'Hare International" +ORF,MQ,Envoy Air,5,"Norfolk, VA: Norfolk International" +PHX,MQ,Envoy Air,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,5,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,5,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,5,"Pensacola, FL: Pensacola International" +PSP,MQ,Envoy Air,5,"Palm Springs, CA: Palm Springs International" +PVD,MQ,Envoy Air,5,"Providence, RI: Rhode Island Tf Green International" +RAP,MQ,Envoy Air,5,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,MQ,Envoy Air,5,"Richmond, VA: Richmond International" +RNO,MQ,Envoy Air,5,"Reno, NV: Reno/Tahoe International" +ROC,MQ,Envoy Air,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,MQ,Envoy Air,5,"Rochester, MN: Rochester International" +RSW,MQ,Envoy Air,5,"Fort Myers, FL: Southwest Florida International" +SAV,MQ,Envoy Air,5,"Savannah, GA: Savannah/Hilton Head International" +SBA,MQ,Envoy Air,5,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,MQ,Envoy Air,5,"San Luis Obispo, CA: San Luis County Regional" +SDF,MQ,Envoy Air,5,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,5,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,5,"Shreveport, LA: Shreveport Regional" +SJC,MQ,Envoy Air,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,MQ,Envoy Air,5,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,MQ,Envoy Air,5,"Salt Lake City, UT: Salt Lake City International" +SMF,MQ,Envoy Air,5,"Sacramento, CA: Sacramento International" +STL,MQ,Envoy Air,5,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,5,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TLH,MQ,Envoy Air,5,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,5,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,5,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,5,"Tulsa, OK: Tulsa International" +TVC,MQ,Envoy Air,5,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,5,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,5,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,5,"Fayetteville, AR: Northwest Arkansas National" +YUM,MQ,Envoy Air,5,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,NK,Spirit Air Lines,5,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,5,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,5,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,5,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,5,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,5,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,5,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,5,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,5,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,NK,Spirit Air Lines,5,"Charleston, SC: Charleston AFB/International" +CLE,NK,Spirit Air Lines,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,5,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,5,"Columbus, OH: John Glenn Columbus International" +CRW,NK,Spirit Air Lines,5,"Charleston/Dunbar, WV: West Virginia International Yeager" +DEN,NK,Spirit Air Lines,5,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,5,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,5,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,5,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,5,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,5,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,5,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,5,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,5,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,5,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,5,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,5,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,5,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,5,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,5,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,5,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,5,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,5,"Chicago, IL: Chicago O'Hare International" +ORF,NK,Spirit Air Lines,5,"Norfolk, VA: Norfolk International" +PBI,NK,Spirit Air Lines,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,5,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,5,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,5,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,5,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,5,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,5,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,5,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,5,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,5,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,5,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,5,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,5,"Seattle, WA: Seattle/Tacoma International" +SJU,NK,Spirit Air Lines,5,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,5,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,5,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,5,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,5,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,5,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,5,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,5,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,5,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,5,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,5,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,5,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,5,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,5,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,5,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,5,"Nashville, TN: Nashville International" +BRO,OH,PSA Airlines Inc.,5,"Brownsville, TX: Brownsville South Padre Island International" +BTR,OH,PSA Airlines Inc.,5,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,5,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,5,"Buffalo, NY: Buffalo Niagara International" +BWI,OH,PSA Airlines Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,OH,PSA Airlines Inc.,5,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,5,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,5,"Chattanooga, TN: Lovell Field" +CHO,OH,PSA Airlines Inc.,5,"Charlottesville, VA: Charlottesville Albemarle" +CHS,OH,PSA Airlines Inc.,5,"Charleston, SC: Charleston AFB/International" +CLE,OH,PSA Airlines Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,5,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,5,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,5,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,5,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DFW,OH,PSA Airlines Inc.,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,OH,PSA Airlines Inc.,5,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,5,"Panama City, FL: Northwest Florida Beaches International" +EWN,OH,PSA Airlines Inc.,5,"New Bern/Morehead/Beaufort, NC: Coastal Carolina Regional" +FAY,OH,PSA Airlines Inc.,5,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GPT,OH,PSA Airlines Inc.,5,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,5,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,5,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,5,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,OH,PSA Airlines Inc.,5,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,5,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,5,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,5,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,5,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,5,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,5,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,5,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,5,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,5,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,5,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,5,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,5,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,5,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,5,"Melbourne, FL: Melbourne Orlando International" +MSP,OH,PSA Airlines Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,5,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,OH,PSA Airlines Inc.,5,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OKC,OH,PSA Airlines Inc.,5,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,5,"Norfolk, VA: Norfolk International" +PGV,OH,PSA Airlines Inc.,5,"Greenville, NC: Pitt Greenville" +PHL,OH,PSA Airlines Inc.,5,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,5,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,5,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,5,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,5,"Portland, ME: Portland International Jetport" +RDU,OH,PSA Airlines Inc.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,OH,PSA Airlines Inc.,5,"Richmond, VA: Richmond International" +ROA,OH,PSA Airlines Inc.,5,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OH,PSA Airlines Inc.,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,OH,PSA Airlines Inc.,5,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,5,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,5,"Louisville, KY: Louisville Muhammad Ali International" +SGF,OH,PSA Airlines Inc.,5,"Springfield, MO: Springfield-Branson National" +SHV,OH,PSA Airlines Inc.,5,"Shreveport, LA: Shreveport Regional" +STL,OH,PSA Airlines Inc.,5,"St. Louis, MO: St Louis Lambert International" +SYR,OH,PSA Airlines Inc.,5,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,5,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,5,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,5,"Tulsa, OK: Tulsa International" +TYS,OH,PSA Airlines Inc.,5,"Knoxville, TN: McGhee Tyson" +VPS,OH,PSA Airlines Inc.,5,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ABE,OO,SkyWest Airlines Inc.,5,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,5,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,5,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,5,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,5,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,5,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,5,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,5,"Albany, NY: Albany International" +ALW,OO,SkyWest Airlines Inc.,5,"Walla Walla, WA: Walla Walla Regional" +AMA,OO,SkyWest Airlines Inc.,5,"Amarillo, TX: Rick Husband Amarillo International" +APN,OO,SkyWest Airlines Inc.,5,"Alpena, MI: Alpena County Regional" +ASE,OO,SkyWest Airlines Inc.,5,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,5,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,5,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,5,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,5,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BFF,OO,SkyWest Airlines Inc.,5,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,5,"Bakersfield, CA: Meadows Field" +BHM,OO,SkyWest Airlines Inc.,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,OO,SkyWest Airlines Inc.,5,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,5,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,5,"Bemidji, MN: Bemidji Regional" +BLI,OO,SkyWest Airlines Inc.,5,"Bellingham, WA: Bellingham International" +BMI,OO,SkyWest Airlines Inc.,5,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,5,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,5,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,5,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,5,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,5,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,5,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,5,"Butte, MT: Bert Mooney" +BUF,OO,SkyWest Airlines Inc.,5,"Buffalo, NY: Buffalo Niagara International" +BUR,OO,SkyWest Airlines Inc.,5,"Burbank, CA: Bob Hope" +BWI,OO,SkyWest Airlines Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,OO,SkyWest Airlines Inc.,5,"Bozeman, MT: Bozeman Yellowstone International" +CAE,OO,SkyWest Airlines Inc.,5,"Columbia, SC: Columbia Metropolitan" +CAK,OO,SkyWest Airlines Inc.,5,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,5,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,5,"Chattanooga, TN: Lovell Field" +CHS,OO,SkyWest Airlines Inc.,5,"Charleston, SC: Charleston AFB/International" +CID,OO,SkyWest Airlines Inc.,5,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,5,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,5,"College Station/Bryan, TX: Easterwood Field" +CLT,OO,SkyWest Airlines Inc.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,OO,SkyWest Airlines Inc.,5,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,5,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,5,"Moab, UT: Canyonlands Regional" +COS,OO,SkyWest Airlines Inc.,5,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,OO,SkyWest Airlines Inc.,5,"Columbia, MO: Columbia Regional" +CPR,OO,SkyWest Airlines Inc.,5,"Casper, WY: Casper/Natrona County International" +CRP,OO,SkyWest Airlines Inc.,5,"Corpus Christi, TX: Corpus Christi International" +CRW,OO,SkyWest Airlines Inc.,5,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OO,SkyWest Airlines Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,OO,SkyWest Airlines Inc.,5,"Dayton, OH: James M Cox/Dayton International" +DCA,OO,SkyWest Airlines Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,5,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,5,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,5,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,5,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,5,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,5,"Durango, CO: Durango La Plata County" +DSM,OO,SkyWest Airlines Inc.,5,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,5,"Devils Lake, ND: Devils Lake Regional" +ECP,OO,SkyWest Airlines Inc.,5,"Panama City, FL: Northwest Florida Beaches International" +EGE,OO,SkyWest Airlines Inc.,5,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,5,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,5,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,5,"El Paso, TX: El Paso International" +ERI,OO,SkyWest Airlines Inc.,5,"Erie, PA: Erie International/Tom Ridge Field" +ESC,OO,SkyWest Airlines Inc.,5,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,5,"Eugene, OR: Mahlon Sweet Field" +EVV,OO,SkyWest Airlines Inc.,5,"Evansville, IN: Evansville Regional" +EWR,OO,SkyWest Airlines Inc.,5,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,5,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,5,"Fresno, CA: Fresno Yosemite International" +FAY,OO,SkyWest Airlines Inc.,5,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,OO,SkyWest Airlines Inc.,5,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,5,"Flagstaff, AZ: Flagstaff Pulliam" +FNT,OO,SkyWest Airlines Inc.,5,"Flint, MI: Bishop International" +FOD,OO,SkyWest Airlines Inc.,5,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,5,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,5,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,5,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,5,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,5,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,5,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,5,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,5,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,5,"Grand Junction, CO: Grand Junction Regional" +GPT,OO,SkyWest Airlines Inc.,5,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,OO,SkyWest Airlines Inc.,5,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,5,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,5,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OO,SkyWest Airlines Inc.,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OO,SkyWest Airlines Inc.,5,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,5,"Great Falls, MT: Great Falls International" +GUC,OO,SkyWest Airlines Inc.,5,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,5,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,5,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,5,"Helena, MT: Helena Regional" +HOU,OO,SkyWest Airlines Inc.,5,"Houston, TX: William P Hobby" +HPN,OO,SkyWest Airlines Inc.,5,"White Plains, NY: Westchester County" +HRL,OO,SkyWest Airlines Inc.,5,"Harlingen/San Benito, TX: Valley International" +HSV,OO,SkyWest Airlines Inc.,5,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,5,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,5,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,5,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,5,"Idaho Falls, ID: Idaho Falls Regional" +IMT,OO,SkyWest Airlines Inc.,5,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,5,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,5,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,5,"Jackson, WY: Jackson Hole" +JAN,OO,SkyWest Airlines Inc.,5,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OO,SkyWest Airlines Inc.,5,"Jacksonville, FL: Jacksonville International" +JFK,OO,SkyWest Airlines Inc.,5,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,5,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,5,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,5,"Johnstown, PA: John Murtha Johnstown-Cambria County" +LAR,OO,SkyWest Airlines Inc.,5,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,5,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,5,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,5,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,5,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,5,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,5,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,5,"Lake Charles, LA: Lake Charles Regional" +LEX,OO,SkyWest Airlines Inc.,5,"Lexington, KY: Blue Grass" +LFT,OO,SkyWest Airlines Inc.,5,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,5,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,5,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,5,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,5,"Laredo, TX: Laredo International" +LWS,OO,SkyWest Airlines Inc.,5,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,5,"Midland/Odessa, TX: Midland International Air and Space Port" +MBS,OO,SkyWest Airlines Inc.,5,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,OO,SkyWest Airlines Inc.,5,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,5,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,5,"Harrisburg, PA: Harrisburg International" +MDW,OO,SkyWest Airlines Inc.,5,"Chicago, IL: Chicago Midway International" +MEI,OO,SkyWest Airlines Inc.,5,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,5,"Memphis, TN: Memphis International" +MFE,OO,SkyWest Airlines Inc.,5,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,OO,SkyWest Airlines Inc.,5,"Medford, OR: Rogue Valley International - Medford" +MGM,OO,SkyWest Airlines Inc.,5,"Montgomery, AL: Montgomery Regional" +MKE,OO,SkyWest Airlines Inc.,5,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,5,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,5,"Monroe, LA: Monroe Regional" +MOB,OO,SkyWest Airlines Inc.,5,"Mobile, AL: Mobile Regional" +MOT,OO,SkyWest Airlines Inc.,5,"Minot, ND: Minot International" +MQT,OO,SkyWest Airlines Inc.,5,"Marquette, MI: Marquette Sawyer Regional" +MRY,OO,SkyWest Airlines Inc.,5,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,5,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,5,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MTJ,OO,SkyWest Airlines Inc.,5,"Montrose/Delta, CO: Montrose Regional" +OAJ,OO,SkyWest Airlines Inc.,5,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,OO,SkyWest Airlines Inc.,5,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,5,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,5,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,5,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,5,"Chicago, IL: Chicago O'Hare International" +OTH,OO,SkyWest Airlines Inc.,5,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PDX,OO,SkyWest Airlines Inc.,5,"Portland, OR: Portland International" +PHX,OO,SkyWest Airlines Inc.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,OO,SkyWest Airlines Inc.,5,"Peoria, IL: General Downing - Peoria International" +PIB,OO,SkyWest Airlines Inc.,5,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,5,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,5,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,5,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,5,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,5,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,5,"Palm Springs, CA: Palm Springs International" +PVD,OO,SkyWest Airlines Inc.,5,"Providence, RI: Rhode Island Tf Green International" +PWM,OO,SkyWest Airlines Inc.,5,"Portland, ME: Portland International Jetport" +RAP,OO,SkyWest Airlines Inc.,5,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,5,"Redding, CA: Redding Regional" +RDM,OO,SkyWest Airlines Inc.,5,"Bend/Redmond, OR: Roberts Field" +RHI,OO,SkyWest Airlines Inc.,5,"Rhinelander, WI: Rhinelander/Oneida County" +RIC,OO,SkyWest Airlines Inc.,5,"Richmond, VA: Richmond International" +RIW,OO,SkyWest Airlines Inc.,5,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,5,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,5,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,5,"Roanoke, VA: Roanoke Blacksburg Regional" +ROW,OO,SkyWest Airlines Inc.,5,"Roswell, NM: Roswell Air Center" +RST,OO,SkyWest Airlines Inc.,5,"Rochester, MN: Rochester International" +SAF,OO,SkyWest Airlines Inc.,5,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,5,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,5,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,5,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,5,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,5,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,5,"San Luis Obispo, CA: San Luis County Regional" +SCE,OO,SkyWest Airlines Inc.,5,"State College, PA: University Park" +SDF,OO,SkyWest Airlines Inc.,5,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,5,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,5,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,5,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,5,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,5,"Shreveport, LA: Shreveport Regional" +SJC,OO,SkyWest Airlines Inc.,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,5,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,5,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,5,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,5,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,5,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,OO,SkyWest Airlines Inc.,5,"Springfield, IL: Abraham Lincoln Capital" +SPS,OO,SkyWest Airlines Inc.,5,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +SRQ,OO,SkyWest Airlines Inc.,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OO,SkyWest Airlines Inc.,5,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,5,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,5,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,5,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,5,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,5,"Syracuse, NY: Syracuse Hancock International" +TUL,OO,SkyWest Airlines Inc.,5,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,5,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,5,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,5,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,5,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,5,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,5,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,5,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,5,"Vernal, UT: Vernal Regional" +WYS,OO,SkyWest Airlines Inc.,5,"West Yellowstone, MT: Yellowstone" +XNA,OO,SkyWest Airlines Inc.,5,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,5,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,5,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,5,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,5,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,5,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,5,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,5,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,5,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,5,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,5,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,5,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,5,"Aguadilla, PR: Rafael Hernandez" +BTV,UA,United Air Lines Inc.,5,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,5,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,5,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,5,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,5,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,5,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,5,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,5,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,5,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,5,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,UA,United Air Lines Inc.,5,"Durango, CO: Durango La Plata County" +DSM,UA,United Air Lines Inc.,5,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,5,"Detroit, MI: Detroit Metro Wayne County" +ELP,UA,United Air Lines Inc.,5,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,5,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,5,"Newark, NJ: Newark Liberty International" +FAT,UA,United Air Lines Inc.,5,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,5,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,5,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,5,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,5,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,5,"Grand Rapids, MI: Gerald R. Ford International" +GSP,UA,United Air Lines Inc.,5,"Greer, SC: Greenville-Spartanburg International" +GUM,UA,United Air Lines Inc.,5,"Guam, TT: Guam International" +HNL,UA,United Air Lines Inc.,5,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,5,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,5,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,5,"Indianapolis, IN: Indianapolis International" +JAC,UA,United Air Lines Inc.,5,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,5,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,5,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,5,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,5,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,5,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,5,"Lihue, HI: Lihue Airport" +MAF,UA,United Air Lines Inc.,5,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,UA,United Air Lines Inc.,5,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,5,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,5,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,5,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,5,"Mission/McAllen/Edinburg, TX: McAllen International" +MFR,UA,United Air Lines Inc.,5,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,5,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,5,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,5,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,5,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,UA,United Air Lines Inc.,5,"Myrtle Beach, SC: Myrtle Beach International" +OGG,UA,United Air Lines Inc.,5,"Kahului, HI: Kahului Airport" +OMA,UA,United Air Lines Inc.,5,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,5,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,5,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,5,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,5,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,5,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,5,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,5,"Pensacola, FL: Pensacola International" +PSP,UA,United Air Lines Inc.,5,"Palm Springs, CA: Palm Springs International" +PVD,UA,United Air Lines Inc.,5,"Providence, RI: Rhode Island Tf Green International" +PWM,UA,United Air Lines Inc.,5,"Portland, ME: Portland International Jetport" +RAP,UA,United Air Lines Inc.,5,"Rapid City, SD: Rapid City Regional" +RDM,UA,United Air Lines Inc.,5,"Bend/Redmond, OR: Roberts Field" +RDU,UA,United Air Lines Inc.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,5,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,5,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,5,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,5,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,5,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,5,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,5,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,5,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,5,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,5,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,5,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,5,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,5,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,5,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,5,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,5,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,5,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,5,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,5,"Tulsa, OK: Tulsa International" +TUS,UA,United Air Lines Inc.,5,"Tucson, AZ: Tucson International" +TVC,UA,United Air Lines Inc.,5,"Traverse City, MI: Cherry Capital" +ABQ,WN,Southwest Airlines Co.,5,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,5,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,5,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,5,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,5,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,5,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,5,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,5,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,5,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,5,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,5,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,5,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,5,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,5,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,5,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,5,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,5,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,5,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,5,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,5,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,5,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,5,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,5,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,5,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,5,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,5,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,5,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,5,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,5,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,5,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,5,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,5,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,5,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,5,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,5,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,5,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,5,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,5,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,5,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,5,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,5,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,5,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,5,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,5,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,5,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,5,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,5,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,5,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,5,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,5,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,5,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,5,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,5,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,5,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,5,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,5,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,5,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,5,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,5,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,5,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,5,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,5,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,5,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,5,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,5,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,5,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,5,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,5,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,5,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,5,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,5,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,5,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,5,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,5,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,5,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,5,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,5,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,5,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,5,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,5,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,5,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,5,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,5,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,5,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,5,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,5,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,5,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,5,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,5,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,5,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,5,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,5,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,5,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,5,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,5,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ACK,YX,Republic Airline,5,"Nantucket, MA: Nantucket Memorial" +ALB,YX,Republic Airline,5,"Albany, NY: Albany International" +ATL,YX,Republic Airline,5,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,5,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,5,"Asheville, NC: Asheville Regional" +AVP,YX,Republic Airline,5,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,YX,Republic Airline,5,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,5,"Bangor, ME: Bangor International" +BHM,YX,Republic Airline,5,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,YX,Republic Airline,5,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,5,"Boston, MA: Logan International" +BTV,YX,Republic Airline,5,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,5,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,5,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,YX,Republic Airline,5,"Columbia, SC: Columbia Metropolitan" +CHO,YX,Republic Airline,5,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,5,"Charleston, SC: Charleston AFB/International" +CLE,YX,Republic Airline,5,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,5,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,5,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,5,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,5,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,5,"Washington, DC: Ronald Reagan Washington National" +DFW,YX,Republic Airline,5,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,YX,Republic Airline,5,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,5,"Detroit, MI: Detroit Metro Wayne County" +EWR,YX,Republic Airline,5,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,5,"Key West, FL: Key West International" +FAR,YX,Republic Airline,5,"Fargo, ND: Hector International" +GRB,YX,Republic Airline,5,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,YX,Republic Airline,5,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,5,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,5,"Greer, SC: Greenville-Spartanburg International" +HHH,YX,Republic Airline,5,"Hilton Head, SC: Hilton Head Airport" +HPN,YX,Republic Airline,5,"White Plains, NY: Westchester County" +IAD,YX,Republic Airline,5,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,5,"Houston, TX: George Bush Intercontinental/Houston" +ILM,YX,Republic Airline,5,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,5,"Indianapolis, IN: Indianapolis International" +JAX,YX,Republic Airline,5,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,5,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,5,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,5,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,5,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,5,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,5,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,5,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,5,"Manchester, NH: Manchester Boston Regional" +MKE,YX,Republic Airline,5,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,5,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,5,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,YX,Republic Airline,5,"New Orleans, LA: Louis Armstrong New Orleans International" +MVY,YX,Republic Airline,5,"Martha's Vineyard, MA: Martha's Vineyard Airport" +MYR,YX,Republic Airline,5,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,5,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,5,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,5,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,5,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,5,"Worcester, MA: Worcester Regional" +PBI,YX,Republic Airline,5,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PHL,YX,Republic Airline,5,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,5,"Pittsburgh, PA: Pittsburgh International" +PVD,YX,Republic Airline,5,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,5,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,5,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,5,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,5,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,5,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,YX,Republic Airline,5,"Rochester, MN: Rochester International" +RSW,YX,Republic Airline,5,"Fort Myers, FL: Southwest Florida International" +SAT,YX,Republic Airline,5,"San Antonio, TX: San Antonio International" +SAV,YX,Republic Airline,5,"Savannah, GA: Savannah/Hilton Head International" +SDF,YX,Republic Airline,5,"Louisville, KY: Louisville Muhammad Ali International" +SRQ,YX,Republic Airline,5,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,YX,Republic Airline,5,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,5,"Syracuse, NY: Syracuse Hancock International" +TUL,YX,Republic Airline,5,"Tulsa, OK: Tulsa International" +TVC,YX,Republic Airline,5,"Traverse City, MI: Cherry Capital" +TYS,YX,Republic Airline,5,"Knoxville, TN: McGhee Tyson" +VPS,YX,Republic Airline,5,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,YX,Republic Airline,5,"Fayetteville, AR: Northwest Arkansas National" +ABY,9E,Endeavor Air Inc.,4,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,4,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,4,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,4,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,9E,Endeavor Air Inc.,4,"Appleton, WI: Appleton International" +AUS,9E,Endeavor Air Inc.,4,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,4,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,4,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,4,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,4,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,4,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,4,"Birmingham, AL: Birmingham-Shuttlesworth International" +BMI,9E,Endeavor Air Inc.,4,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,9E,Endeavor Air Inc.,4,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,4,"Brunswick, GA: Brunswick Golden Isles" +BTR,9E,Endeavor Air Inc.,4,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,9E,Endeavor Air Inc.,4,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,4,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,4,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,4,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,4,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,4,"Charleston, SC: Charleston AFB/International" +CLE,9E,Endeavor Air Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,4,"Columbus, OH: John Glenn Columbus International" +CSG,9E,Endeavor Air Inc.,4,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,4,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,4,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DHN,9E,Endeavor Air Inc.,4,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,4,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,4,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,4,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,4,"Newark, NJ: Newark Liberty International" +EYW,9E,Endeavor Air Inc.,4,"Key West, FL: Key West International" +FAY,9E,Endeavor Air Inc.,4,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GNV,9E,Endeavor Air Inc.,4,"Gainesville, FL: Gainesville Regional" +GRB,9E,Endeavor Air Inc.,4,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,9E,Endeavor Air Inc.,4,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,4,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,4,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,4,"Columbus, MS: Golden Triangle Regional" +HSV,9E,Endeavor Air Inc.,4,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,9E,Endeavor Air Inc.,4,"Washington, DC: Washington Dulles International" +IAH,9E,Endeavor Air Inc.,4,"Houston, TX: George Bush Intercontinental/Houston" +ICT,9E,Endeavor Air Inc.,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,9E,Endeavor Air Inc.,4,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,4,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,4,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,9E,Endeavor Air Inc.,4,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,4,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,4,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,4,"Lexington, KY: Blue Grass" +LGA,9E,Endeavor Air Inc.,4,"New York, NY: LaGuardia" +LSE,9E,Endeavor Air Inc.,4,"La Crosse, WI: La Crosse Regional" +MBS,9E,Endeavor Air Inc.,4,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,4,"Kansas City, MO: Kansas City International" +MDT,9E,Endeavor Air Inc.,4,"Harrisburg, PA: Harrisburg International" +MDW,9E,Endeavor Air Inc.,4,"Chicago, IL: Chicago Midway International" +MEM,9E,Endeavor Air Inc.,4,"Memphis, TN: Memphis International" +MGM,9E,Endeavor Air Inc.,4,"Montgomery, AL: Montgomery Regional" +MKE,9E,Endeavor Air Inc.,4,"Milwaukee, WI: General Mitchell International" +MLU,9E,Endeavor Air Inc.,4,"Monroe, LA: Monroe Regional" +MQT,9E,Endeavor Air Inc.,4,"Marquette, MI: Sawyer International" +MSN,9E,Endeavor Air Inc.,4,"Madison, WI: Dane County Regional-Truax Field" +MSP,9E,Endeavor Air Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MYR,9E,Endeavor Air Inc.,4,"Myrtle Beach, SC: Myrtle Beach International" +OKC,9E,Endeavor Air Inc.,4,"Oklahoma City, OK: Will Rogers World" +ORF,9E,Endeavor Air Inc.,4,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,4,"Worcester, MA: Worcester Regional" +PIT,9E,Endeavor Air Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,4,"Portland, ME: Portland International Jetport" +RDU,9E,Endeavor Air Inc.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,4,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,4,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,9E,Endeavor Air Inc.,4,"Savannah, GA: Savannah/Hilton Head International" +SCE,9E,Endeavor Air Inc.,4,"State College, PA: University Park" +SGF,9E,Endeavor Air Inc.,4,"Springfield, MO: Springfield-Branson National" +STL,9E,Endeavor Air Inc.,4,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,4,"Syracuse, NY: Syracuse Hancock International" +TRI,9E,Endeavor Air Inc.,4,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TVC,9E,Endeavor Air Inc.,4,"Traverse City, MI: Cherry Capital" +TYS,9E,Endeavor Air Inc.,4,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,4,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,4,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,4,"Albuquerque, NM: Albuquerque International Sunport" +AGS,AA,American Airlines Inc.,4,"Augusta, GA: Augusta Regional at Bush Field" +ALB,AA,American Airlines Inc.,4,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,4,"Amarillo, TX: Rick Husband Amarillo International" +ATL,AA,American Airlines Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,4,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,4,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,4,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,4,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,4,"Bakersfield, CA: Meadows Field" +BHM,AA,American Airlines Inc.,4,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,4,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,4,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,4,"Boston, MA: Logan International" +BUF,AA,American Airlines Inc.,4,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,4,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,4,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,4,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,4,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,4,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,4,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,4,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,4,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,4,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,AA,American Airlines Inc.,4,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,4,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,4,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,4,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,4,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,4,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,4,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,4,"Fresno, CA: Fresno Yosemite International" +FLL,AA,American Airlines Inc.,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,AA,American Airlines Inc.,4,"Sioux Falls, SD: Joe Foss Field" +GEG,AA,American Airlines Inc.,4,"Spokane, WA: Spokane International" +GRR,AA,American Airlines Inc.,4,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,4,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,4,"Greer, SC: Greenville-Spartanburg International" +GUC,AA,American Airlines Inc.,4,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,AA,American Airlines Inc.,4,"Hayden, CO: Yampa Valley" +HNL,AA,American Airlines Inc.,4,"Honolulu, HI: Daniel K Inouye International" +HSV,AA,American Airlines Inc.,4,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,AA,American Airlines Inc.,4,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,4,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,4,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,4,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,4,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,4,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,4,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,4,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,4,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,4,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,4,"Lubbock, TX: Lubbock Preston Smith International" +LEX,AA,American Airlines Inc.,4,"Lexington, KY: Blue Grass" +LGA,AA,American Airlines Inc.,4,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,4,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,4,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,4,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,4,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,4,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,4,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MIA,AA,American Airlines Inc.,4,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,4,"Milwaukee, WI: General Mitchell International" +MRY,AA,American Airlines Inc.,4,"Monterey, CA: Monterey Regional" +MSN,AA,American Airlines Inc.,4,"Madison, WI: Dane County Regional-Truax Field" +MSP,AA,American Airlines Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,4,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,4,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,4,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,4,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,4,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,4,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,4,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,4,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,4,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,4,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,4,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,4,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,4,"Portland, ME: Portland International Jetport" +RDU,AA,American Airlines Inc.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,4,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,4,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,4,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,4,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,4,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,4,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,4,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,4,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,4,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,4,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,4,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,4,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,4,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,4,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,4,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,4,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,4,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,4,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,4,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,4,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,4,"Tucson, AZ: Tucson International" +TYS,AA,American Airlines Inc.,4,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,4,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,4,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,4,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,4,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,4,"Kodiak, AK: Kodiak Airport" +AKN,AS,Alaska Airlines Inc.,4,"King Salmon, AK: King Salmon Airport" +ANC,AS,Alaska Airlines Inc.,4,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,4,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,4,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,4,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,4,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,4,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,4,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,4,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,4,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,4,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,4,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,4,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,4,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,4,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,AS,Alaska Airlines Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,4,"El Paso, TX: El Paso International" +EUG,AS,Alaska Airlines Inc.,4,"Eugene, OR: Mahlon Sweet Field" +EWR,AS,Alaska Airlines Inc.,4,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,4,"Fairbanks, AK: Fairbanks International" +FAT,AS,Alaska Airlines Inc.,4,"Fresno, CA: Fresno Yosemite International" +FLL,AS,Alaska Airlines Inc.,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,4,"Spokane, WA: Spokane International" +HNL,AS,Alaska Airlines Inc.,4,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,4,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,4,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,4,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,4,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,4,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,4,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,4,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,4,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,4,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,4,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,4,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,4,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,4,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,4,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,4,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,4,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,4,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,4,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,4,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,4,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,4,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,4,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,4,"Kotzebue, AK: Ralph Wien Memorial" +PAE,AS,Alaska Airlines Inc.,4,"Everett, WA: Snohomish County" +PDX,AS,Alaska Airlines Inc.,4,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,4,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PSC,AS,Alaska Airlines Inc.,4,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSG,AS,Alaska Airlines Inc.,4,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,4,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,4,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,4,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,4,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,4,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,4,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,4,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,4,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,4,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,4,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,4,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,4,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,4,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,4,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,4,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,4,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,4,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,4,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,4,"Yakutat, AK: Yakutat Airport" +ABQ,B6,JetBlue Airways,4,"Albuquerque, NM: Albuquerque International Sunport" +ALB,B6,JetBlue Airways,4,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,4,"Austin, TX: Austin - Bergstrom International" +BDL,B6,JetBlue Airways,4,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,4,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,4,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,4,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,4,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,4,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,4,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,B6,JetBlue Airways,4,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,4,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,4,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,4,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,4,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,4,"Newark, NJ: Newark Liberty International" +EYW,B6,JetBlue Airways,4,"Key West, FL: Key West International" +FLL,B6,JetBlue Airways,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HPN,B6,JetBlue Airways,4,"White Plains, NY: Westchester County" +IAH,B6,JetBlue Airways,4,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,4,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,4,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,4,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,4,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,4,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,4,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,4,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,4,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,4,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,4,"New Orleans, LA: Louis Armstrong New Orleans International" +ONT,B6,JetBlue Airways,4,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,4,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,4,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,B6,JetBlue Airways,4,"Portland, OR: Portland International" +PHL,B6,JetBlue Airways,4,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,4,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,4,"Ponce, PR: Mercedita" +PSP,B6,JetBlue Airways,4,"Palm Springs, CA: Palm Springs International" +PVD,B6,JetBlue Airways,4,"Providence, RI: Rhode Island Tf Green International" +RDU,B6,JetBlue Airways,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,4,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,4,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,4,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,4,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,4,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,4,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,4,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,4,"San Francisco, CA: San Francisco International" +SJC,B6,JetBlue Airways,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,B6,JetBlue Airways,4,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,4,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,4,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,4,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,4,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,4,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,4,"Albuquerque, NM: Albuquerque International Sunport" +AGS,DL,Delta Air Lines Inc.,4,"Augusta, GA: Augusta Regional at Bush Field" +ALB,DL,Delta Air Lines Inc.,4,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,4,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,4,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,4,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,4,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,4,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,4,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,4,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,4,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,4,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,4,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,4,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,4,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,4,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,4,"Buffalo, NY: Buffalo Niagara International" +BUR,DL,Delta Air Lines Inc.,4,"Burbank, CA: Bob Hope" +BWI,DL,Delta Air Lines Inc.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,4,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,4,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,4,"Chattanooga, TN: Lovell Field" +CHO,DL,Delta Air Lines Inc.,4,"Charlottesville, VA: Charlottesville Albemarle" +CHS,DL,Delta Air Lines Inc.,4,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,4,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,4,"Columbus, OH: John Glenn Columbus International" +CVG,DL,Delta Air Lines Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,4,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,4,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,4,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,4,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLH,DL,Delta Air Lines Inc.,4,"Duluth, MN: Duluth International" +DSM,DL,Delta Air Lines Inc.,4,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,4,"Panama City, FL: Northwest Florida Beaches International" +EGE,DL,Delta Air Lines Inc.,4,"Eagle, CO: Eagle County Regional" +ELP,DL,Delta Air Lines Inc.,4,"El Paso, TX: El Paso International" +EUG,DL,Delta Air Lines Inc.,4,"Eugene, OR: Mahlon Sweet Field" +EWR,DL,Delta Air Lines Inc.,4,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,4,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,4,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,4,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,4,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,4,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,4,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,4,"Spokane, WA: Spokane International" +GFK,DL,Delta Air Lines Inc.,4,"Grand Forks, ND: Grand Forks International" +GNV,DL,Delta Air Lines Inc.,4,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,4,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,4,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,4,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,4,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,4,"Greer, SC: Greenville-Spartanburg International" +HDN,DL,Delta Air Lines Inc.,4,"Hayden, CO: Yampa Valley" +HNL,DL,Delta Air Lines Inc.,4,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,4,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,4,"White Plains, NY: Westchester County" +HRL,DL,Delta Air Lines Inc.,4,"Harlingen/San Benito, TX: Valley International" +HSV,DL,Delta Air Lines Inc.,4,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,4,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,4,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,4,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,4,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,4,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,4,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,4,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,4,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,4,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,4,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,4,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,4,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,4,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,4,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,4,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,4,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,4,"Orlando, FL: Orlando International" +MDT,DL,Delta Air Lines Inc.,4,"Harrisburg, PA: Harrisburg International" +MDW,DL,Delta Air Lines Inc.,4,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,4,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,4,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,4,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,4,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,4,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,4,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,4,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,DL,Delta Air Lines Inc.,4,"Montrose/Delta, CO: Montrose Regional" +MYR,DL,Delta Air Lines Inc.,4,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,4,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,4,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,4,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,4,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,4,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,4,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,4,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,4,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,4,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,4,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,4,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,4,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,DL,Delta Air Lines Inc.,4,"Palm Springs, CA: Palm Springs International" +PVD,DL,Delta Air Lines Inc.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,4,"Portland, ME: Portland International Jetport" +RDU,DL,Delta Air Lines Inc.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,4,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,4,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,4,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,4,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,4,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,4,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,4,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,4,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,4,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,4,"San Francisco, CA: San Francisco International" +SGF,DL,Delta Air Lines Inc.,4,"Springfield, MO: Springfield-Branson National" +SJC,DL,Delta Air Lines Inc.,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,4,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,4,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,4,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,4,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,4,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,4,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,4,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,4,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,4,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,4,"Tampa, FL: Tampa International" +TUL,DL,Delta Air Lines Inc.,4,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,4,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,4,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,4,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,4,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,4,"Fayetteville, AR: Northwest Arkansas National" +ATL,F9,Frontier Airlines Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,4,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,4,"Hartford, CT: Bradley International" +BMI,F9,Frontier Airlines Inc.,4,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,4,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,4,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,4,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,4,"Buffalo, NY: Buffalo Niagara International" +BWI,F9,Frontier Airlines Inc.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,F9,Frontier Airlines Inc.,4,"Charleston, SC: Charleston AFB/International" +CID,F9,Frontier Airlines Inc.,4,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,4,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,4,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,4,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,4,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,4,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,4,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,4,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,4,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,4,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,4,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,4,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,4,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,4,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,4,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,4,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,4,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,4,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,4,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,4,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,4,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,4,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,4,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,4,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,F9,Frontier Airlines Inc.,4,"Myrtle Beach, SC: Myrtle Beach International" +OAK,F9,Frontier Airlines Inc.,4,"Oakland, CA: Metro Oakland International" +OKC,F9,Frontier Airlines Inc.,4,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,4,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,4,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,4,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,4,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,4,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,4,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,4,"Pensacola, FL: Pensacola International" +PVD,F9,Frontier Airlines Inc.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,F9,Frontier Airlines Inc.,4,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +ROC,F9,Frontier Airlines Inc.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,F9,Frontier Airlines Inc.,4,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,4,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,4,"San Antonio, TX: San Antonio International" +SAV,F9,Frontier Airlines Inc.,4,"Savannah, GA: Savannah/Hilton Head International" +SEA,F9,Frontier Airlines Inc.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,4,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,4,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,4,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,4,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,4,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,4,"St. Louis, MO: St Louis Lambert International" +SWF,F9,Frontier Airlines Inc.,4,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,F9,Frontier Airlines Inc.,4,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,4,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,4,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,4,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,4,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,4,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,4,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,4,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,4,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,4,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,4,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,4,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,4,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,4,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,4,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,4,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,4,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,4,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,4,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,4,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,4,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,4,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,4,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,4,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,4,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,4,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,4,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,4,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,4,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,4,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,4,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,4,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,4,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,4,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,4,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,4,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,4,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,4,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,4,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,4,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,4,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,4,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,4,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,4,"Grand Junction, CO: Grand Junction Regional" +GRI,G4,Allegiant Air,4,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,4,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,4,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,4,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,4,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,4,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,4,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,4,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,4,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,4,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,4,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,4,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,4,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,4,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,4,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,4,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,4,"Lexington, KY: Blue Grass" +LRD,G4,Allegiant Air,4,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,4,"Kansas City, MO: Kansas City International" +MDT,G4,Allegiant Air,4,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,4,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,4,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,4,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,G4,Allegiant Air,4,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,4,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,4,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,4,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,4,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,4,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,4,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,4,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,4,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,4,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,4,"Norfolk, VA: Norfolk International" +OWB,G4,Allegiant Air,4,"Owensboro, KY: Owensboro Daviess County Regional" +PBG,G4,Allegiant Air,4,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,4,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,4,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,4,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,4,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,4,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,4,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,4,"Portsmouth, NH: Portsmouth International at Pease" +PSP,G4,Allegiant Air,4,"Palm Springs, CA: Palm Springs International" +PVD,G4,Allegiant Air,4,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,4,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,4,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,4,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,4,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,4,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,4,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,4,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,4,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,4,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,4,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,4,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,4,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,4,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,4,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,4,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,4,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,4,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,4,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STC,G4,Allegiant Air,4,"St. Cloud, MN: St. Cloud Regional" +SWF,G4,Allegiant Air,4,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,4,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,4,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,4,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,4,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,4,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,4,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,4,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,4,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,4,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,4,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,4,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,4,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,4,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,4,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,4,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,4,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,4,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,4,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,4,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,4,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,4,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,4,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,4,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,4,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,4,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,4,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,4,"Sacramento, CA: Sacramento International" +ABE,MQ,Envoy Air,4,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABI,MQ,Envoy Air,4,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,4,"Albuquerque, NM: Albuquerque International Sunport" +AGS,MQ,Envoy Air,4,"Augusta, GA: Augusta Regional at Bush Field" +AMA,MQ,Envoy Air,4,"Amarillo, TX: Rick Husband Amarillo International" +ATL,MQ,Envoy Air,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,MQ,Envoy Air,4,"Appleton, WI: Appleton International" +AUS,MQ,Envoy Air,4,"Austin, TX: Austin - Bergstrom International" +AVL,MQ,Envoy Air,4,"Asheville, NC: Asheville Regional" +AVP,MQ,Envoy Air,4,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BFL,MQ,Envoy Air,4,"Bakersfield, CA: Meadows Field" +BHM,MQ,Envoy Air,4,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,4,"Billings, MT: Billings Logan International" +BMI,MQ,Envoy Air,4,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,4,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,4,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,4,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,4,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,MQ,Envoy Air,4,"Buffalo, NY: Buffalo Niagara International" +BWI,MQ,Envoy Air,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,MQ,Envoy Air,4,"Bozeman, MT: Bozeman Yellowstone International" +CHA,MQ,Envoy Air,4,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,4,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,4,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,4,"Cleveland, OH: Cleveland-Hopkins International" +CLL,MQ,Envoy Air,4,"College Station/Bryan, TX: Easterwood Field" +CLT,MQ,Envoy Air,4,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,4,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,4,"Champaign/Urbana, IL: University of Illinois/Willard" +COS,MQ,Envoy Air,4,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,MQ,Envoy Air,4,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,4,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,MQ,Envoy Air,4,"Mosinee, WI: Central Wisconsin" +DAB,MQ,Envoy Air,4,"Daytona Beach, FL: Daytona Beach International" +DAY,MQ,Envoy Air,4,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,4,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,MQ,Envoy Air,4,"Durango, CO: Durango La Plata County" +DSM,MQ,Envoy Air,4,"Des Moines, IA: Des Moines International" +DTW,MQ,Envoy Air,4,"Detroit, MI: Detroit Metro Wayne County" +ECP,MQ,Envoy Air,4,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,4,"El Paso, TX: El Paso International" +EVV,MQ,Envoy Air,4,"Evansville, IN: Evansville Regional" +EWR,MQ,Envoy Air,4,"Newark, NJ: Newark Liberty International" +EYW,MQ,Envoy Air,4,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,4,"Fargo, ND: Hector International" +FAT,MQ,Envoy Air,4,"Fresno, CA: Fresno Yosemite International" +FAY,MQ,Envoy Air,4,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FSD,MQ,Envoy Air,4,"Sioux Falls, SD: Joe Foss Field" +FSM,MQ,Envoy Air,4,"Fort Smith, AR: Fort Smith Regional" +GJT,MQ,Envoy Air,4,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,4,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,4,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,4,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,4,"Killeen, TX: Robert Gray AAF" +GRR,MQ,Envoy Air,4,"Grand Rapids, MI: Gerald R. Ford International" +GSO,MQ,Envoy Air,4,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,4,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,4,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,4,"Houston, TX: William P Hobby" +HPN,MQ,Envoy Air,4,"White Plains, NY: Westchester County" +HRL,MQ,Envoy Air,4,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,4,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAH,MQ,Envoy Air,4,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,MQ,Envoy Air,4,"Wilmington, NC: Wilmington International" +IND,MQ,Envoy Air,4,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,4,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,4,"Jacksonville, FL: Jacksonville International" +LAN,MQ,Envoy Air,4,"Lansing, MI: Capital Region International" +LAW,MQ,Envoy Air,4,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LBB,MQ,Envoy Air,4,"Lubbock, TX: Lubbock Preston Smith International" +LCH,MQ,Envoy Air,4,"Lake Charles, LA: Lake Charles Regional" +LEX,MQ,Envoy Air,4,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,4,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LSE,MQ,Envoy Air,4,"La Crosse, WI: La Crosse Regional" +MAF,MQ,Envoy Air,4,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,4,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,4,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,4,"Montgomery, AL: Montgomery Regional" +MHK,MQ,Envoy Air,4,"Manhattan/Ft. Riley, KS: Manhattan Regional" +MIA,MQ,Envoy Air,4,"Miami, FL: Miami International" +MLI,MQ,Envoy Air,4,"Moline, IL: Quad Cities International" +MOB,MQ,Envoy Air,4,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,4,"Marquette, MI: Sawyer International" +MSN,MQ,Envoy Air,4,"Madison, WI: Dane County Regional-Truax Field" +MSO,MQ,Envoy Air,4,"Missoula, MT: Missoula Montana" +MSP,MQ,Envoy Air,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,MQ,Envoy Air,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,MQ,Envoy Air,4,"Myrtle Beach, SC: Myrtle Beach International" +OKC,MQ,Envoy Air,4,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,4,"Omaha, NE: Eppley Airfield" +ONT,MQ,Envoy Air,4,"Ontario, CA: Ontario International" +ORD,MQ,Envoy Air,4,"Chicago, IL: Chicago O'Hare International" +ORF,MQ,Envoy Air,4,"Norfolk, VA: Norfolk International" +PHX,MQ,Envoy Air,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,4,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,4,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,4,"Pensacola, FL: Pensacola International" +PSP,MQ,Envoy Air,4,"Palm Springs, CA: Palm Springs International" +PVD,MQ,Envoy Air,4,"Providence, RI: Rhode Island Tf Green International" +RAP,MQ,Envoy Air,4,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,MQ,Envoy Air,4,"Richmond, VA: Richmond International" +RNO,MQ,Envoy Air,4,"Reno, NV: Reno/Tahoe International" +ROC,MQ,Envoy Air,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,MQ,Envoy Air,4,"Rochester, MN: Rochester International" +RSW,MQ,Envoy Air,4,"Fort Myers, FL: Southwest Florida International" +SAF,MQ,Envoy Air,4,"Santa Fe, NM: Santa Fe Municipal" +SAV,MQ,Envoy Air,4,"Savannah, GA: Savannah/Hilton Head International" +SBA,MQ,Envoy Air,4,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,MQ,Envoy Air,4,"San Luis Obispo, CA: San Luis County Regional" +SDF,MQ,Envoy Air,4,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,4,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,4,"Shreveport, LA: Shreveport Regional" +SJT,MQ,Envoy Air,4,"San Angelo, TX: San Angelo Regional/Mathis Field" +STL,MQ,Envoy Air,4,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,4,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SYR,MQ,Envoy Air,4,"Syracuse, NY: Syracuse Hancock International" +TLH,MQ,Envoy Air,4,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,4,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,4,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,4,"Tulsa, OK: Tulsa International" +TUS,MQ,Envoy Air,4,"Tucson, AZ: Tucson International" +TVC,MQ,Envoy Air,4,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,4,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,4,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,4,"Fayetteville, AR: Northwest Arkansas National" +YUM,MQ,Envoy Air,4,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,NK,Spirit Air Lines,4,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,4,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,4,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,4,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,4,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,4,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,4,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,4,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,4,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,NK,Spirit Air Lines,4,"Charleston, SC: Charleston AFB/International" +CLE,NK,Spirit Air Lines,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,4,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,4,"Columbus, OH: John Glenn Columbus International" +CRW,NK,Spirit Air Lines,4,"Charleston/Dunbar, WV: West Virginia International Yeager" +DEN,NK,Spirit Air Lines,4,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,4,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,4,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,4,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,4,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,4,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,4,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,4,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,4,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,4,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,4,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,4,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,4,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,4,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,4,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,4,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,4,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,4,"Chicago, IL: Chicago O'Hare International" +ORF,NK,Spirit Air Lines,4,"Norfolk, VA: Norfolk International" +PBI,NK,Spirit Air Lines,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,4,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,4,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,4,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,4,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,4,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,4,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,4,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,4,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,4,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,4,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,4,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,4,"Seattle, WA: Seattle/Tacoma International" +SJU,NK,Spirit Air Lines,4,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,4,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,4,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,4,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,4,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,4,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,4,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,4,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,4,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,4,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,4,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,4,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,4,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,4,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,4,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,4,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,4,"Nashville, TN: Nashville International" +BTR,OH,PSA Airlines Inc.,4,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,4,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,4,"Buffalo, NY: Buffalo Niagara International" +CAE,OH,PSA Airlines Inc.,4,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,4,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,4,"Chattanooga, TN: Lovell Field" +CHO,OH,PSA Airlines Inc.,4,"Charlottesville, VA: Charlottesville Albemarle" +CHS,OH,PSA Airlines Inc.,4,"Charleston, SC: Charleston AFB/International" +CLE,OH,PSA Airlines Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,4,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,4,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,4,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,4,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DFW,OH,PSA Airlines Inc.,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,OH,PSA Airlines Inc.,4,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,4,"Panama City, FL: Northwest Florida Beaches International" +EWN,OH,PSA Airlines Inc.,4,"New Bern/Morehead/Beaufort, NC: Coastal Carolina Regional" +GNV,OH,PSA Airlines Inc.,4,"Gainesville, FL: Gainesville Regional" +GPT,OH,PSA Airlines Inc.,4,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,4,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,4,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,4,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,4,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,4,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,OH,PSA Airlines Inc.,4,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,4,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,4,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,4,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,4,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,4,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,4,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,4,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,4,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,4,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,4,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,4,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,4,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,4,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,4,"Melbourne, FL: Melbourne Orlando International" +MOB,OH,PSA Airlines Inc.,4,"Mobile, AL: Mobile Regional" +MSP,OH,PSA Airlines Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,4,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,OH,PSA Airlines Inc.,4,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OKC,OH,PSA Airlines Inc.,4,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,4,"Norfolk, VA: Norfolk International" +PGV,OH,PSA Airlines Inc.,4,"Greenville, NC: Pitt Greenville" +PHL,OH,PSA Airlines Inc.,4,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,4,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,4,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,4,"Portland, ME: Portland International Jetport" +RDU,OH,PSA Airlines Inc.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,OH,PSA Airlines Inc.,4,"Richmond, VA: Richmond International" +ROA,OH,PSA Airlines Inc.,4,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OH,PSA Airlines Inc.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,OH,PSA Airlines Inc.,4,"Fort Myers, FL: Southwest Florida International" +SAV,OH,PSA Airlines Inc.,4,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,4,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,4,"Louisville, KY: Louisville Muhammad Ali International" +SGF,OH,PSA Airlines Inc.,4,"Springfield, MO: Springfield-Branson National" +SHV,OH,PSA Airlines Inc.,4,"Shreveport, LA: Shreveport Regional" +SRQ,OH,PSA Airlines Inc.,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OH,PSA Airlines Inc.,4,"St. Louis, MO: St Louis Lambert International" +SYR,OH,PSA Airlines Inc.,4,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,4,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,4,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,4,"Tulsa, OK: Tulsa International" +TYS,OH,PSA Airlines Inc.,4,"Knoxville, TN: McGhee Tyson" +ABE,OO,SkyWest Airlines Inc.,4,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,4,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,4,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,4,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,4,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,4,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,4,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,4,"Albany, NY: Albany International" +AMA,OO,SkyWest Airlines Inc.,4,"Amarillo, TX: Rick Husband Amarillo International" +APN,OO,SkyWest Airlines Inc.,4,"Alpena, MI: Alpena County Regional" +ASE,OO,SkyWest Airlines Inc.,4,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,4,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,4,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,4,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,4,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BFF,OO,SkyWest Airlines Inc.,4,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,4,"Bakersfield, CA: Meadows Field" +BHM,OO,SkyWest Airlines Inc.,4,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIH,OO,SkyWest Airlines Inc.,4,"Bishop, CA: Bishop Airport" +BIL,OO,SkyWest Airlines Inc.,4,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,4,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,4,"Bemidji, MN: Bemidji Regional" +BLI,OO,SkyWest Airlines Inc.,4,"Bellingham, WA: Bellingham International" +BMI,OO,SkyWest Airlines Inc.,4,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,4,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,4,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,4,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,4,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,4,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,4,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,4,"Butte, MT: Bert Mooney" +BUF,OO,SkyWest Airlines Inc.,4,"Buffalo, NY: Buffalo Niagara International" +BUR,OO,SkyWest Airlines Inc.,4,"Burbank, CA: Bob Hope" +BWI,OO,SkyWest Airlines Inc.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,OO,SkyWest Airlines Inc.,4,"Bozeman, MT: Bozeman Yellowstone International" +CAE,OO,SkyWest Airlines Inc.,4,"Columbia, SC: Columbia Metropolitan" +CAK,OO,SkyWest Airlines Inc.,4,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,4,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,4,"Chattanooga, TN: Lovell Field" +CHS,OO,SkyWest Airlines Inc.,4,"Charleston, SC: Charleston AFB/International" +CID,OO,SkyWest Airlines Inc.,4,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,4,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,4,"College Station/Bryan, TX: Easterwood Field" +CLT,OO,SkyWest Airlines Inc.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,OO,SkyWest Airlines Inc.,4,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,4,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,4,"Moab, UT: Canyonlands Regional" +COD,OO,SkyWest Airlines Inc.,4,"Cody, WY: Yellowstone Regional" +COS,OO,SkyWest Airlines Inc.,4,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,OO,SkyWest Airlines Inc.,4,"Columbia, MO: Columbia Regional" +CPR,OO,SkyWest Airlines Inc.,4,"Casper, WY: Casper/Natrona County International" +CRP,OO,SkyWest Airlines Inc.,4,"Corpus Christi, TX: Corpus Christi International" +CRW,OO,SkyWest Airlines Inc.,4,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OO,SkyWest Airlines Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CYS,OO,SkyWest Airlines Inc.,4,"Cheyenne, WY: Cheyenne Regional/Jerry Olson Field" +DAY,OO,SkyWest Airlines Inc.,4,"Dayton, OH: James M Cox/Dayton International" +DCA,OO,SkyWest Airlines Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,4,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,4,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,4,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,4,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,4,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,4,"Durango, CO: Durango La Plata County" +DRT,OO,SkyWest Airlines Inc.,4,"Del Rio, TX: Del Rio International" +DSM,OO,SkyWest Airlines Inc.,4,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,4,"Devils Lake, ND: Devils Lake Regional" +ECP,OO,SkyWest Airlines Inc.,4,"Panama City, FL: Northwest Florida Beaches International" +EGE,OO,SkyWest Airlines Inc.,4,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,4,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,4,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,4,"El Paso, TX: El Paso International" +ERI,OO,SkyWest Airlines Inc.,4,"Erie, PA: Erie International/Tom Ridge Field" +ESC,OO,SkyWest Airlines Inc.,4,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,4,"Eugene, OR: Mahlon Sweet Field" +EWR,OO,SkyWest Airlines Inc.,4,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,4,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,4,"Fresno, CA: Fresno Yosemite International" +FAY,OO,SkyWest Airlines Inc.,4,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,OO,SkyWest Airlines Inc.,4,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,4,"Flagstaff, AZ: Flagstaff Pulliam" +FNT,OO,SkyWest Airlines Inc.,4,"Flint, MI: Bishop International" +FOD,OO,SkyWest Airlines Inc.,4,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,4,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,4,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,4,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,4,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,4,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,4,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,4,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,4,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,4,"Grand Junction, CO: Grand Junction Regional" +GPT,OO,SkyWest Airlines Inc.,4,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,OO,SkyWest Airlines Inc.,4,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,4,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,4,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,4,"Grand Rapids, MI: Gerald R. Ford International" +GSP,OO,SkyWest Airlines Inc.,4,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,4,"Great Falls, MT: Great Falls International" +GTR,OO,SkyWest Airlines Inc.,4,"Columbus, MS: Golden Triangle Regional" +GUC,OO,SkyWest Airlines Inc.,4,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,4,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,4,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,4,"Helena, MT: Helena Regional" +HOU,OO,SkyWest Airlines Inc.,4,"Houston, TX: William P Hobby" +HPN,OO,SkyWest Airlines Inc.,4,"White Plains, NY: Westchester County" +HRL,OO,SkyWest Airlines Inc.,4,"Harlingen/San Benito, TX: Valley International" +HSV,OO,SkyWest Airlines Inc.,4,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,4,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,4,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,4,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,4,"Idaho Falls, ID: Idaho Falls Regional" +IMT,OO,SkyWest Airlines Inc.,4,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,4,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,4,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,4,"Jackson, WY: Jackson Hole" +JAN,OO,SkyWest Airlines Inc.,4,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OO,SkyWest Airlines Inc.,4,"Jacksonville, FL: Jacksonville International" +JFK,OO,SkyWest Airlines Inc.,4,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,4,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,4,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,4,"Johnstown, PA: John Murtha Johnstown-Cambria County" +LAR,OO,SkyWest Airlines Inc.,4,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,4,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,4,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,4,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,4,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,4,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,4,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,4,"Lake Charles, LA: Lake Charles Regional" +LEX,OO,SkyWest Airlines Inc.,4,"Lexington, KY: Blue Grass" +LFT,OO,SkyWest Airlines Inc.,4,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,4,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,4,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,4,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,4,"Laredo, TX: Laredo International" +LWS,OO,SkyWest Airlines Inc.,4,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,4,"Midland/Odessa, TX: Midland International Air and Space Port" +MBS,OO,SkyWest Airlines Inc.,4,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,OO,SkyWest Airlines Inc.,4,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,4,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,4,"Harrisburg, PA: Harrisburg International" +MDW,OO,SkyWest Airlines Inc.,4,"Chicago, IL: Chicago Midway International" +MEI,OO,SkyWest Airlines Inc.,4,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,4,"Memphis, TN: Memphis International" +MFR,OO,SkyWest Airlines Inc.,4,"Medford, OR: Rogue Valley International - Medford" +MGM,OO,SkyWest Airlines Inc.,4,"Montgomery, AL: Montgomery Regional" +MKE,OO,SkyWest Airlines Inc.,4,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,4,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,4,"Monroe, LA: Monroe Regional" +MOB,OO,SkyWest Airlines Inc.,4,"Mobile, AL: Mobile Regional" +MOT,OO,SkyWest Airlines Inc.,4,"Minot, ND: Minot International" +MRY,OO,SkyWest Airlines Inc.,4,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,4,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,4,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OO,SkyWest Airlines Inc.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,OO,SkyWest Airlines Inc.,4,"Montrose/Delta, CO: Montrose Regional" +OAJ,OO,SkyWest Airlines Inc.,4,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,OO,SkyWest Airlines Inc.,4,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,4,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,4,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,4,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,4,"Chicago, IL: Chicago O'Hare International" +ORF,OO,SkyWest Airlines Inc.,4,"Norfolk, VA: Norfolk International" +OTH,OO,SkyWest Airlines Inc.,4,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PDX,OO,SkyWest Airlines Inc.,4,"Portland, OR: Portland International" +PHX,OO,SkyWest Airlines Inc.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,OO,SkyWest Airlines Inc.,4,"Peoria, IL: General Downing - Peoria International" +PIB,OO,SkyWest Airlines Inc.,4,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,4,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,4,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,4,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,4,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,4,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,4,"Palm Springs, CA: Palm Springs International" +PVD,OO,SkyWest Airlines Inc.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,OO,SkyWest Airlines Inc.,4,"Portland, ME: Portland International Jetport" +RAP,OO,SkyWest Airlines Inc.,4,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,4,"Redding, CA: Redding Municipal" +RDM,OO,SkyWest Airlines Inc.,4,"Bend/Redmond, OR: Roberts Field" +RHI,OO,SkyWest Airlines Inc.,4,"Rhinelander, WI: Rhinelander/Oneida County" +RIW,OO,SkyWest Airlines Inc.,4,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,4,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,4,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,4,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OO,SkyWest Airlines Inc.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +ROW,OO,SkyWest Airlines Inc.,4,"Roswell, NM: Roswell Air Center" +RST,OO,SkyWest Airlines Inc.,4,"Rochester, MN: Rochester International" +SAF,OO,SkyWest Airlines Inc.,4,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,4,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,4,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,4,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,4,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,4,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,4,"San Luis Obispo, CA: San Luis County Regional" +SCE,OO,SkyWest Airlines Inc.,4,"State College, PA: University Park" +SDF,OO,SkyWest Airlines Inc.,4,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,4,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,4,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,4,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,4,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,4,"Shreveport, LA: Shreveport Regional" +SJC,OO,SkyWest Airlines Inc.,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,4,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,4,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,4,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,4,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,4,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,OO,SkyWest Airlines Inc.,4,"Springfield, IL: Abraham Lincoln Capital" +SPS,OO,SkyWest Airlines Inc.,4,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +STL,OO,SkyWest Airlines Inc.,4,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,4,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,4,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,4,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,4,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,4,"Syracuse, NY: Syracuse Hancock International" +TRI,OO,SkyWest Airlines Inc.,4,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OO,SkyWest Airlines Inc.,4,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,4,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,4,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,4,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,4,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,4,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,4,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,4,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,4,"Vernal, UT: Vernal Regional" +XNA,OO,SkyWest Airlines Inc.,4,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,4,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,4,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,4,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,4,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,4,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,4,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,4,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,4,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,4,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,4,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,4,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,4,"Aguadilla, PR: Rafael Hernandez" +BTV,UA,United Air Lines Inc.,4,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,4,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,4,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,4,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,4,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,4,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,4,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,4,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,4,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,4,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,UA,United Air Lines Inc.,4,"Durango, CO: Durango La Plata County" +DSM,UA,United Air Lines Inc.,4,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,4,"Detroit, MI: Detroit Metro Wayne County" +EGE,UA,United Air Lines Inc.,4,"Eagle, CO: Eagle County Regional" +ELP,UA,United Air Lines Inc.,4,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,4,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,4,"Newark, NJ: Newark Liberty International" +FAT,UA,United Air Lines Inc.,4,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,4,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,4,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,4,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,4,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,4,"Grand Rapids, MI: Gerald R. Ford International" +GSP,UA,United Air Lines Inc.,4,"Greer, SC: Greenville-Spartanburg International" +GUM,UA,United Air Lines Inc.,4,"Guam, TT: Guam International" +HNL,UA,United Air Lines Inc.,4,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,4,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,4,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,4,"Indianapolis, IN: Indianapolis International" +JAC,UA,United Air Lines Inc.,4,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,4,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,4,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,4,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,4,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,4,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,4,"Lihue, HI: Lihue Airport" +MCI,UA,United Air Lines Inc.,4,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,4,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,4,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,4,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,4,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,UA,United Air Lines Inc.,4,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,4,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,4,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,4,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,4,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,UA,United Air Lines Inc.,4,"Myrtle Beach, SC: Myrtle Beach International" +OGG,UA,United Air Lines Inc.,4,"Kahului, HI: Kahului Airport" +OMA,UA,United Air Lines Inc.,4,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,4,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,4,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,4,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,4,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,4,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,4,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,4,"Pensacola, FL: Pensacola International" +PSP,UA,United Air Lines Inc.,4,"Palm Springs, CA: Palm Springs International" +PVD,UA,United Air Lines Inc.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,UA,United Air Lines Inc.,4,"Portland, ME: Portland International Jetport" +RDM,UA,United Air Lines Inc.,4,"Bend/Redmond, OR: Roberts Field" +RDU,UA,United Air Lines Inc.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,4,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,4,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,4,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,4,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,4,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,4,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,4,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,4,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,4,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,4,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,4,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,4,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,4,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,4,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,4,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,4,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,4,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,4,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,4,"Tulsa, OK: Tulsa International" +TUS,UA,United Air Lines Inc.,4,"Tucson, AZ: Tucson International" +ABQ,WN,Southwest Airlines Co.,4,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,4,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,4,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,4,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,4,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,4,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,4,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,4,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,4,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,4,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,4,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,4,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,4,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,4,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,4,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,4,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,4,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,4,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,4,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,4,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,4,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,4,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,4,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,4,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,4,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,4,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,4,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,4,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,4,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,4,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,4,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,4,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,4,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,4,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,4,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,4,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,4,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,4,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,4,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,4,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,4,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,4,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,4,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,4,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,4,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,4,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,4,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,4,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,4,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,4,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,4,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,4,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,4,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,4,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,4,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,4,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,4,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,4,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,4,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,4,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,4,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,4,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,4,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,4,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,4,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,4,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,4,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,4,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,4,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,4,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,4,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,4,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,4,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,4,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,4,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,4,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,4,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,4,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,4,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,4,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,4,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,4,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,4,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,4,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,4,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,4,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,4,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,4,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,4,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,4,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,4,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,4,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,4,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,4,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,4,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,4,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,4,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +AGS,YX,Republic Airline,4,"Augusta, GA: Augusta Regional at Bush Field" +ALB,YX,Republic Airline,4,"Albany, NY: Albany International" +ATL,YX,Republic Airline,4,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,4,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,4,"Asheville, NC: Asheville Regional" +AVP,YX,Republic Airline,4,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,YX,Republic Airline,4,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,4,"Bangor, ME: Bangor International" +BNA,YX,Republic Airline,4,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,4,"Boston, MA: Logan International" +BTV,YX,Republic Airline,4,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,4,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,4,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHA,YX,Republic Airline,4,"Chattanooga, TN: Lovell Field" +CHO,YX,Republic Airline,4,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,4,"Charleston, SC: Charleston AFB/International" +CLE,YX,Republic Airline,4,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,4,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,4,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,4,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,4,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,4,"Washington, DC: Ronald Reagan Washington National" +DFW,YX,Republic Airline,4,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,YX,Republic Airline,4,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,4,"Detroit, MI: Detroit Metro Wayne County" +EWR,YX,Republic Airline,4,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,4,"Key West, FL: Key West International" +FAR,YX,Republic Airline,4,"Fargo, ND: Hector International" +FSD,YX,Republic Airline,4,"Sioux Falls, SD: Joe Foss Field" +GRB,YX,Republic Airline,4,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,YX,Republic Airline,4,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,4,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,4,"Greer, SC: Greenville-Spartanburg International" +HHH,YX,Republic Airline,4,"Hilton Head, SC: Hilton Head Airport" +HPN,YX,Republic Airline,4,"White Plains, NY: Westchester County" +HSV,YX,Republic Airline,4,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,YX,Republic Airline,4,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,4,"Houston, TX: George Bush Intercontinental/Houston" +ILM,YX,Republic Airline,4,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,4,"Indianapolis, IN: Indianapolis International" +JAX,YX,Republic Airline,4,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,4,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,4,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,4,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,4,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,4,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,4,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,4,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,4,"Manchester, NH: Manchester Boston Regional" +MIA,YX,Republic Airline,4,"Miami, FL: Miami International" +MKE,YX,Republic Airline,4,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,4,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,4,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,YX,Republic Airline,4,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,YX,Republic Airline,4,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,4,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,4,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,4,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,4,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,4,"Worcester, MA: Worcester Regional" +PHL,YX,Republic Airline,4,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,4,"Pittsburgh, PA: Pittsburgh International" +PNS,YX,Republic Airline,4,"Pensacola, FL: Pensacola International" +PVD,YX,Republic Airline,4,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,4,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,4,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,4,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,4,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,4,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,YX,Republic Airline,4,"Rochester, MN: Rochester International" +SAV,YX,Republic Airline,4,"Savannah, GA: Savannah/Hilton Head International" +SDF,YX,Republic Airline,4,"Louisville, KY: Louisville Muhammad Ali International" +SRQ,YX,Republic Airline,4,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,YX,Republic Airline,4,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,4,"Syracuse, NY: Syracuse Hancock International" +TPA,YX,Republic Airline,4,"Tampa, FL: Tampa International" +TUL,YX,Republic Airline,4,"Tulsa, OK: Tulsa International" +TVC,YX,Republic Airline,4,"Traverse City, MI: Cherry Capital" +VPS,YX,Republic Airline,4,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,YX,Republic Airline,4,"Fayetteville, AR: Northwest Arkansas National" +ABY,9E,Endeavor Air Inc.,3,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,3,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,3,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,3,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,9E,Endeavor Air Inc.,3,"Appleton, WI: Appleton International" +AUS,9E,Endeavor Air Inc.,3,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,3,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,3,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,3,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,3,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,3,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,3,"Birmingham, AL: Birmingham-Shuttlesworth International" +BMI,9E,Endeavor Air Inc.,3,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,9E,Endeavor Air Inc.,3,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,3,"Brunswick, GA: Brunswick Golden Isles" +BTR,9E,Endeavor Air Inc.,3,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,9E,Endeavor Air Inc.,3,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,3,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,3,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,3,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,3,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,3,"Charleston, SC: Charleston AFB/International" +CLE,9E,Endeavor Air Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,3,"Columbus, OH: John Glenn Columbus International" +CRW,9E,Endeavor Air Inc.,3,"Charleston/Dunbar, WV: West Virginia International Yeager" +CSG,9E,Endeavor Air Inc.,3,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,3,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,3,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DHN,9E,Endeavor Air Inc.,3,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,3,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,3,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,3,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,3,"Newark, NJ: Newark Liberty International" +EYW,9E,Endeavor Air Inc.,3,"Key West, FL: Key West International" +FAY,9E,Endeavor Air Inc.,3,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GNV,9E,Endeavor Air Inc.,3,"Gainesville, FL: Gainesville Regional" +GRB,9E,Endeavor Air Inc.,3,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,9E,Endeavor Air Inc.,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,3,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,3,"Columbus, MS: Golden Triangle Regional" +HSV,9E,Endeavor Air Inc.,3,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,9E,Endeavor Air Inc.,3,"Washington, DC: Washington Dulles International" +IAH,9E,Endeavor Air Inc.,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,9E,Endeavor Air Inc.,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,9E,Endeavor Air Inc.,3,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,3,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,3,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,9E,Endeavor Air Inc.,3,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,3,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,3,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,3,"Lexington, KY: Blue Grass" +LGA,9E,Endeavor Air Inc.,3,"New York, NY: LaGuardia" +LSE,9E,Endeavor Air Inc.,3,"La Crosse, WI: La Crosse Regional" +MBS,9E,Endeavor Air Inc.,3,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,3,"Kansas City, MO: Kansas City International" +MDT,9E,Endeavor Air Inc.,3,"Harrisburg, PA: Harrisburg International" +MDW,9E,Endeavor Air Inc.,3,"Chicago, IL: Chicago Midway International" +MEM,9E,Endeavor Air Inc.,3,"Memphis, TN: Memphis International" +MGM,9E,Endeavor Air Inc.,3,"Montgomery, AL: Montgomery Regional" +MKE,9E,Endeavor Air Inc.,3,"Milwaukee, WI: General Mitchell International" +MLU,9E,Endeavor Air Inc.,3,"Monroe, LA: Monroe Regional" +MOB,9E,Endeavor Air Inc.,3,"Mobile, AL: Mobile Regional" +MQT,9E,Endeavor Air Inc.,3,"Marquette, MI: Sawyer International" +MSN,9E,Endeavor Air Inc.,3,"Madison, WI: Dane County Regional-Truax Field" +MSP,9E,Endeavor Air Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MYR,9E,Endeavor Air Inc.,3,"Myrtle Beach, SC: Myrtle Beach International" +OKC,9E,Endeavor Air Inc.,3,"Oklahoma City, OK: Will Rogers World" +OMA,9E,Endeavor Air Inc.,3,"Omaha, NE: Eppley Airfield" +ORF,9E,Endeavor Air Inc.,3,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,3,"Worcester, MA: Worcester Regional" +PIT,9E,Endeavor Air Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,3,"Portland, ME: Portland International Jetport" +RDU,9E,Endeavor Air Inc.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,3,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,3,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,9E,Endeavor Air Inc.,3,"Savannah, GA: Savannah/Hilton Head International" +SCE,9E,Endeavor Air Inc.,3,"State College, PA: University Park" +SDF,9E,Endeavor Air Inc.,3,"Louisville, KY: Louisville Muhammad Ali International" +SGF,9E,Endeavor Air Inc.,3,"Springfield, MO: Springfield-Branson National" +STL,9E,Endeavor Air Inc.,3,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,3,"Syracuse, NY: Syracuse Hancock International" +TRI,9E,Endeavor Air Inc.,3,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TVC,9E,Endeavor Air Inc.,3,"Traverse City, MI: Cherry Capital" +TYS,9E,Endeavor Air Inc.,3,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,3,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,3,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,3,"Albuquerque, NM: Albuquerque International Sunport" +ALB,AA,American Airlines Inc.,3,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,3,"Amarillo, TX: Rick Husband Amarillo International" +ATL,AA,American Airlines Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,3,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,3,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,3,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,3,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,3,"Bakersfield, CA: Meadows Field" +BHM,AA,American Airlines Inc.,3,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,3,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,3,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,3,"Boston, MA: Logan International" +BUF,AA,American Airlines Inc.,3,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,3,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,3,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,3,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,3,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,3,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,3,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,3,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,3,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,3,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,AA,American Airlines Inc.,3,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,3,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,3,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,3,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,3,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,3,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,3,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,3,"Fresno, CA: Fresno Yosemite International" +FLL,AA,American Airlines Inc.,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,AA,American Airlines Inc.,3,"Sioux Falls, SD: Joe Foss Field" +GEG,AA,American Airlines Inc.,3,"Spokane, WA: Spokane International" +GRR,AA,American Airlines Inc.,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,3,"Greer, SC: Greenville-Spartanburg International" +GUC,AA,American Airlines Inc.,3,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,AA,American Airlines Inc.,3,"Hayden, CO: Yampa Valley" +HNL,AA,American Airlines Inc.,3,"Honolulu, HI: Daniel K Inouye International" +HSV,AA,American Airlines Inc.,3,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,AA,American Airlines Inc.,3,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,3,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,3,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,3,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,3,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,3,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,3,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,3,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,3,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,3,"Lubbock, TX: Lubbock Preston Smith International" +LGA,AA,American Airlines Inc.,3,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,3,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,3,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,3,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,3,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,3,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,3,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MIA,AA,American Airlines Inc.,3,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,3,"Milwaukee, WI: General Mitchell International" +MRY,AA,American Airlines Inc.,3,"Monterey, CA: Monterey Regional" +MSN,AA,American Airlines Inc.,3,"Madison, WI: Dane County Regional-Truax Field" +MSP,AA,American Airlines Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,3,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,3,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,3,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,3,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,3,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,3,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,3,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,3,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,3,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,3,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,3,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,3,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,3,"Portland, ME: Portland International Jetport" +RDU,AA,American Airlines Inc.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,3,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,3,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,3,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,3,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,3,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,3,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,3,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,3,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,3,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,3,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,3,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,3,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,3,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,3,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,3,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,3,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,3,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,3,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,3,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,3,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,3,"Tucson, AZ: Tucson International" +TYS,AA,American Airlines Inc.,3,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,3,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,3,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,3,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,3,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,3,"Kodiak, AK: Kodiak Airport" +ANC,AS,Alaska Airlines Inc.,3,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,3,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,3,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,3,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,3,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,3,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,3,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,3,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,3,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,3,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,3,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,3,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,3,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,3,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,AS,Alaska Airlines Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,3,"El Paso, TX: El Paso International" +EUG,AS,Alaska Airlines Inc.,3,"Eugene, OR: Mahlon Sweet Field" +EWR,AS,Alaska Airlines Inc.,3,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,3,"Fairbanks, AK: Fairbanks International" +FAT,AS,Alaska Airlines Inc.,3,"Fresno, CA: Fresno Yosemite International" +FLL,AS,Alaska Airlines Inc.,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,3,"Spokane, WA: Spokane International" +HNL,AS,Alaska Airlines Inc.,3,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,3,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,3,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,3,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,3,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,3,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,3,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,3,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,3,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,3,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,3,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,3,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,3,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,3,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,3,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,3,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,3,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,3,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,3,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,3,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,3,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,3,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,3,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,3,"Kotzebue, AK: Ralph Wien Memorial" +PAE,AS,Alaska Airlines Inc.,3,"Everett, WA: Snohomish County" +PDX,AS,Alaska Airlines Inc.,3,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,3,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PSG,AS,Alaska Airlines Inc.,3,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,3,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,3,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,3,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,3,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,3,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,3,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,3,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,3,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,3,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,3,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,3,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,3,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,3,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,3,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,3,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,3,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,3,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,3,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,3,"Yakutat, AK: Yakutat Airport" +ABQ,B6,JetBlue Airways,3,"Albuquerque, NM: Albuquerque International Sunport" +ALB,B6,JetBlue Airways,3,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,3,"Austin, TX: Austin - Bergstrom International" +BDL,B6,JetBlue Airways,3,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,3,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,3,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,3,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,3,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,3,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,3,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,B6,JetBlue Airways,3,"Bozeman, MT: Bozeman Yellowstone International" +CHS,B6,JetBlue Airways,3,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,3,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,3,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,3,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,3,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,3,"Newark, NJ: Newark Liberty International" +EYW,B6,JetBlue Airways,3,"Key West, FL: Key West International" +FLL,B6,JetBlue Airways,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HDN,B6,JetBlue Airways,3,"Hayden, CO: Yampa Valley" +HPN,B6,JetBlue Airways,3,"White Plains, NY: Westchester County" +IAH,B6,JetBlue Airways,3,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,3,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,3,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,3,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,3,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,3,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,3,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,3,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,3,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,3,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,3,"New Orleans, LA: Louis Armstrong New Orleans International" +ONT,B6,JetBlue Airways,3,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,3,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,3,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,B6,JetBlue Airways,3,"Portland, OR: Portland International" +PHL,B6,JetBlue Airways,3,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,3,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,3,"Ponce, PR: Mercedita" +PSP,B6,JetBlue Airways,3,"Palm Springs, CA: Palm Springs International" +PVD,B6,JetBlue Airways,3,"Providence, RI: Rhode Island Tf Green International" +RDU,B6,JetBlue Airways,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,3,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,3,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,3,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,3,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,3,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,3,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,3,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,3,"San Francisco, CA: San Francisco International" +SJC,B6,JetBlue Airways,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,B6,JetBlue Airways,3,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,3,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,3,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,3,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,3,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,3,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,3,"Albuquerque, NM: Albuquerque International Sunport" +ALB,DL,Delta Air Lines Inc.,3,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,3,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,3,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,3,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,3,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,3,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,3,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,3,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,3,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,3,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,3,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,3,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,3,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,3,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,3,"Buffalo, NY: Buffalo Niagara International" +BUR,DL,Delta Air Lines Inc.,3,"Burbank, CA: Bob Hope" +BWI,DL,Delta Air Lines Inc.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,3,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,3,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,3,"Chattanooga, TN: Lovell Field" +CHO,DL,Delta Air Lines Inc.,3,"Charlottesville, VA: Charlottesville Albemarle" +CHS,DL,Delta Air Lines Inc.,3,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,3,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,3,"Columbus, OH: John Glenn Columbus International" +CVG,DL,Delta Air Lines Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,3,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,3,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,3,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,3,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLH,DL,Delta Air Lines Inc.,3,"Duluth, MN: Duluth International" +DSM,DL,Delta Air Lines Inc.,3,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,3,"Panama City, FL: Northwest Florida Beaches International" +EGE,DL,Delta Air Lines Inc.,3,"Eagle, CO: Eagle County Regional" +ELP,DL,Delta Air Lines Inc.,3,"El Paso, TX: El Paso International" +EUG,DL,Delta Air Lines Inc.,3,"Eugene, OR: Mahlon Sweet Field" +EWR,DL,Delta Air Lines Inc.,3,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,3,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,3,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,3,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,3,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,3,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,3,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,3,"Spokane, WA: Spokane International" +GFK,DL,Delta Air Lines Inc.,3,"Grand Forks, ND: Grand Forks International" +GNV,DL,Delta Air Lines Inc.,3,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,3,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,3,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,3,"Greer, SC: Greenville-Spartanburg International" +HDN,DL,Delta Air Lines Inc.,3,"Hayden, CO: Yampa Valley" +HNL,DL,Delta Air Lines Inc.,3,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,3,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,3,"White Plains, NY: Westchester County" +HRL,DL,Delta Air Lines Inc.,3,"Harlingen/San Benito, TX: Valley International" +HSV,DL,Delta Air Lines Inc.,3,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,3,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,3,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,3,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,3,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,3,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,3,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,3,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,3,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,3,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,3,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,3,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,3,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,3,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,3,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,3,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,3,"Orlando, FL: Orlando International" +MDT,DL,Delta Air Lines Inc.,3,"Harrisburg, PA: Harrisburg International" +MDW,DL,Delta Air Lines Inc.,3,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,3,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,3,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,3,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,3,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,3,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,3,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,3,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,DL,Delta Air Lines Inc.,3,"Montrose/Delta, CO: Montrose Regional" +MYR,DL,Delta Air Lines Inc.,3,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,3,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,3,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,3,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,3,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,3,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,3,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,3,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,3,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,3,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,3,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,3,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,3,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,DL,Delta Air Lines Inc.,3,"Palm Springs, CA: Palm Springs International" +PVD,DL,Delta Air Lines Inc.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,3,"Portland, ME: Portland International Jetport" +RDU,DL,Delta Air Lines Inc.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,3,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,3,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,3,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,3,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,3,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,3,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,3,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,3,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,3,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,3,"San Francisco, CA: San Francisco International" +SGF,DL,Delta Air Lines Inc.,3,"Springfield, MO: Springfield-Branson National" +SJC,DL,Delta Air Lines Inc.,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,3,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,3,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,3,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,3,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,3,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,3,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,3,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,3,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,3,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,3,"Tampa, FL: Tampa International" +TUL,DL,Delta Air Lines Inc.,3,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,3,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,3,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,3,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,3,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,3,"Fayetteville, AR: Northwest Arkansas National" +ATL,F9,Frontier Airlines Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,3,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,3,"Hartford, CT: Bradley International" +BMI,F9,Frontier Airlines Inc.,3,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,3,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,3,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,3,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,3,"Buffalo, NY: Buffalo Niagara International" +BWI,F9,Frontier Airlines Inc.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHS,F9,Frontier Airlines Inc.,3,"Charleston, SC: Charleston AFB/International" +CID,F9,Frontier Airlines Inc.,3,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,3,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,3,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,3,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,3,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,3,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,3,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,3,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,3,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,3,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,3,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,3,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,3,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,3,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,3,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,3,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,3,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,3,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,3,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,3,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,3,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,3,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,3,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,3,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,F9,Frontier Airlines Inc.,3,"Myrtle Beach, SC: Myrtle Beach International" +OAK,F9,Frontier Airlines Inc.,3,"Oakland, CA: Metro Oakland International" +OKC,F9,Frontier Airlines Inc.,3,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,3,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,3,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,3,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,3,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,3,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,3,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,3,"Pensacola, FL: Pensacola International" +PVD,F9,Frontier Airlines Inc.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,F9,Frontier Airlines Inc.,3,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +ROC,F9,Frontier Airlines Inc.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,F9,Frontier Airlines Inc.,3,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,3,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,3,"San Antonio, TX: San Antonio International" +SAV,F9,Frontier Airlines Inc.,3,"Savannah, GA: Savannah/Hilton Head International" +SEA,F9,Frontier Airlines Inc.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,3,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,3,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,3,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,3,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,3,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,3,"St. Louis, MO: St Louis Lambert International" +SWF,F9,Frontier Airlines Inc.,3,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,F9,Frontier Airlines Inc.,3,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,3,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,3,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,3,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,3,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,3,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,3,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,3,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,3,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,3,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,3,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,3,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,3,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,3,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,3,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,3,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,3,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,3,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,3,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,3,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,3,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,3,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,3,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,3,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,3,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,3,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,3,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,3,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,3,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,3,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,3,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,3,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,3,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,3,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,3,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,3,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,3,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,3,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,3,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,3,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,3,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,3,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,3,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,3,"Grand Junction, CO: Grand Junction Regional" +GRI,G4,Allegiant Air,3,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,3,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,3,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,3,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,3,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,3,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,3,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,3,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,3,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,3,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,3,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,3,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,3,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,3,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,3,"Lexington, KY: Blue Grass" +LRD,G4,Allegiant Air,3,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,3,"Kansas City, MO: Kansas City International" +MDT,G4,Allegiant Air,3,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,3,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,3,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,3,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,G4,Allegiant Air,3,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,3,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,3,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,3,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,3,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,3,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,3,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,3,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,3,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,3,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,3,"Norfolk, VA: Norfolk International" +OWB,G4,Allegiant Air,3,"Owensboro, KY: Owensboro Daviess County Regional" +PBG,G4,Allegiant Air,3,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,3,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,3,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,3,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,3,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,3,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,3,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,3,"Portsmouth, NH: Portsmouth International at Pease" +PSP,G4,Allegiant Air,3,"Palm Springs, CA: Palm Springs International" +PVD,G4,Allegiant Air,3,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,3,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,3,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,3,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,3,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,3,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,3,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,3,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,3,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,3,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,3,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,3,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,3,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,3,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,3,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,3,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,3,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,3,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,3,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STC,G4,Allegiant Air,3,"St. Cloud, MN: St. Cloud Regional" +SWF,G4,Allegiant Air,3,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,3,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,3,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,3,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,3,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,3,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,3,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,3,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,3,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,3,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,3,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,3,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,3,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,3,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,3,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,3,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,3,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,3,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,3,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,3,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,3,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,3,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,3,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,3,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,3,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,3,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,3,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,3,"Sacramento, CA: Sacramento International" +ABE,MQ,Envoy Air,3,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABI,MQ,Envoy Air,3,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,3,"Albuquerque, NM: Albuquerque International Sunport" +AGS,MQ,Envoy Air,3,"Augusta, GA: Augusta Regional at Bush Field" +AMA,MQ,Envoy Air,3,"Amarillo, TX: Rick Husband Amarillo International" +ATL,MQ,Envoy Air,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,MQ,Envoy Air,3,"Appleton, WI: Appleton International" +AUS,MQ,Envoy Air,3,"Austin, TX: Austin - Bergstrom International" +AVL,MQ,Envoy Air,3,"Asheville, NC: Asheville Regional" +AVP,MQ,Envoy Air,3,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +AZO,MQ,Envoy Air,3,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,MQ,Envoy Air,3,"Hartford, CT: Bradley International" +BFL,MQ,Envoy Air,3,"Bakersfield, CA: Meadows Field" +BHM,MQ,Envoy Air,3,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,3,"Billings, MT: Billings Logan International" +BMI,MQ,Envoy Air,3,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,3,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,3,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,3,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,3,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,MQ,Envoy Air,3,"Buffalo, NY: Buffalo Niagara International" +BWI,MQ,Envoy Air,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,MQ,Envoy Air,3,"Bozeman, MT: Bozeman Yellowstone International" +CHA,MQ,Envoy Air,3,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,3,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,3,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,MQ,Envoy Air,3,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,3,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,3,"Champaign/Urbana, IL: University of Illinois/Willard" +COS,MQ,Envoy Air,3,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,MQ,Envoy Air,3,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,3,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,MQ,Envoy Air,3,"Mosinee, WI: Central Wisconsin" +DAB,MQ,Envoy Air,3,"Daytona Beach, FL: Daytona Beach International" +DAY,MQ,Envoy Air,3,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,3,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,MQ,Envoy Air,3,"Durango, CO: Durango La Plata County" +DSM,MQ,Envoy Air,3,"Des Moines, IA: Des Moines International" +DTW,MQ,Envoy Air,3,"Detroit, MI: Detroit Metro Wayne County" +ECP,MQ,Envoy Air,3,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,3,"El Paso, TX: El Paso International" +EVV,MQ,Envoy Air,3,"Evansville, IN: Evansville Regional" +EWR,MQ,Envoy Air,3,"Newark, NJ: Newark Liberty International" +EYW,MQ,Envoy Air,3,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,3,"Fargo, ND: Hector International" +FAT,MQ,Envoy Air,3,"Fresno, CA: Fresno Yosemite International" +FAY,MQ,Envoy Air,3,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FNT,MQ,Envoy Air,3,"Flint, MI: Bishop International" +FSM,MQ,Envoy Air,3,"Fort Smith, AR: Fort Smith Regional" +GJT,MQ,Envoy Air,3,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,3,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,3,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,3,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,3,"Killeen, TX: Robert Gray AAF" +GRR,MQ,Envoy Air,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,MQ,Envoy Air,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,3,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,3,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,3,"Houston, TX: William P Hobby" +HPN,MQ,Envoy Air,3,"White Plains, NY: Westchester County" +HRL,MQ,Envoy Air,3,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,3,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAH,MQ,Envoy Air,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,MQ,Envoy Air,3,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,3,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,3,"Jacksonville, FL: Jacksonville International" +LAN,MQ,Envoy Air,3,"Lansing, MI: Capital Region International" +LAW,MQ,Envoy Air,3,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LBB,MQ,Envoy Air,3,"Lubbock, TX: Lubbock Preston Smith International" +LCH,MQ,Envoy Air,3,"Lake Charles, LA: Lake Charles Regional" +LEX,MQ,Envoy Air,3,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,3,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LSE,MQ,Envoy Air,3,"La Crosse, WI: La Crosse Regional" +MAF,MQ,Envoy Air,3,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,3,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,3,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,3,"Montgomery, AL: Montgomery Regional" +MHK,MQ,Envoy Air,3,"Manhattan/Ft. Riley, KS: Manhattan Regional" +MIA,MQ,Envoy Air,3,"Miami, FL: Miami International" +MLI,MQ,Envoy Air,3,"Moline, IL: Quad Cities International" +MOB,MQ,Envoy Air,3,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,3,"Marquette, MI: Sawyer International" +MSN,MQ,Envoy Air,3,"Madison, WI: Dane County Regional-Truax Field" +MSO,MQ,Envoy Air,3,"Missoula, MT: Missoula Montana" +MSY,MQ,Envoy Air,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,MQ,Envoy Air,3,"Myrtle Beach, SC: Myrtle Beach International" +OKC,MQ,Envoy Air,3,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,3,"Omaha, NE: Eppley Airfield" +ORD,MQ,Envoy Air,3,"Chicago, IL: Chicago O'Hare International" +PHX,MQ,Envoy Air,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,3,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,3,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,3,"Pensacola, FL: Pensacola International" +PSP,MQ,Envoy Air,3,"Palm Springs, CA: Palm Springs International" +PVD,MQ,Envoy Air,3,"Providence, RI: Rhode Island Tf Green International" +RAP,MQ,Envoy Air,3,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,MQ,Envoy Air,3,"Richmond, VA: Richmond International" +RNO,MQ,Envoy Air,3,"Reno, NV: Reno/Tahoe International" +ROC,MQ,Envoy Air,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,MQ,Envoy Air,3,"Rochester, MN: Rochester International" +RSW,MQ,Envoy Air,3,"Fort Myers, FL: Southwest Florida International" +SAF,MQ,Envoy Air,3,"Santa Fe, NM: Santa Fe Municipal" +SAV,MQ,Envoy Air,3,"Savannah, GA: Savannah/Hilton Head International" +SBP,MQ,Envoy Air,3,"San Luis Obispo, CA: San Luis County Regional" +SDF,MQ,Envoy Air,3,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,3,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,3,"Shreveport, LA: Shreveport Regional" +SJT,MQ,Envoy Air,3,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,MQ,Envoy Air,3,"Salt Lake City, UT: Salt Lake City International" +STL,MQ,Envoy Air,3,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,3,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SYR,MQ,Envoy Air,3,"Syracuse, NY: Syracuse Hancock International" +TLH,MQ,Envoy Air,3,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,3,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,3,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,3,"Tulsa, OK: Tulsa International" +TVC,MQ,Envoy Air,3,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,3,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,3,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,3,"Fayetteville, AR: Northwest Arkansas National" +YUM,MQ,Envoy Air,3,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,NK,Spirit Air Lines,3,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,3,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,3,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,3,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,3,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,3,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,3,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,3,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,3,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CLE,NK,Spirit Air Lines,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,3,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,3,"Columbus, OH: John Glenn Columbus International" +CRW,NK,Spirit Air Lines,3,"Charleston/Dunbar, WV: West Virginia International Yeager" +DEN,NK,Spirit Air Lines,3,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,3,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,3,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,3,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,3,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,3,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,3,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,3,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,3,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,3,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,3,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,3,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,3,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,3,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,3,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,3,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,3,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,3,"Chicago, IL: Chicago O'Hare International" +ORF,NK,Spirit Air Lines,3,"Norfolk, VA: Norfolk International" +PBI,NK,Spirit Air Lines,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,3,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,3,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,3,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,3,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,3,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,3,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,3,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,3,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,3,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,3,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,3,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,3,"Seattle, WA: Seattle/Tacoma International" +SJU,NK,Spirit Air Lines,3,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,3,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,3,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,3,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,3,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,3,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,3,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,3,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,3,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,3,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,3,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,3,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,3,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,3,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,3,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,3,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,3,"Nashville, TN: Nashville International" +BTR,OH,PSA Airlines Inc.,3,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,3,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,3,"Buffalo, NY: Buffalo Niagara International" +CAE,OH,PSA Airlines Inc.,3,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,3,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,3,"Chattanooga, TN: Lovell Field" +CHS,OH,PSA Airlines Inc.,3,"Charleston, SC: Charleston AFB/International" +CLE,OH,PSA Airlines Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,3,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,3,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,3,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,3,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DFW,OH,PSA Airlines Inc.,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,OH,PSA Airlines Inc.,3,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,3,"Panama City, FL: Northwest Florida Beaches International" +GNV,OH,PSA Airlines Inc.,3,"Gainesville, FL: Gainesville Regional" +GPT,OH,PSA Airlines Inc.,3,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,3,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,3,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,3,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,OH,PSA Airlines Inc.,3,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,3,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,3,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,3,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,3,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,3,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,3,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,3,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,3,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,3,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,3,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,3,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,3,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,3,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,3,"Melbourne, FL: Melbourne Orlando International" +MOB,OH,PSA Airlines Inc.,3,"Mobile, AL: Mobile Regional" +MSP,OH,PSA Airlines Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,3,"Myrtle Beach, SC: Myrtle Beach International" +OKC,OH,PSA Airlines Inc.,3,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,3,"Norfolk, VA: Norfolk International" +PGV,OH,PSA Airlines Inc.,3,"Greenville, NC: Pitt Greenville" +PHL,OH,PSA Airlines Inc.,3,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,3,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,3,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,3,"Portland, ME: Portland International Jetport" +RDU,OH,PSA Airlines Inc.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,OH,PSA Airlines Inc.,3,"Richmond, VA: Richmond International" +ROA,OH,PSA Airlines Inc.,3,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OH,PSA Airlines Inc.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,OH,PSA Airlines Inc.,3,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,3,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,3,"Louisville, KY: Louisville Muhammad Ali International" +SHV,OH,PSA Airlines Inc.,3,"Shreveport, LA: Shreveport Regional" +SRQ,OH,PSA Airlines Inc.,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OH,PSA Airlines Inc.,3,"St. Louis, MO: St Louis Lambert International" +SYR,OH,PSA Airlines Inc.,3,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,3,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,3,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,3,"Tulsa, OK: Tulsa International" +TYS,OH,PSA Airlines Inc.,3,"Knoxville, TN: McGhee Tyson" +ABE,OO,SkyWest Airlines Inc.,3,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,3,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,3,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,3,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,3,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,3,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,3,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,3,"Albany, NY: Albany International" +AMA,OO,SkyWest Airlines Inc.,3,"Amarillo, TX: Rick Husband Amarillo International" +APN,OO,SkyWest Airlines Inc.,3,"Alpena, MI: Alpena County Regional" +ASE,OO,SkyWest Airlines Inc.,3,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,3,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,3,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,3,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,3,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OO,SkyWest Airlines Inc.,3,"Hartford, CT: Bradley International" +BFF,OO,SkyWest Airlines Inc.,3,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,3,"Bakersfield, CA: Meadows Field" +BHM,OO,SkyWest Airlines Inc.,3,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIH,OO,SkyWest Airlines Inc.,3,"Bishop, CA: Bishop Airport" +BIL,OO,SkyWest Airlines Inc.,3,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,3,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,3,"Bemidji, MN: Bemidji Regional" +BLI,OO,SkyWest Airlines Inc.,3,"Bellingham, WA: Bellingham International" +BMI,OO,SkyWest Airlines Inc.,3,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,3,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,3,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,3,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,3,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,3,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,3,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,3,"Butte, MT: Bert Mooney" +BTR,OO,SkyWest Airlines Inc.,3,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,OO,SkyWest Airlines Inc.,3,"Buffalo, NY: Buffalo Niagara International" +BUR,OO,SkyWest Airlines Inc.,3,"Burbank, CA: Bob Hope" +BWI,OO,SkyWest Airlines Inc.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,OO,SkyWest Airlines Inc.,3,"Bozeman, MT: Bozeman Yellowstone International" +CAE,OO,SkyWest Airlines Inc.,3,"Columbia, SC: Columbia Metropolitan" +CAK,OO,SkyWest Airlines Inc.,3,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,3,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,3,"Chattanooga, TN: Lovell Field" +CHS,OO,SkyWest Airlines Inc.,3,"Charleston, SC: Charleston AFB/International" +CID,OO,SkyWest Airlines Inc.,3,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,3,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,3,"College Station/Bryan, TX: Easterwood Field" +CLT,OO,SkyWest Airlines Inc.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,OO,SkyWest Airlines Inc.,3,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,3,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,3,"Moab, UT: Canyonlands Regional" +COD,OO,SkyWest Airlines Inc.,3,"Cody, WY: Yellowstone Regional" +COS,OO,SkyWest Airlines Inc.,3,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,OO,SkyWest Airlines Inc.,3,"Columbia, MO: Columbia Regional" +CPR,OO,SkyWest Airlines Inc.,3,"Casper, WY: Casper/Natrona County International" +CRP,OO,SkyWest Airlines Inc.,3,"Corpus Christi, TX: Corpus Christi International" +CRW,OO,SkyWest Airlines Inc.,3,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OO,SkyWest Airlines Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CYS,OO,SkyWest Airlines Inc.,3,"Cheyenne, WY: Cheyenne Regional/Jerry Olson Field" +DCA,OO,SkyWest Airlines Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,3,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,3,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,3,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,3,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,3,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,3,"Durango, CO: Durango La Plata County" +DRT,OO,SkyWest Airlines Inc.,3,"Del Rio, TX: Del Rio International" +DSM,OO,SkyWest Airlines Inc.,3,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,3,"Devils Lake, ND: Devils Lake Regional" +ECP,OO,SkyWest Airlines Inc.,3,"Panama City, FL: Northwest Florida Beaches International" +EGE,OO,SkyWest Airlines Inc.,3,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,3,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,3,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,3,"El Paso, TX: El Paso International" +ERI,OO,SkyWest Airlines Inc.,3,"Erie, PA: Erie International/Tom Ridge Field" +ESC,OO,SkyWest Airlines Inc.,3,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,3,"Eugene, OR: Mahlon Sweet Field" +EWR,OO,SkyWest Airlines Inc.,3,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,3,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,3,"Fresno, CA: Fresno Yosemite International" +FCA,OO,SkyWest Airlines Inc.,3,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,3,"Flagstaff, AZ: Flagstaff Pulliam" +FNT,OO,SkyWest Airlines Inc.,3,"Flint, MI: Bishop International" +FOD,OO,SkyWest Airlines Inc.,3,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,3,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,3,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,3,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,3,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,3,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,3,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,3,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,3,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,3,"Grand Junction, CO: Grand Junction Regional" +GPT,OO,SkyWest Airlines Inc.,3,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,OO,SkyWest Airlines Inc.,3,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,3,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,3,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OO,SkyWest Airlines Inc.,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OO,SkyWest Airlines Inc.,3,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,3,"Great Falls, MT: Great Falls International" +GUC,OO,SkyWest Airlines Inc.,3,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,3,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,3,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,3,"Helena, MT: Helena Regional" +HOU,OO,SkyWest Airlines Inc.,3,"Houston, TX: William P Hobby" +HPN,OO,SkyWest Airlines Inc.,3,"White Plains, NY: Westchester County" +HRL,OO,SkyWest Airlines Inc.,3,"Harlingen/San Benito, TX: Valley International" +HSV,OO,SkyWest Airlines Inc.,3,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,3,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,3,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,3,"Idaho Falls, ID: Idaho Falls Regional" +ILM,OO,SkyWest Airlines Inc.,3,"Wilmington, NC: Wilmington International" +IMT,OO,SkyWest Airlines Inc.,3,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,3,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,3,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,3,"Jackson, WY: Jackson Hole" +JAN,OO,SkyWest Airlines Inc.,3,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OO,SkyWest Airlines Inc.,3,"Jacksonville, FL: Jacksonville International" +JFK,OO,SkyWest Airlines Inc.,3,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,3,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,3,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,3,"Johnstown, PA: John Murtha Johnstown-Cambria County" +LAR,OO,SkyWest Airlines Inc.,3,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,3,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,3,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,3,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,3,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,3,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,3,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,3,"Lake Charles, LA: Lake Charles Regional" +LEX,OO,SkyWest Airlines Inc.,3,"Lexington, KY: Blue Grass" +LFT,OO,SkyWest Airlines Inc.,3,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,3,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,3,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,3,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,3,"Laredo, TX: Laredo International" +LWS,OO,SkyWest Airlines Inc.,3,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,3,"Midland/Odessa, TX: Midland International Air and Space Port" +MBS,OO,SkyWest Airlines Inc.,3,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,OO,SkyWest Airlines Inc.,3,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,3,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,3,"Harrisburg, PA: Harrisburg International" +MEI,OO,SkyWest Airlines Inc.,3,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,3,"Memphis, TN: Memphis International" +MFE,OO,SkyWest Airlines Inc.,3,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,OO,SkyWest Airlines Inc.,3,"Medford, OR: Rogue Valley International - Medford" +MHK,OO,SkyWest Airlines Inc.,3,"Manhattan/Ft. Riley, KS: Manhattan Regional" +MKE,OO,SkyWest Airlines Inc.,3,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,3,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,3,"Monroe, LA: Monroe Regional" +MOB,OO,SkyWest Airlines Inc.,3,"Mobile, AL: Mobile Regional" +MOT,OO,SkyWest Airlines Inc.,3,"Minot, ND: Minot International" +MRY,OO,SkyWest Airlines Inc.,3,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,3,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,3,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OO,SkyWest Airlines Inc.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,OO,SkyWest Airlines Inc.,3,"Montrose/Delta, CO: Montrose Regional" +OAJ,OO,SkyWest Airlines Inc.,3,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,OO,SkyWest Airlines Inc.,3,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,3,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,3,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,3,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,3,"Chicago, IL: Chicago O'Hare International" +ORF,OO,SkyWest Airlines Inc.,3,"Norfolk, VA: Norfolk International" +OTH,OO,SkyWest Airlines Inc.,3,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PDX,OO,SkyWest Airlines Inc.,3,"Portland, OR: Portland International" +PHX,OO,SkyWest Airlines Inc.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,OO,SkyWest Airlines Inc.,3,"Peoria, IL: General Downing - Peoria International" +PIB,OO,SkyWest Airlines Inc.,3,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,3,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,3,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,3,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,3,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,3,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,3,"Palm Springs, CA: Palm Springs International" +PVD,OO,SkyWest Airlines Inc.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,OO,SkyWest Airlines Inc.,3,"Portland, ME: Portland International Jetport" +RAP,OO,SkyWest Airlines Inc.,3,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,3,"Redding, CA: Redding Municipal" +RDM,OO,SkyWest Airlines Inc.,3,"Bend/Redmond, OR: Roberts Field" +RHI,OO,SkyWest Airlines Inc.,3,"Rhinelander, WI: Rhinelander/Oneida County" +RIW,OO,SkyWest Airlines Inc.,3,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,3,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,3,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,3,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OO,SkyWest Airlines Inc.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +ROW,OO,SkyWest Airlines Inc.,3,"Roswell, NM: Roswell Air Center" +RST,OO,SkyWest Airlines Inc.,3,"Rochester, MN: Rochester International" +SAF,OO,SkyWest Airlines Inc.,3,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,3,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,3,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,3,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,3,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,3,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,3,"San Luis Obispo, CA: San Luis County Regional" +SCE,OO,SkyWest Airlines Inc.,3,"State College, PA: University Park" +SDF,OO,SkyWest Airlines Inc.,3,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,3,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,3,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,3,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,3,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,3,"Shreveport, LA: Shreveport Regional" +SJC,OO,SkyWest Airlines Inc.,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,3,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,3,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,3,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,3,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,3,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,OO,SkyWest Airlines Inc.,3,"Springfield, IL: Abraham Lincoln Capital" +SPS,OO,SkyWest Airlines Inc.,3,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +SRQ,OO,SkyWest Airlines Inc.,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OO,SkyWest Airlines Inc.,3,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,3,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,3,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,3,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,3,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,3,"Syracuse, NY: Syracuse Hancock International" +TRI,OO,SkyWest Airlines Inc.,3,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OO,SkyWest Airlines Inc.,3,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,3,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,3,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,3,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,3,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,3,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,3,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,3,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,3,"Vernal, UT: Vernal Regional" +XNA,OO,SkyWest Airlines Inc.,3,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,3,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,3,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,3,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,3,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,3,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,3,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,3,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,3,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,3,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,3,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,3,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,3,"Aguadilla, PR: Rafael Hernandez" +BTV,UA,United Air Lines Inc.,3,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,3,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,3,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,3,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,3,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,3,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,3,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,3,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,3,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,3,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,UA,United Air Lines Inc.,3,"Durango, CO: Durango La Plata County" +DSM,UA,United Air Lines Inc.,3,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,3,"Detroit, MI: Detroit Metro Wayne County" +EGE,UA,United Air Lines Inc.,3,"Eagle, CO: Eagle County Regional" +ELP,UA,United Air Lines Inc.,3,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,3,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,3,"Newark, NJ: Newark Liberty International" +FAT,UA,United Air Lines Inc.,3,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,3,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,3,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,3,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,3,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,3,"Grand Rapids, MI: Gerald R. Ford International" +GSP,UA,United Air Lines Inc.,3,"Greer, SC: Greenville-Spartanburg International" +GUM,UA,United Air Lines Inc.,3,"Guam, TT: Guam International" +HDN,UA,United Air Lines Inc.,3,"Hayden, CO: Yampa Valley" +HNL,UA,United Air Lines Inc.,3,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,3,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,3,"Indianapolis, IN: Indianapolis International" +JAC,UA,United Air Lines Inc.,3,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,3,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,3,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,3,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,3,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,3,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,3,"Lihue, HI: Lihue Airport" +MAF,UA,United Air Lines Inc.,3,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,UA,United Air Lines Inc.,3,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,3,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,3,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,3,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,3,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,UA,United Air Lines Inc.,3,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,3,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,3,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,3,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,3,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,UA,United Air Lines Inc.,3,"Montrose/Delta, CO: Montrose Regional" +OGG,UA,United Air Lines Inc.,3,"Kahului, HI: Kahului Airport" +OKC,UA,United Air Lines Inc.,3,"Oklahoma City, OK: Will Rogers World" +OMA,UA,United Air Lines Inc.,3,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,3,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,3,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,3,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,3,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,3,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,3,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,3,"Pensacola, FL: Pensacola International" +PSP,UA,United Air Lines Inc.,3,"Palm Springs, CA: Palm Springs International" +PVD,UA,United Air Lines Inc.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,UA,United Air Lines Inc.,3,"Portland, ME: Portland International Jetport" +RDM,UA,United Air Lines Inc.,3,"Bend/Redmond, OR: Roberts Field" +RDU,UA,United Air Lines Inc.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,3,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,3,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,3,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,3,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,3,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,3,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,3,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,3,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,3,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,3,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,3,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,3,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,3,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,3,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,3,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,3,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,3,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,3,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,3,"Tulsa, OK: Tulsa International" +TUS,UA,United Air Lines Inc.,3,"Tucson, AZ: Tucson International" +TVC,UA,United Air Lines Inc.,3,"Traverse City, MI: Cherry Capital" +ABQ,WN,Southwest Airlines Co.,3,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,3,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,3,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,3,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,3,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,3,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,3,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,3,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,3,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,3,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,3,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,3,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,3,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,3,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,3,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,3,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,3,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,3,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,3,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,3,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,3,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,3,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,3,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,3,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,3,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,3,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,3,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,3,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,3,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,3,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,3,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,3,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,3,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,3,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,3,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,3,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,3,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,3,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,3,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,3,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,3,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,3,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,3,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,3,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,3,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,3,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,3,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,3,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,3,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,3,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,3,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,3,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,3,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,3,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,3,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,3,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,3,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,3,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,3,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,3,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,3,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,3,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,3,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,3,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,3,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,3,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,3,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,3,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,3,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,3,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,3,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,3,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,3,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,3,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,3,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,3,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,3,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,3,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,3,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,3,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,3,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,3,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,3,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,3,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,3,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,3,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,3,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,3,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,3,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,3,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,3,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,3,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,3,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,3,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ALB,YX,Republic Airline,3,"Albany, NY: Albany International" +ATL,YX,Republic Airline,3,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,3,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,3,"Asheville, NC: Asheville Regional" +AVP,YX,Republic Airline,3,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,YX,Republic Airline,3,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,3,"Bangor, ME: Bangor International" +BNA,YX,Republic Airline,3,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,3,"Boston, MA: Logan International" +BTV,YX,Republic Airline,3,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,3,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,3,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHA,YX,Republic Airline,3,"Chattanooga, TN: Lovell Field" +CHO,YX,Republic Airline,3,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,3,"Charleston, SC: Charleston AFB/International" +CLE,YX,Republic Airline,3,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,3,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,3,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,3,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,3,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,3,"Washington, DC: Ronald Reagan Washington National" +DFW,YX,Republic Airline,3,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,YX,Republic Airline,3,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,3,"Detroit, MI: Detroit Metro Wayne County" +EWR,YX,Republic Airline,3,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,3,"Key West, FL: Key West International" +FSD,YX,Republic Airline,3,"Sioux Falls, SD: Joe Foss Field" +GRB,YX,Republic Airline,3,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,YX,Republic Airline,3,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,3,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,3,"Greer, SC: Greenville-Spartanburg International" +HHH,YX,Republic Airline,3,"Hilton Head, SC: Hilton Head Airport" +HPN,YX,Republic Airline,3,"White Plains, NY: Westchester County" +HSV,YX,Republic Airline,3,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,YX,Republic Airline,3,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,3,"Houston, TX: George Bush Intercontinental/Houston" +ICT,YX,Republic Airline,3,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,YX,Republic Airline,3,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,3,"Indianapolis, IN: Indianapolis International" +JAX,YX,Republic Airline,3,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,3,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,3,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,3,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,3,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,3,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,3,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,3,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,3,"Manchester, NH: Manchester Boston Regional" +MIA,YX,Republic Airline,3,"Miami, FL: Miami International" +MKE,YX,Republic Airline,3,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,3,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,3,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,YX,Republic Airline,3,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,YX,Republic Airline,3,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,3,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,3,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,3,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,3,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,3,"Worcester, MA: Worcester Regional" +PBI,YX,Republic Airline,3,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PHL,YX,Republic Airline,3,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,3,"Pittsburgh, PA: Pittsburgh International" +PNS,YX,Republic Airline,3,"Pensacola, FL: Pensacola International" +PVD,YX,Republic Airline,3,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,3,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,3,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,3,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,3,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,3,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAT,YX,Republic Airline,3,"San Antonio, TX: San Antonio International" +SAV,YX,Republic Airline,3,"Savannah, GA: Savannah/Hilton Head International" +SDF,YX,Republic Airline,3,"Louisville, KY: Louisville Muhammad Ali International" +SRQ,YX,Republic Airline,3,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,YX,Republic Airline,3,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,3,"Syracuse, NY: Syracuse Hancock International" +TPA,YX,Republic Airline,3,"Tampa, FL: Tampa International" +TUL,YX,Republic Airline,3,"Tulsa, OK: Tulsa International" +TVC,YX,Republic Airline,3,"Traverse City, MI: Cherry Capital" +TYS,YX,Republic Airline,3,"Knoxville, TN: McGhee Tyson" +XNA,YX,Republic Airline,3,"Fayetteville, AR: Northwest Arkansas National" +ABY,9E,Endeavor Air Inc.,2,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,2,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,2,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,2,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,9E,Endeavor Air Inc.,2,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,2,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,2,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,2,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,2,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,2,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,2,"Birmingham, AL: Birmingham-Shuttlesworth International" +BMI,9E,Endeavor Air Inc.,2,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,9E,Endeavor Air Inc.,2,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,2,"Brunswick, GA: Brunswick Golden Isles" +BTR,9E,Endeavor Air Inc.,2,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,9E,Endeavor Air Inc.,2,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,2,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,2,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,2,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,2,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,2,"Charleston, SC: Charleston AFB/International" +CID,9E,Endeavor Air Inc.,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,9E,Endeavor Air Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,2,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,2,"Columbus, OH: John Glenn Columbus International" +CRW,9E,Endeavor Air Inc.,2,"Charleston/Dunbar, WV: West Virginia International Yeager" +CSG,9E,Endeavor Air Inc.,2,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,2,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,2,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DHN,9E,Endeavor Air Inc.,2,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,2,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,2,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,2,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,2,"Newark, NJ: Newark Liberty International" +EYW,9E,Endeavor Air Inc.,2,"Key West, FL: Key West International" +FAY,9E,Endeavor Air Inc.,2,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FSD,9E,Endeavor Air Inc.,2,"Sioux Falls, SD: Joe Foss Field" +GFK,9E,Endeavor Air Inc.,2,"Grand Forks, ND: Grand Forks International" +GRB,9E,Endeavor Air Inc.,2,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,9E,Endeavor Air Inc.,2,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,2,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,2,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,2,"Columbus, MS: Golden Triangle Regional" +HPN,9E,Endeavor Air Inc.,2,"White Plains, NY: Westchester County" +HSV,9E,Endeavor Air Inc.,2,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,9E,Endeavor Air Inc.,2,"Washington, DC: Washington Dulles International" +ILM,9E,Endeavor Air Inc.,2,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,2,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,2,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,9E,Endeavor Air Inc.,2,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,2,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,2,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,2,"Lexington, KY: Blue Grass" +LFT,9E,Endeavor Air Inc.,2,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,9E,Endeavor Air Inc.,2,"New York, NY: LaGuardia" +LSE,9E,Endeavor Air Inc.,2,"La Crosse, WI: La Crosse Regional" +MBS,9E,Endeavor Air Inc.,2,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,2,"Kansas City, MO: Kansas City International" +MDT,9E,Endeavor Air Inc.,2,"Harrisburg, PA: Harrisburg International" +MDW,9E,Endeavor Air Inc.,2,"Chicago, IL: Chicago Midway International" +MEM,9E,Endeavor Air Inc.,2,"Memphis, TN: Memphis International" +MGM,9E,Endeavor Air Inc.,2,"Montgomery, AL: Montgomery Regional" +MKE,9E,Endeavor Air Inc.,2,"Milwaukee, WI: General Mitchell International" +MLU,9E,Endeavor Air Inc.,2,"Monroe, LA: Monroe Regional" +MOB,9E,Endeavor Air Inc.,2,"Mobile, AL: Mobile Regional" +MQT,9E,Endeavor Air Inc.,2,"Marquette, MI: Sawyer International" +MSN,9E,Endeavor Air Inc.,2,"Madison, WI: Dane County Regional-Truax Field" +MSP,9E,Endeavor Air Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MYR,9E,Endeavor Air Inc.,2,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,9E,Endeavor Air Inc.,2,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OMA,9E,Endeavor Air Inc.,2,"Omaha, NE: Eppley Airfield" +ORF,9E,Endeavor Air Inc.,2,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,2,"Worcester, MA: Worcester Regional" +PIT,9E,Endeavor Air Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,2,"Portland, ME: Portland International Jetport" +RDU,9E,Endeavor Air Inc.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,2,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,2,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,9E,Endeavor Air Inc.,2,"Savannah, GA: Savannah/Hilton Head International" +SCE,9E,Endeavor Air Inc.,2,"State College, PA: University Park" +SDF,9E,Endeavor Air Inc.,2,"Louisville, KY: Louisville Muhammad Ali International" +SGF,9E,Endeavor Air Inc.,2,"Springfield, MO: Springfield-Branson National" +STL,9E,Endeavor Air Inc.,2,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,2,"Syracuse, NY: Syracuse Hancock International" +TRI,9E,Endeavor Air Inc.,2,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TVC,9E,Endeavor Air Inc.,2,"Traverse City, MI: Cherry Capital" +TYS,9E,Endeavor Air Inc.,2,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,2,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,2,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,2,"Albuquerque, NM: Albuquerque International Sunport" +ALB,AA,American Airlines Inc.,2,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,2,"Amarillo, TX: Rick Husband Amarillo International" +ATL,AA,American Airlines Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,2,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,2,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,2,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,2,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,2,"Bakersfield, CA: Meadows Field" +BHM,AA,American Airlines Inc.,2,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,2,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,2,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,2,"Boston, MA: Logan International" +BUF,AA,American Airlines Inc.,2,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,2,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,2,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,2,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,2,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,2,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,2,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,2,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,2,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,2,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,AA,American Airlines Inc.,2,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,2,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,2,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,2,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,2,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,2,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,2,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,2,"Fresno, CA: Fresno Yosemite International" +FLL,AA,American Airlines Inc.,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,AA,American Airlines Inc.,2,"Sioux Falls, SD: Joe Foss Field" +GEG,AA,American Airlines Inc.,2,"Spokane, WA: Spokane International" +GRR,AA,American Airlines Inc.,2,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,2,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,2,"Greer, SC: Greenville-Spartanburg International" +GUC,AA,American Airlines Inc.,2,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,AA,American Airlines Inc.,2,"Hayden, CO: Yampa Valley" +HNL,AA,American Airlines Inc.,2,"Honolulu, HI: Daniel K Inouye International" +HSV,AA,American Airlines Inc.,2,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,AA,American Airlines Inc.,2,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,2,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,2,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,2,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,2,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,2,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,2,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,2,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,2,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,2,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,2,"Lubbock, TX: Lubbock Preston Smith International" +LGA,AA,American Airlines Inc.,2,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,2,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,2,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,2,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,2,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,2,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,2,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MIA,AA,American Airlines Inc.,2,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,2,"Milwaukee, WI: General Mitchell International" +MRY,AA,American Airlines Inc.,2,"Monterey, CA: Monterey Regional" +MSN,AA,American Airlines Inc.,2,"Madison, WI: Dane County Regional-Truax Field" +MSO,AA,American Airlines Inc.,2,"Missoula, MT: Missoula Montana" +MSP,AA,American Airlines Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,2,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,2,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,2,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,2,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,2,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,2,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,2,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,2,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,2,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,2,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,2,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,2,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,2,"Portland, ME: Portland International Jetport" +RDU,AA,American Airlines Inc.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,2,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,2,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,2,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,2,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,2,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,2,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,2,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,2,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,2,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,2,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,2,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,2,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,2,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,2,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,2,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,2,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,2,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,2,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,2,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,2,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,2,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,2,"Tucson, AZ: Tucson International" +TYS,AA,American Airlines Inc.,2,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,2,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,2,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,2,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,2,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,2,"Kodiak, AK: Kodiak Airport" +ANC,AS,Alaska Airlines Inc.,2,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,2,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,2,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,2,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,2,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,2,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,2,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,2,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,2,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,2,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,2,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,2,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,2,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,2,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,AS,Alaska Airlines Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,2,"El Paso, TX: El Paso International" +EWR,AS,Alaska Airlines Inc.,2,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,2,"Fairbanks, AK: Fairbanks International" +FLL,AS,Alaska Airlines Inc.,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,2,"Spokane, WA: Spokane International" +HNL,AS,Alaska Airlines Inc.,2,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,2,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,2,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,2,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,2,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,2,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,2,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,2,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,2,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,2,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,2,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,2,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,2,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,2,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,2,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,2,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,2,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,2,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,2,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,2,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,2,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,2,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,2,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,2,"Kotzebue, AK: Ralph Wien Memorial" +PAE,AS,Alaska Airlines Inc.,2,"Everett, WA: Snohomish County" +PDX,AS,Alaska Airlines Inc.,2,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,2,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PSG,AS,Alaska Airlines Inc.,2,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,2,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,2,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,2,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,2,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,2,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,2,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,2,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,2,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,2,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,2,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,2,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,2,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,2,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,2,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,2,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,2,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,2,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,2,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,2,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,2,"Yakutat, AK: Yakutat Airport" +ALB,B6,JetBlue Airways,2,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,2,"Austin, TX: Austin - Bergstrom International" +BDL,B6,JetBlue Airways,2,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,2,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,2,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,2,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,2,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,2,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,2,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,B6,JetBlue Airways,2,"Bozeman, MT: Bozeman Yellowstone International" +CHS,B6,JetBlue Airways,2,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,2,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,2,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,2,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,2,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,2,"Newark, NJ: Newark Liberty International" +EYW,B6,JetBlue Airways,2,"Key West, FL: Key West International" +FLL,B6,JetBlue Airways,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HDN,B6,JetBlue Airways,2,"Hayden, CO: Yampa Valley" +HPN,B6,JetBlue Airways,2,"White Plains, NY: Westchester County" +IAH,B6,JetBlue Airways,2,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,2,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,2,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,2,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,2,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,2,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,2,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,2,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,2,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,2,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,2,"New Orleans, LA: Louis Armstrong New Orleans International" +ONT,B6,JetBlue Airways,2,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,2,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,2,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PHL,B6,JetBlue Airways,2,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,2,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,2,"Ponce, PR: Mercedita" +PSP,B6,JetBlue Airways,2,"Palm Springs, CA: Palm Springs International" +PVD,B6,JetBlue Airways,2,"Providence, RI: Rhode Island Tf Green International" +RDU,B6,JetBlue Airways,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,2,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,2,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,2,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,2,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,2,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,2,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,2,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,2,"San Francisco, CA: San Francisco International" +SJU,B6,JetBlue Airways,2,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,2,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,2,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,2,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,2,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,2,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,2,"Albuquerque, NM: Albuquerque International Sunport" +ALB,DL,Delta Air Lines Inc.,2,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,2,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,2,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,2,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,2,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,2,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,2,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,2,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,2,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,2,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,2,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,2,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,2,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,2,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,2,"Buffalo, NY: Buffalo Niagara International" +BUR,DL,Delta Air Lines Inc.,2,"Burbank, CA: Bob Hope" +BWI,DL,Delta Air Lines Inc.,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,2,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,2,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,2,"Chattanooga, TN: Lovell Field" +CHS,DL,Delta Air Lines Inc.,2,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,2,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,2,"Columbus, OH: John Glenn Columbus International" +CVG,DL,Delta Air Lines Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,2,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,2,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,2,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,2,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLH,DL,Delta Air Lines Inc.,2,"Duluth, MN: Duluth International" +DSM,DL,Delta Air Lines Inc.,2,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,2,"Panama City, FL: Northwest Florida Beaches International" +EGE,DL,Delta Air Lines Inc.,2,"Eagle, CO: Eagle County Regional" +ELP,DL,Delta Air Lines Inc.,2,"El Paso, TX: El Paso International" +EUG,DL,Delta Air Lines Inc.,2,"Eugene, OR: Mahlon Sweet Field" +EVV,DL,Delta Air Lines Inc.,2,"Evansville, IN: Evansville Regional" +EWR,DL,Delta Air Lines Inc.,2,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,2,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,2,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,2,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,2,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,2,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,2,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,2,"Spokane, WA: Spokane International" +GNV,DL,Delta Air Lines Inc.,2,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,2,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,2,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,2,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,2,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,2,"Greer, SC: Greenville-Spartanburg International" +HDN,DL,Delta Air Lines Inc.,2,"Hayden, CO: Yampa Valley" +HNL,DL,Delta Air Lines Inc.,2,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,2,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,2,"White Plains, NY: Westchester County" +HRL,DL,Delta Air Lines Inc.,2,"Harlingen/San Benito, TX: Valley International" +HSV,DL,Delta Air Lines Inc.,2,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,2,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,2,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,2,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,2,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,2,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,2,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,2,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,2,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,2,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,2,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,2,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,2,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,2,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,2,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,2,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,2,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,2,"Orlando, FL: Orlando International" +MDW,DL,Delta Air Lines Inc.,2,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,2,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,2,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,2,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,2,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,2,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,2,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,2,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,DL,Delta Air Lines Inc.,2,"Montrose/Delta, CO: Montrose Regional" +MYR,DL,Delta Air Lines Inc.,2,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,2,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,2,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,2,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,2,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,2,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,2,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,2,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,2,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,2,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,2,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,2,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,2,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,DL,Delta Air Lines Inc.,2,"Palm Springs, CA: Palm Springs International" +PVD,DL,Delta Air Lines Inc.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,2,"Portland, ME: Portland International Jetport" +RDU,DL,Delta Air Lines Inc.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,2,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,2,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,2,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,2,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,2,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,2,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,2,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,2,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,2,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,2,"San Francisco, CA: San Francisco International" +SJC,DL,Delta Air Lines Inc.,2,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,2,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,2,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,2,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,2,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,2,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,2,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,2,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,2,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,2,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,2,"Tampa, FL: Tampa International" +TUL,DL,Delta Air Lines Inc.,2,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,2,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,2,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,2,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,2,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,2,"Fayetteville, AR: Northwest Arkansas National" +ATL,F9,Frontier Airlines Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,2,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,2,"Hartford, CT: Bradley International" +BMI,F9,Frontier Airlines Inc.,2,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,2,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,2,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,2,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,2,"Buffalo, NY: Buffalo Niagara International" +BUR,F9,Frontier Airlines Inc.,2,"Burbank, CA: Bob Hope" +BWI,F9,Frontier Airlines Inc.,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CID,F9,Frontier Airlines Inc.,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,2,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,2,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,2,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,2,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,2,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,2,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,2,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,2,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,2,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,2,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,2,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,2,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,2,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,2,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,2,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,2,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,2,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,2,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,2,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,2,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,2,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,2,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,2,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,2,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,F9,Frontier Airlines Inc.,2,"Oakland, CA: Metro Oakland International" +OKC,F9,Frontier Airlines Inc.,2,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,2,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,2,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,2,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,2,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,2,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,2,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,2,"Pensacola, FL: Pensacola International" +PVD,F9,Frontier Airlines Inc.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,F9,Frontier Airlines Inc.,2,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,F9,Frontier Airlines Inc.,2,"Reno, NV: Reno/Tahoe International" +ROC,F9,Frontier Airlines Inc.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,F9,Frontier Airlines Inc.,2,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,2,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,2,"San Antonio, TX: San Antonio International" +SAV,F9,Frontier Airlines Inc.,2,"Savannah, GA: Savannah/Hilton Head International" +SEA,F9,Frontier Airlines Inc.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,2,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,2,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,2,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,2,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,2,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,2,"St. Louis, MO: St Louis Lambert International" +SWF,F9,Frontier Airlines Inc.,2,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,F9,Frontier Airlines Inc.,2,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,2,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,2,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,2,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,2,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,2,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,2,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,2,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,2,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,2,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,2,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,2,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,2,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,2,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,2,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,2,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,2,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,2,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,2,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,2,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,2,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,2,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,2,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,2,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,2,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,2,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,2,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,2,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,2,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,2,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,2,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,2,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,2,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,2,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,2,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,2,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,2,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,2,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,2,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,2,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,2,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,2,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,2,"Grand Junction, CO: Grand Junction Regional" +GRI,G4,Allegiant Air,2,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,2,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,2,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,2,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,2,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,2,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,2,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,2,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,2,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,2,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,2,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,2,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,2,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,2,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,2,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,2,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,2,"Lexington, KY: Blue Grass" +LRD,G4,Allegiant Air,2,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,2,"Kansas City, MO: Kansas City International" +MDT,G4,Allegiant Air,2,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,2,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,2,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,2,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,G4,Allegiant Air,2,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,2,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,2,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,2,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,2,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,2,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,2,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,2,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,2,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,2,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,2,"Norfolk, VA: Norfolk International" +OWB,G4,Allegiant Air,2,"Owensboro, KY: Owensboro Daviess County Regional" +PBG,G4,Allegiant Air,2,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,2,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,2,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,2,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,2,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,2,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,2,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,2,"Portsmouth, NH: Portsmouth International at Pease" +PSP,G4,Allegiant Air,2,"Palm Springs, CA: Palm Springs International" +PVD,G4,Allegiant Air,2,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,2,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,2,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,2,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,2,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,2,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,2,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,2,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,2,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,2,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,2,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,2,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,2,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,2,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,2,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,2,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,2,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,2,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,2,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STC,G4,Allegiant Air,2,"St. Cloud, MN: St. Cloud Regional" +SWF,G4,Allegiant Air,2,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,2,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,2,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,2,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,2,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,2,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,2,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,2,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,2,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,2,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,2,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,2,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,2,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,2,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,2,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,2,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,2,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,2,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,2,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,2,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,2,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,2,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,2,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,2,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,2,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,2,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,2,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,2,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,2,"Sacramento, CA: Sacramento International" +ABE,MQ,Envoy Air,2,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABI,MQ,Envoy Air,2,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,2,"Albuquerque, NM: Albuquerque International Sunport" +AGS,MQ,Envoy Air,2,"Augusta, GA: Augusta Regional at Bush Field" +ALO,MQ,Envoy Air,2,"Waterloo, IA: Waterloo Regional" +ATL,MQ,Envoy Air,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,MQ,Envoy Air,2,"Appleton, WI: Appleton International" +AUS,MQ,Envoy Air,2,"Austin, TX: Austin - Bergstrom International" +AVL,MQ,Envoy Air,2,"Asheville, NC: Asheville Regional" +AVP,MQ,Envoy Air,2,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +AZO,MQ,Envoy Air,2,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,MQ,Envoy Air,2,"Hartford, CT: Bradley International" +BFL,MQ,Envoy Air,2,"Bakersfield, CA: Meadows Field" +BHM,MQ,Envoy Air,2,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,2,"Billings, MT: Billings Logan International" +BIS,MQ,Envoy Air,2,"Bismarck/Mandan, ND: Bismarck Municipal" +BMI,MQ,Envoy Air,2,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,2,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,2,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,2,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,2,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BWI,MQ,Envoy Air,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,MQ,Envoy Air,2,"Bozeman, MT: Bozeman Yellowstone International" +CHA,MQ,Envoy Air,2,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,2,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,MQ,Envoy Air,2,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,2,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,2,"Champaign/Urbana, IL: University of Illinois/Willard" +COS,MQ,Envoy Air,2,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,MQ,Envoy Air,2,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,2,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,MQ,Envoy Air,2,"Mosinee, WI: Central Wisconsin" +DAB,MQ,Envoy Air,2,"Daytona Beach, FL: Daytona Beach International" +DAY,MQ,Envoy Air,2,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,2,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,MQ,Envoy Air,2,"Durango, CO: Durango La Plata County" +DSM,MQ,Envoy Air,2,"Des Moines, IA: Des Moines International" +DTW,MQ,Envoy Air,2,"Detroit, MI: Detroit Metro Wayne County" +ECP,MQ,Envoy Air,2,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,2,"El Paso, TX: El Paso International" +EVV,MQ,Envoy Air,2,"Evansville, IN: Evansville Regional" +EWR,MQ,Envoy Air,2,"Newark, NJ: Newark Liberty International" +EYW,MQ,Envoy Air,2,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,2,"Fargo, ND: Hector International" +FAT,MQ,Envoy Air,2,"Fresno, CA: Fresno Yosemite International" +FAY,MQ,Envoy Air,2,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FNT,MQ,Envoy Air,2,"Flint, MI: Bishop International" +FSD,MQ,Envoy Air,2,"Sioux Falls, SD: Joe Foss Field" +FSM,MQ,Envoy Air,2,"Fort Smith, AR: Fort Smith Regional" +FWA,MQ,Envoy Air,2,"Fort Wayne, IN: Fort Wayne International" +GJT,MQ,Envoy Air,2,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,2,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,2,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,2,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,2,"Killeen, TX: Robert Gray AAF" +GRR,MQ,Envoy Air,2,"Grand Rapids, MI: Gerald R. Ford International" +GSO,MQ,Envoy Air,2,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,2,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,2,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,2,"Houston, TX: William P Hobby" +HPN,MQ,Envoy Air,2,"White Plains, NY: Westchester County" +HRL,MQ,Envoy Air,2,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,2,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAH,MQ,Envoy Air,2,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,MQ,Envoy Air,2,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,2,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,2,"Jacksonville, FL: Jacksonville International" +LAN,MQ,Envoy Air,2,"Lansing, MI: Capital Region International" +LBB,MQ,Envoy Air,2,"Lubbock, TX: Lubbock Preston Smith International" +LCH,MQ,Envoy Air,2,"Lake Charles, LA: Lake Charles Regional" +LEX,MQ,Envoy Air,2,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,2,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LSE,MQ,Envoy Air,2,"La Crosse, WI: La Crosse Regional" +MAF,MQ,Envoy Air,2,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,2,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,2,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,2,"Montgomery, AL: Montgomery Regional" +MHK,MQ,Envoy Air,2,"Manhattan/Ft. Riley, KS: Manhattan Regional" +MIA,MQ,Envoy Air,2,"Miami, FL: Miami International" +MKE,MQ,Envoy Air,2,"Milwaukee, WI: General Mitchell International" +MLI,MQ,Envoy Air,2,"Moline, IL: Quad Cities International" +MOB,MQ,Envoy Air,2,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,2,"Marquette, MI: Sawyer International" +MRY,MQ,Envoy Air,2,"Monterey, CA: Monterey Regional" +MSN,MQ,Envoy Air,2,"Madison, WI: Dane County Regional-Truax Field" +MSO,MQ,Envoy Air,2,"Missoula, MT: Missoula Montana" +MSP,MQ,Envoy Air,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,MQ,Envoy Air,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,MQ,Envoy Air,2,"Myrtle Beach, SC: Myrtle Beach International" +OKC,MQ,Envoy Air,2,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,2,"Omaha, NE: Eppley Airfield" +ORD,MQ,Envoy Air,2,"Chicago, IL: Chicago O'Hare International" +ORF,MQ,Envoy Air,2,"Norfolk, VA: Norfolk International" +PHX,MQ,Envoy Air,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,2,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,2,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,2,"Pensacola, FL: Pensacola International" +PSP,MQ,Envoy Air,2,"Palm Springs, CA: Palm Springs International" +PVD,MQ,Envoy Air,2,"Providence, RI: Rhode Island Tf Green International" +RAP,MQ,Envoy Air,2,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,MQ,Envoy Air,2,"Richmond, VA: Richmond International" +RNO,MQ,Envoy Air,2,"Reno, NV: Reno/Tahoe International" +ROC,MQ,Envoy Air,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,MQ,Envoy Air,2,"Rochester, MN: Rochester International" +RSW,MQ,Envoy Air,2,"Fort Myers, FL: Southwest Florida International" +SAF,MQ,Envoy Air,2,"Santa Fe, NM: Santa Fe Municipal" +SAV,MQ,Envoy Air,2,"Savannah, GA: Savannah/Hilton Head International" +SBP,MQ,Envoy Air,2,"San Luis Obispo, CA: San Luis County Regional" +SDF,MQ,Envoy Air,2,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,2,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,2,"Shreveport, LA: Shreveport Regional" +SJT,MQ,Envoy Air,2,"San Angelo, TX: San Angelo Regional/Mathis Field" +STL,MQ,Envoy Air,2,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,2,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SYR,MQ,Envoy Air,2,"Syracuse, NY: Syracuse Hancock International" +TLH,MQ,Envoy Air,2,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,2,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,2,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,2,"Tulsa, OK: Tulsa International" +TUS,MQ,Envoy Air,2,"Tucson, AZ: Tucson International" +TVC,MQ,Envoy Air,2,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,2,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,2,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,2,"Fayetteville, AR: Northwest Arkansas National" +YUM,MQ,Envoy Air,2,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,NK,Spirit Air Lines,2,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,2,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,2,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,2,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,2,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,2,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,2,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,2,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,2,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CLE,NK,Spirit Air Lines,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,2,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,2,"Columbus, OH: John Glenn Columbus International" +CRW,NK,Spirit Air Lines,2,"Charleston/Dunbar, WV: West Virginia International Yeager" +DEN,NK,Spirit Air Lines,2,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,2,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,2,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,2,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,2,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,2,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,2,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,2,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,2,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,2,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,2,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,2,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,2,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,2,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,2,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,2,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,2,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,2,"Chicago, IL: Chicago O'Hare International" +PBI,NK,Spirit Air Lines,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,2,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,2,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,2,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,2,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,2,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,2,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,2,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,2,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,2,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,2,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,2,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,2,"Seattle, WA: Seattle/Tacoma International" +SJU,NK,Spirit Air Lines,2,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,2,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,2,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,2,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,2,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,2,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,2,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,2,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,2,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,2,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,2,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,2,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,2,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,2,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,2,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,2,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,2,"Nashville, TN: Nashville International" +BTR,OH,PSA Airlines Inc.,2,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,2,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,2,"Buffalo, NY: Buffalo Niagara International" +CAE,OH,PSA Airlines Inc.,2,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,2,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,2,"Chattanooga, TN: Lovell Field" +CHS,OH,PSA Airlines Inc.,2,"Charleston, SC: Charleston AFB/International" +CLE,OH,PSA Airlines Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,2,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,2,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,2,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,2,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,2,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DSM,OH,PSA Airlines Inc.,2,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,2,"Panama City, FL: Northwest Florida Beaches International" +EWN,OH,PSA Airlines Inc.,2,"New Bern/Morehead/Beaufort, NC: Coastal Carolina Regional" +FAY,OH,PSA Airlines Inc.,2,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GNV,OH,PSA Airlines Inc.,2,"Gainesville, FL: Gainesville Regional" +GPT,OH,PSA Airlines Inc.,2,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,2,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,2,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,2,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,2,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,2,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HTS,OH,PSA Airlines Inc.,2,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,OH,PSA Airlines Inc.,2,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,2,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,2,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,2,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,2,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,2,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,2,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,2,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,2,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,2,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,2,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,2,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,2,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,2,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,2,"Melbourne, FL: Melbourne Orlando International" +MSN,OH,PSA Airlines Inc.,2,"Madison, WI: Dane County Regional-Truax Field" +MSP,OH,PSA Airlines Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,2,"Myrtle Beach, SC: Myrtle Beach International" +OKC,OH,PSA Airlines Inc.,2,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,2,"Norfolk, VA: Norfolk International" +PGV,OH,PSA Airlines Inc.,2,"Greenville, NC: Pitt Greenville" +PHL,OH,PSA Airlines Inc.,2,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,2,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,2,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,2,"Portland, ME: Portland International Jetport" +RDU,OH,PSA Airlines Inc.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +ROA,OH,PSA Airlines Inc.,2,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OH,PSA Airlines Inc.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,OH,PSA Airlines Inc.,2,"Fort Myers, FL: Southwest Florida International" +SAV,OH,PSA Airlines Inc.,2,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,2,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,2,"Louisville, KY: Louisville Muhammad Ali International" +SHV,OH,PSA Airlines Inc.,2,"Shreveport, LA: Shreveport Regional" +SRQ,OH,PSA Airlines Inc.,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OH,PSA Airlines Inc.,2,"St. Louis, MO: St Louis Lambert International" +SYR,OH,PSA Airlines Inc.,2,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,2,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,2,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,2,"Tulsa, OK: Tulsa International" +TYS,OH,PSA Airlines Inc.,2,"Knoxville, TN: McGhee Tyson" +VPS,OH,PSA Airlines Inc.,2,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,OH,PSA Airlines Inc.,2,"Fayetteville, AR: Northwest Arkansas National" +ABE,OO,SkyWest Airlines Inc.,2,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,2,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,2,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,2,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,2,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,2,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,2,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,2,"Albany, NY: Albany International" +AMA,OO,SkyWest Airlines Inc.,2,"Amarillo, TX: Rick Husband Amarillo International" +APN,OO,SkyWest Airlines Inc.,2,"Alpena, MI: Alpena County Regional" +ASE,OO,SkyWest Airlines Inc.,2,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,2,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,2,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,2,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,2,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OO,SkyWest Airlines Inc.,2,"Hartford, CT: Bradley International" +BFF,OO,SkyWest Airlines Inc.,2,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,2,"Bakersfield, CA: Meadows Field" +BHM,OO,SkyWest Airlines Inc.,2,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIH,OO,SkyWest Airlines Inc.,2,"Bishop, CA: Bishop Airport" +BIL,OO,SkyWest Airlines Inc.,2,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,2,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,2,"Bemidji, MN: Bemidji Regional" +BMI,OO,SkyWest Airlines Inc.,2,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,2,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,2,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,2,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,2,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,2,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,2,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,2,"Butte, MT: Bert Mooney" +BTR,OO,SkyWest Airlines Inc.,2,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUR,OO,SkyWest Airlines Inc.,2,"Burbank, CA: Bob Hope" +BZN,OO,SkyWest Airlines Inc.,2,"Bozeman, MT: Bozeman Yellowstone International" +CAE,OO,SkyWest Airlines Inc.,2,"Columbia, SC: Columbia Metropolitan" +CAK,OO,SkyWest Airlines Inc.,2,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,2,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,2,"Chattanooga, TN: Lovell Field" +CHS,OO,SkyWest Airlines Inc.,2,"Charleston, SC: Charleston AFB/International" +CID,OO,SkyWest Airlines Inc.,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,2,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,2,"College Station/Bryan, TX: Easterwood Field" +CMH,OO,SkyWest Airlines Inc.,2,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,2,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,2,"Moab, UT: Canyonlands Regional" +COS,OO,SkyWest Airlines Inc.,2,"Colorado Springs, CO: City of Colorado Springs Municipal" +CPR,OO,SkyWest Airlines Inc.,2,"Casper, WY: Casper/Natrona County International" +CRP,OO,SkyWest Airlines Inc.,2,"Corpus Christi, TX: Corpus Christi International" +CRW,OO,SkyWest Airlines Inc.,2,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OO,SkyWest Airlines Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CYS,OO,SkyWest Airlines Inc.,2,"Cheyenne, WY: Cheyenne Regional/Jerry Olson Field" +DCA,OO,SkyWest Airlines Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,2,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,2,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,2,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,2,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,2,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,2,"Durango, CO: Durango La Plata County" +DRT,OO,SkyWest Airlines Inc.,2,"Del Rio, TX: Del Rio International" +DSM,OO,SkyWest Airlines Inc.,2,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,2,"Devils Lake, ND: Devils Lake Regional" +EGE,OO,SkyWest Airlines Inc.,2,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,2,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,2,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,2,"El Paso, TX: El Paso International" +ERI,OO,SkyWest Airlines Inc.,2,"Erie, PA: Erie International/Tom Ridge Field" +ESC,OO,SkyWest Airlines Inc.,2,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,2,"Eugene, OR: Mahlon Sweet Field" +EWR,OO,SkyWest Airlines Inc.,2,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,2,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,2,"Fresno, CA: Fresno Yosemite International" +FAY,OO,SkyWest Airlines Inc.,2,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,OO,SkyWest Airlines Inc.,2,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,2,"Flagstaff, AZ: Flagstaff Pulliam" +FNT,OO,SkyWest Airlines Inc.,2,"Flint, MI: Bishop International" +FOD,OO,SkyWest Airlines Inc.,2,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,2,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,2,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,2,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,2,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,2,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,2,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,2,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,2,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,2,"Grand Junction, CO: Grand Junction Regional" +GRB,OO,SkyWest Airlines Inc.,2,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,2,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,2,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,2,"Grand Rapids, MI: Gerald R. Ford International" +GSP,OO,SkyWest Airlines Inc.,2,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,2,"Great Falls, MT: Great Falls International" +GUC,OO,SkyWest Airlines Inc.,2,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,2,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,2,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,2,"Helena, MT: Helena Regional" +HPN,OO,SkyWest Airlines Inc.,2,"White Plains, NY: Westchester County" +HRL,OO,SkyWest Airlines Inc.,2,"Harlingen/San Benito, TX: Valley International" +HSV,OO,SkyWest Airlines Inc.,2,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,2,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,2,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,2,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,2,"Idaho Falls, ID: Idaho Falls Regional" +ILM,OO,SkyWest Airlines Inc.,2,"Wilmington, NC: Wilmington International" +IMT,OO,SkyWest Airlines Inc.,2,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,2,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,2,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,2,"Jackson, WY: Jackson Hole" +JAN,OO,SkyWest Airlines Inc.,2,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OO,SkyWest Airlines Inc.,2,"Jacksonville, FL: Jacksonville International" +JFK,OO,SkyWest Airlines Inc.,2,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,2,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,2,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,2,"Johnstown, PA: John Murtha Johnstown-Cambria County" +LAR,OO,SkyWest Airlines Inc.,2,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,2,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,2,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,2,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,2,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,2,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,2,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,2,"Lake Charles, LA: Lake Charles Regional" +LEX,OO,SkyWest Airlines Inc.,2,"Lexington, KY: Blue Grass" +LFT,OO,SkyWest Airlines Inc.,2,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,2,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,2,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,2,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,2,"Laredo, TX: Laredo International" +LSE,OO,SkyWest Airlines Inc.,2,"La Crosse, WI: La Crosse Regional" +LWS,OO,SkyWest Airlines Inc.,2,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,2,"Midland/Odessa, TX: Midland International Air and Space Port" +MBS,OO,SkyWest Airlines Inc.,2,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,OO,SkyWest Airlines Inc.,2,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,2,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,2,"Harrisburg, PA: Harrisburg International" +MEI,OO,SkyWest Airlines Inc.,2,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,2,"Memphis, TN: Memphis International" +MFE,OO,SkyWest Airlines Inc.,2,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,OO,SkyWest Airlines Inc.,2,"Medford, OR: Rogue Valley International - Medford" +MHK,OO,SkyWest Airlines Inc.,2,"Manhattan/Ft. Riley, KS: Manhattan Regional" +MKE,OO,SkyWest Airlines Inc.,2,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,2,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,2,"Monroe, LA: Monroe Regional" +MOB,OO,SkyWest Airlines Inc.,2,"Mobile, AL: Mobile Regional" +MOT,OO,SkyWest Airlines Inc.,2,"Minot, ND: Minot International" +MRY,OO,SkyWest Airlines Inc.,2,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,2,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,2,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OO,SkyWest Airlines Inc.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,OO,SkyWest Airlines Inc.,2,"Montrose/Delta, CO: Montrose Regional" +OAJ,OO,SkyWest Airlines Inc.,2,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,OO,SkyWest Airlines Inc.,2,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,2,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,2,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,2,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,2,"Chicago, IL: Chicago O'Hare International" +ORF,OO,SkyWest Airlines Inc.,2,"Norfolk, VA: Norfolk International" +OTH,OO,SkyWest Airlines Inc.,2,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PDX,OO,SkyWest Airlines Inc.,2,"Portland, OR: Portland International" +PHX,OO,SkyWest Airlines Inc.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIB,OO,SkyWest Airlines Inc.,2,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,2,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,2,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,2,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,2,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,2,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,2,"Palm Springs, CA: Palm Springs International" +PVD,OO,SkyWest Airlines Inc.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,OO,SkyWest Airlines Inc.,2,"Portland, ME: Portland International Jetport" +RAP,OO,SkyWest Airlines Inc.,2,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,2,"Redding, CA: Redding Municipal" +RDM,OO,SkyWest Airlines Inc.,2,"Bend/Redmond, OR: Roberts Field" +RHI,OO,SkyWest Airlines Inc.,2,"Rhinelander, WI: Rhinelander/Oneida County" +RIW,OO,SkyWest Airlines Inc.,2,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,2,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,2,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,2,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,OO,SkyWest Airlines Inc.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +ROW,OO,SkyWest Airlines Inc.,2,"Roswell, NM: Roswell Air Center" +RST,OO,SkyWest Airlines Inc.,2,"Rochester, MN: Rochester International" +SAF,OO,SkyWest Airlines Inc.,2,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,2,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,2,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,2,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,2,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,2,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,2,"San Luis Obispo, CA: San Luis County Regional" +SCE,OO,SkyWest Airlines Inc.,2,"State College, PA: University Park" +SDF,OO,SkyWest Airlines Inc.,2,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,2,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,2,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,2,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,2,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,2,"Shreveport, LA: Shreveport Regional" +SJC,OO,SkyWest Airlines Inc.,2,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,2,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,2,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,2,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,2,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,2,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,OO,SkyWest Airlines Inc.,2,"Springfield, IL: Abraham Lincoln Capital" +SPS,OO,SkyWest Airlines Inc.,2,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +SRQ,OO,SkyWest Airlines Inc.,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OO,SkyWest Airlines Inc.,2,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,2,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,2,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,2,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,2,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,2,"Syracuse, NY: Syracuse Hancock International" +TRI,OO,SkyWest Airlines Inc.,2,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OO,SkyWest Airlines Inc.,2,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,2,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,2,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,2,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,2,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,2,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,2,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,2,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,2,"Vernal, UT: Vernal Regional" +XNA,OO,SkyWest Airlines Inc.,2,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,2,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,2,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,2,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,2,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,2,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,2,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,2,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,2,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,2,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,2,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,2,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,2,"Aguadilla, PR: Rafael Hernandez" +BTV,UA,United Air Lines Inc.,2,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,2,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,2,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,2,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,2,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,2,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,2,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,2,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,2,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,2,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,2,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,UA,United Air Lines Inc.,2,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,2,"Detroit, MI: Detroit Metro Wayne County" +EGE,UA,United Air Lines Inc.,2,"Eagle, CO: Eagle County Regional" +ELP,UA,United Air Lines Inc.,2,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,2,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,2,"Newark, NJ: Newark Liberty International" +FAT,UA,United Air Lines Inc.,2,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,2,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,2,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,2,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,2,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,2,"Grand Rapids, MI: Gerald R. Ford International" +GUM,UA,United Air Lines Inc.,2,"Guam, TT: Guam International" +HDN,UA,United Air Lines Inc.,2,"Hayden, CO: Yampa Valley" +HNL,UA,United Air Lines Inc.,2,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,2,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,2,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,2,"Indianapolis, IN: Indianapolis International" +JAC,UA,United Air Lines Inc.,2,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,2,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,2,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,2,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,2,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,2,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,2,"Lihue, HI: Lihue Airport" +MAF,UA,United Air Lines Inc.,2,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,UA,United Air Lines Inc.,2,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,2,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,2,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,2,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,2,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,UA,United Air Lines Inc.,2,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,2,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,2,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,2,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,2,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,UA,United Air Lines Inc.,2,"Montrose/Delta, CO: Montrose Regional" +OGG,UA,United Air Lines Inc.,2,"Kahului, HI: Kahului Airport" +OKC,UA,United Air Lines Inc.,2,"Oklahoma City, OK: Will Rogers World" +OMA,UA,United Air Lines Inc.,2,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,2,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,2,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,2,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,2,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,2,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,2,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,2,"Pensacola, FL: Pensacola International" +PSP,UA,United Air Lines Inc.,2,"Palm Springs, CA: Palm Springs International" +PVD,UA,United Air Lines Inc.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,UA,United Air Lines Inc.,2,"Portland, ME: Portland International Jetport" +RAP,UA,United Air Lines Inc.,2,"Rapid City, SD: Rapid City Regional" +RDM,UA,United Air Lines Inc.,2,"Bend/Redmond, OR: Roberts Field" +RDU,UA,United Air Lines Inc.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,2,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,2,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,2,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,2,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,2,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,2,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,2,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,2,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,2,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,2,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,2,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,2,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,2,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,2,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,2,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,2,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,2,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,2,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,2,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,2,"Tulsa, OK: Tulsa International" +TUS,UA,United Air Lines Inc.,2,"Tucson, AZ: Tucson International" +TVC,UA,United Air Lines Inc.,2,"Traverse City, MI: Cherry Capital" +ABQ,WN,Southwest Airlines Co.,2,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,2,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,2,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,2,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,2,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,2,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,2,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,2,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,2,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,2,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,2,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,2,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,2,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,2,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,2,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,2,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,2,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,2,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,2,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,2,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,2,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,2,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,2,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,2,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,2,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,2,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,2,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,2,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,2,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,2,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,2,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,2,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,2,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,2,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,2,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,2,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,2,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,2,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,2,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,2,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,2,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,2,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,2,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,2,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,2,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,2,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,2,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,2,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,2,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,2,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,2,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,2,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,2,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,2,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,2,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,2,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,2,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,2,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,2,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,2,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,2,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,2,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,2,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,2,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,2,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,2,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,2,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,2,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,2,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,2,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,2,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,2,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,2,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,2,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,2,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,2,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,2,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,2,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,2,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,2,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,2,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,2,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,2,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,2,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,2,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,2,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,2,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,2,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,2,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,2,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,2,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,2,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,2,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,2,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,2,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ALB,YX,Republic Airline,2,"Albany, NY: Albany International" +ATL,YX,Republic Airline,2,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,2,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,2,"Asheville, NC: Asheville Regional" +BDL,YX,Republic Airline,2,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,2,"Bangor, ME: Bangor International" +BNA,YX,Republic Airline,2,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,2,"Boston, MA: Logan International" +BTV,YX,Republic Airline,2,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,2,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,2,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHA,YX,Republic Airline,2,"Chattanooga, TN: Lovell Field" +CHO,YX,Republic Airline,2,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,2,"Charleston, SC: Charleston AFB/International" +CLE,YX,Republic Airline,2,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,2,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,2,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,2,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,2,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,2,"Washington, DC: Ronald Reagan Washington National" +DFW,YX,Republic Airline,2,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,YX,Republic Airline,2,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,2,"Detroit, MI: Detroit Metro Wayne County" +EWR,YX,Republic Airline,2,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,2,"Key West, FL: Key West International" +FAR,YX,Republic Airline,2,"Fargo, ND: Hector International" +GRR,YX,Republic Airline,2,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,2,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,2,"Greer, SC: Greenville-Spartanburg International" +HPN,YX,Republic Airline,2,"White Plains, NY: Westchester County" +IAD,YX,Republic Airline,2,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,2,"Houston, TX: George Bush Intercontinental/Houston" +ICT,YX,Republic Airline,2,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,YX,Republic Airline,2,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,2,"Indianapolis, IN: Indianapolis International" +JAX,YX,Republic Airline,2,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,2,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,2,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,2,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,2,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,2,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,2,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,2,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,2,"Manchester, NH: Manchester Boston Regional" +MIA,YX,Republic Airline,2,"Miami, FL: Miami International" +MKE,YX,Republic Airline,2,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,2,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,2,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,YX,Republic Airline,2,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,YX,Republic Airline,2,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,2,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,2,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,2,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,2,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,2,"Worcester, MA: Worcester Regional" +PBI,YX,Republic Airline,2,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PHL,YX,Republic Airline,2,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,2,"Pittsburgh, PA: Pittsburgh International" +PNS,YX,Republic Airline,2,"Pensacola, FL: Pensacola International" +PVD,YX,Republic Airline,2,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,2,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,2,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,2,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,2,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,2,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,YX,Republic Airline,2,"Rochester, MN: Rochester International" +RSW,YX,Republic Airline,2,"Fort Myers, FL: Southwest Florida International" +SAT,YX,Republic Airline,2,"San Antonio, TX: San Antonio International" +SAV,YX,Republic Airline,2,"Savannah, GA: Savannah/Hilton Head International" +SCE,YX,Republic Airline,2,"State College, PA: University Park" +SDF,YX,Republic Airline,2,"Louisville, KY: Louisville Muhammad Ali International" +SRQ,YX,Republic Airline,2,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,YX,Republic Airline,2,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,2,"Syracuse, NY: Syracuse Hancock International" +TPA,YX,Republic Airline,2,"Tampa, FL: Tampa International" +TUL,YX,Republic Airline,2,"Tulsa, OK: Tulsa International" +TVC,YX,Republic Airline,2,"Traverse City, MI: Cherry Capital" +TYS,YX,Republic Airline,2,"Knoxville, TN: McGhee Tyson" +XNA,YX,Republic Airline,2,"Fayetteville, AR: Northwest Arkansas National" +ABE,9E,Endeavor Air Inc.,1,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABY,9E,Endeavor Air Inc.,1,"Albany, GA: Southwest Georgia Regional" +AEX,9E,Endeavor Air Inc.,1,"Alexandria, LA: Alexandria International" +AGS,9E,Endeavor Air Inc.,1,"Augusta, GA: Augusta Regional at Bush Field" +ALB,9E,Endeavor Air Inc.,1,"Albany, NY: Albany International" +ATL,9E,Endeavor Air Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,9E,Endeavor Air Inc.,1,"Appleton, WI: Appleton International" +AUS,9E,Endeavor Air Inc.,1,"Austin, TX: Austin - Bergstrom International" +AVL,9E,Endeavor Air Inc.,1,"Asheville, NC: Asheville Regional" +AZO,9E,Endeavor Air Inc.,1,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,9E,Endeavor Air Inc.,1,"Hartford, CT: Bradley International" +BGM,9E,Endeavor Air Inc.,1,"Binghamton, NY: Greater Binghamton/Edwin A. Link Field" +BGR,9E,Endeavor Air Inc.,1,"Bangor, ME: Bangor International" +BHM,9E,Endeavor Air Inc.,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,9E,Endeavor Air Inc.,1,"Nashville, TN: Nashville International" +BQK,9E,Endeavor Air Inc.,1,"Brunswick, GA: Brunswick Golden Isles" +BTR,9E,Endeavor Air Inc.,1,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,9E,Endeavor Air Inc.,1,"Burlington, VT: Burlington International" +BUF,9E,Endeavor Air Inc.,1,"Buffalo, NY: Buffalo Niagara International" +BWI,9E,Endeavor Air Inc.,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CAE,9E,Endeavor Air Inc.,1,"Columbia, SC: Columbia Metropolitan" +CHA,9E,Endeavor Air Inc.,1,"Chattanooga, TN: Lovell Field" +CHO,9E,Endeavor Air Inc.,1,"Charlottesville, VA: Charlottesville Albemarle" +CHS,9E,Endeavor Air Inc.,1,"Charleston, SC: Charleston AFB/International" +CID,9E,Endeavor Air Inc.,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,9E,Endeavor Air Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,9E,Endeavor Air Inc.,1,"Charlotte, NC: Charlotte Douglas International" +CMH,9E,Endeavor Air Inc.,1,"Columbus, OH: John Glenn Columbus International" +CRW,9E,Endeavor Air Inc.,1,"Charleston/Dunbar, WV: West Virginia International Yeager" +CSG,9E,Endeavor Air Inc.,1,"Columbus, GA: Columbus Airport" +CVG,9E,Endeavor Air Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,9E,Endeavor Air Inc.,1,"Mosinee, WI: Central Wisconsin" +DAY,9E,Endeavor Air Inc.,1,"Dayton, OH: James M Cox/Dayton International" +DCA,9E,Endeavor Air Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DFW,9E,Endeavor Air Inc.,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DHN,9E,Endeavor Air Inc.,1,"Dothan, AL: Dothan Regional" +DLH,9E,Endeavor Air Inc.,1,"Duluth, MN: Duluth International" +DSM,9E,Endeavor Air Inc.,1,"Des Moines, IA: Des Moines International" +DTW,9E,Endeavor Air Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +EVV,9E,Endeavor Air Inc.,1,"Evansville, IN: Evansville Regional" +EWR,9E,Endeavor Air Inc.,1,"Newark, NJ: Newark Liberty International" +EYW,9E,Endeavor Air Inc.,1,"Key West, FL: Key West International" +FAY,9E,Endeavor Air Inc.,1,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FSD,9E,Endeavor Air Inc.,1,"Sioux Falls, SD: Joe Foss Field" +GFK,9E,Endeavor Air Inc.,1,"Grand Forks, ND: Grand Forks International" +GNV,9E,Endeavor Air Inc.,1,"Gainesville, FL: Gainesville Regional" +GPT,9E,Endeavor Air Inc.,1,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,9E,Endeavor Air Inc.,1,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,9E,Endeavor Air Inc.,1,"Grand Rapids, MI: Gerald R. Ford International" +GSO,9E,Endeavor Air Inc.,1,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,9E,Endeavor Air Inc.,1,"Greer, SC: Greenville-Spartanburg International" +GTR,9E,Endeavor Air Inc.,1,"Columbus, MS: Golden Triangle Regional" +HPN,9E,Endeavor Air Inc.,1,"White Plains, NY: Westchester County" +HSV,9E,Endeavor Air Inc.,1,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,9E,Endeavor Air Inc.,1,"Washington, DC: Washington Dulles International" +ICT,9E,Endeavor Air Inc.,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,9E,Endeavor Air Inc.,1,"Wilmington, NC: Wilmington International" +IND,9E,Endeavor Air Inc.,1,"Indianapolis, IN: Indianapolis International" +ITH,9E,Endeavor Air Inc.,1,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAN,9E,Endeavor Air Inc.,1,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,9E,Endeavor Air Inc.,1,"Jacksonville, FL: Jacksonville International" +JFK,9E,Endeavor Air Inc.,1,"New York, NY: John F. Kennedy International" +LAN,9E,Endeavor Air Inc.,1,"Lansing, MI: Capital Region International" +LEX,9E,Endeavor Air Inc.,1,"Lexington, KY: Blue Grass" +LFT,9E,Endeavor Air Inc.,1,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,9E,Endeavor Air Inc.,1,"New York, NY: LaGuardia" +LSE,9E,Endeavor Air Inc.,1,"La Crosse, WI: La Crosse Regional" +MBS,9E,Endeavor Air Inc.,1,"Saginaw/Bay City/Midland, MI: MBS International" +MCI,9E,Endeavor Air Inc.,1,"Kansas City, MO: Kansas City International" +MDT,9E,Endeavor Air Inc.,1,"Harrisburg, PA: Harrisburg International" +MDW,9E,Endeavor Air Inc.,1,"Chicago, IL: Chicago Midway International" +MEM,9E,Endeavor Air Inc.,1,"Memphis, TN: Memphis International" +MGM,9E,Endeavor Air Inc.,1,"Montgomery, AL: Montgomery Regional" +MIA,9E,Endeavor Air Inc.,1,"Miami, FL: Miami International" +MKE,9E,Endeavor Air Inc.,1,"Milwaukee, WI: General Mitchell International" +MLU,9E,Endeavor Air Inc.,1,"Monroe, LA: Monroe Regional" +MOB,9E,Endeavor Air Inc.,1,"Mobile, AL: Mobile Regional" +MOT,9E,Endeavor Air Inc.,1,"Minot, ND: Minot International" +MQT,9E,Endeavor Air Inc.,1,"Marquette, MI: Sawyer International" +MSN,9E,Endeavor Air Inc.,1,"Madison, WI: Dane County Regional-Truax Field" +MSP,9E,Endeavor Air Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,9E,Endeavor Air Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,9E,Endeavor Air Inc.,1,"Myrtle Beach, SC: Myrtle Beach International" +OMA,9E,Endeavor Air Inc.,1,"Omaha, NE: Eppley Airfield" +ORD,9E,Endeavor Air Inc.,1,"Chicago, IL: Chicago O'Hare International" +ORF,9E,Endeavor Air Inc.,1,"Norfolk, VA: Norfolk International" +ORH,9E,Endeavor Air Inc.,1,"Worcester, MA: Worcester Regional" +PHL,9E,Endeavor Air Inc.,1,"Philadelphia, PA: Philadelphia International" +PIT,9E,Endeavor Air Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PVD,9E,Endeavor Air Inc.,1,"Providence, RI: Rhode Island Tf Green International" +PWM,9E,Endeavor Air Inc.,1,"Portland, ME: Portland International Jetport" +RDU,9E,Endeavor Air Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,9E,Endeavor Air Inc.,1,"Richmond, VA: Richmond International" +ROA,9E,Endeavor Air Inc.,1,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,9E,Endeavor Air Inc.,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,9E,Endeavor Air Inc.,1,"Savannah, GA: Savannah/Hilton Head International" +SCE,9E,Endeavor Air Inc.,1,"State College, PA: University Park" +SDF,9E,Endeavor Air Inc.,1,"Louisville, KY: Louisville Muhammad Ali International" +SGF,9E,Endeavor Air Inc.,1,"Springfield, MO: Springfield-Branson National" +SHV,9E,Endeavor Air Inc.,1,"Shreveport, LA: Shreveport Regional" +STL,9E,Endeavor Air Inc.,1,"St. Louis, MO: St Louis Lambert International" +SYR,9E,Endeavor Air Inc.,1,"Syracuse, NY: Syracuse Hancock International" +TRI,9E,Endeavor Air Inc.,1,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TVC,9E,Endeavor Air Inc.,1,"Traverse City, MI: Cherry Capital" +TYS,9E,Endeavor Air Inc.,1,"Knoxville, TN: McGhee Tyson" +VLD,9E,Endeavor Air Inc.,1,"Valdosta, GA: Valdosta Regional" +XNA,9E,Endeavor Air Inc.,1,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AA,American Airlines Inc.,1,"Albuquerque, NM: Albuquerque International Sunport" +ALB,AA,American Airlines Inc.,1,"Albany, NY: Albany International" +AMA,AA,American Airlines Inc.,1,"Amarillo, TX: Rick Husband Amarillo International" +ANC,AA,American Airlines Inc.,1,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AA,American Airlines Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AA,American Airlines Inc.,1,"Austin, TX: Austin - Bergstrom International" +AVL,AA,American Airlines Inc.,1,"Asheville, NC: Asheville Regional" +AVP,AA,American Airlines Inc.,1,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,AA,American Airlines Inc.,1,"Hartford, CT: Bradley International" +BFL,AA,American Airlines Inc.,1,"Bakersfield, CA: Meadows Field" +BHM,AA,American Airlines Inc.,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,AA,American Airlines Inc.,1,"Nashville, TN: Nashville International" +BOI,AA,American Airlines Inc.,1,"Boise, ID: Boise Air Terminal" +BOS,AA,American Airlines Inc.,1,"Boston, MA: Logan International" +BUF,AA,American Airlines Inc.,1,"Buffalo, NY: Buffalo Niagara International" +BUR,AA,American Airlines Inc.,1,"Burbank, CA: Bob Hope" +BWI,AA,American Airlines Inc.,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AA,American Airlines Inc.,1,"Bozeman, MT: Bozeman Yellowstone International" +CAE,AA,American Airlines Inc.,1,"Columbia, SC: Columbia Metropolitan" +CHS,AA,American Airlines Inc.,1,"Charleston, SC: Charleston AFB/International" +CID,AA,American Airlines Inc.,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,AA,American Airlines Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,AA,American Airlines Inc.,1,"Charlotte, NC: Charlotte Douglas International" +CMH,AA,American Airlines Inc.,1,"Columbus, OH: John Glenn Columbus International" +COS,AA,American Airlines Inc.,1,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,AA,American Airlines Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,AA,American Airlines Inc.,1,"Daytona Beach, FL: Daytona Beach International" +DCA,AA,American Airlines Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DEN,AA,American Airlines Inc.,1,"Denver, CO: Denver International" +DFW,AA,American Airlines Inc.,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,AA,American Airlines Inc.,1,"Des Moines, IA: Des Moines International" +DTW,AA,American Airlines Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +ECP,AA,American Airlines Inc.,1,"Panama City, FL: Northwest Florida Beaches International" +EGE,AA,American Airlines Inc.,1,"Eagle, CO: Eagle County Regional" +ELP,AA,American Airlines Inc.,1,"El Paso, TX: El Paso International" +EUG,AA,American Airlines Inc.,1,"Eugene, OR: Mahlon Sweet Field" +EWR,AA,American Airlines Inc.,1,"Newark, NJ: Newark Liberty International" +EYW,AA,American Airlines Inc.,1,"Key West, FL: Key West International" +FAT,AA,American Airlines Inc.,1,"Fresno, CA: Fresno Yosemite International" +FLL,AA,American Airlines Inc.,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AA,American Airlines Inc.,1,"Spokane, WA: Spokane International" +GRB,AA,American Airlines Inc.,1,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,AA,American Airlines Inc.,1,"Grand Rapids, MI: Gerald R. Ford International" +GSO,AA,American Airlines Inc.,1,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,AA,American Airlines Inc.,1,"Greer, SC: Greenville-Spartanburg International" +GUC,AA,American Airlines Inc.,1,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,AA,American Airlines Inc.,1,"Hayden, CO: Yampa Valley" +HNL,AA,American Airlines Inc.,1,"Honolulu, HI: Daniel K Inouye International" +HSV,AA,American Airlines Inc.,1,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,AA,American Airlines Inc.,1,"Washington, DC: Washington Dulles International" +IAH,AA,American Airlines Inc.,1,"Houston, TX: George Bush Intercontinental/Houston" +ICT,AA,American Airlines Inc.,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,AA,American Airlines Inc.,1,"Wilmington, NC: Wilmington International" +IND,AA,American Airlines Inc.,1,"Indianapolis, IN: Indianapolis International" +JAC,AA,American Airlines Inc.,1,"Jackson, WY: Jackson Hole" +JAX,AA,American Airlines Inc.,1,"Jacksonville, FL: Jacksonville International" +JFK,AA,American Airlines Inc.,1,"New York, NY: John F. Kennedy International" +KOA,AA,American Airlines Inc.,1,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,AA,American Airlines Inc.,1,"Las Vegas, NV: Harry Reid International" +LAX,AA,American Airlines Inc.,1,"Los Angeles, CA: Los Angeles International" +LBB,AA,American Airlines Inc.,1,"Lubbock, TX: Lubbock Preston Smith International" +LGA,AA,American Airlines Inc.,1,"New York, NY: LaGuardia" +LIH,AA,American Airlines Inc.,1,"Lihue, HI: Lihue Airport" +LIT,AA,American Airlines Inc.,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,AA,American Airlines Inc.,1,"Kansas City, MO: Kansas City International" +MCO,AA,American Airlines Inc.,1,"Orlando, FL: Orlando International" +MDT,AA,American Airlines Inc.,1,"Harrisburg, PA: Harrisburg International" +MEM,AA,American Airlines Inc.,1,"Memphis, TN: Memphis International" +MFE,AA,American Airlines Inc.,1,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MIA,AA,American Airlines Inc.,1,"Miami, FL: Miami International" +MKE,AA,American Airlines Inc.,1,"Milwaukee, WI: General Mitchell International" +MSN,AA,American Airlines Inc.,1,"Madison, WI: Dane County Regional-Truax Field" +MSO,AA,American Airlines Inc.,1,"Missoula, MT: Missoula Montana" +MSP,AA,American Airlines Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AA,American Airlines Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,AA,American Airlines Inc.,1,"Montrose/Delta, CO: Montrose Regional" +MYR,AA,American Airlines Inc.,1,"Myrtle Beach, SC: Myrtle Beach International" +OGG,AA,American Airlines Inc.,1,"Kahului, HI: Kahului Airport" +OKC,AA,American Airlines Inc.,1,"Oklahoma City, OK: Will Rogers World" +OMA,AA,American Airlines Inc.,1,"Omaha, NE: Eppley Airfield" +ONT,AA,American Airlines Inc.,1,"Ontario, CA: Ontario International" +ORD,AA,American Airlines Inc.,1,"Chicago, IL: Chicago O'Hare International" +ORF,AA,American Airlines Inc.,1,"Norfolk, VA: Norfolk International" +PBI,AA,American Airlines Inc.,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,AA,American Airlines Inc.,1,"Portland, OR: Portland International" +PHL,AA,American Airlines Inc.,1,"Philadelphia, PA: Philadelphia International" +PHX,AA,American Airlines Inc.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AA,American Airlines Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PNS,AA,American Airlines Inc.,1,"Pensacola, FL: Pensacola International" +PSP,AA,American Airlines Inc.,1,"Palm Springs, CA: Palm Springs International" +PVD,AA,American Airlines Inc.,1,"Providence, RI: Rhode Island Tf Green International" +PWM,AA,American Airlines Inc.,1,"Portland, ME: Portland International Jetport" +RDU,AA,American Airlines Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,AA,American Airlines Inc.,1,"Richmond, VA: Richmond International" +RNO,AA,American Airlines Inc.,1,"Reno, NV: Reno/Tahoe International" +ROC,AA,American Airlines Inc.,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,AA,American Airlines Inc.,1,"Fort Myers, FL: Southwest Florida International" +SAN,AA,American Airlines Inc.,1,"San Diego, CA: San Diego International" +SAT,AA,American Airlines Inc.,1,"San Antonio, TX: San Antonio International" +SAV,AA,American Airlines Inc.,1,"Savannah, GA: Savannah/Hilton Head International" +SBA,AA,American Airlines Inc.,1,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,AA,American Airlines Inc.,1,"San Luis Obispo, CA: San Luis County Regional" +SDF,AA,American Airlines Inc.,1,"Louisville, KY: Louisville Muhammad Ali International" +SEA,AA,American Airlines Inc.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,AA,American Airlines Inc.,1,"San Francisco, CA: San Francisco International" +SJC,AA,American Airlines Inc.,1,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,AA,American Airlines Inc.,1,"San Juan, PR: Luis Munoz Marin International" +SLC,AA,American Airlines Inc.,1,"Salt Lake City, UT: Salt Lake City International" +SMF,AA,American Airlines Inc.,1,"Sacramento, CA: Sacramento International" +SNA,AA,American Airlines Inc.,1,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,AA,American Airlines Inc.,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,AA,American Airlines Inc.,1,"St. Louis, MO: St Louis Lambert International" +STT,AA,American Airlines Inc.,1,"Charlotte Amalie, VI: Cyril E King" +STX,AA,American Airlines Inc.,1,"Christiansted, VI: Henry E. Rohlsen" +SYR,AA,American Airlines Inc.,1,"Syracuse, NY: Syracuse Hancock International" +TPA,AA,American Airlines Inc.,1,"Tampa, FL: Tampa International" +TUL,AA,American Airlines Inc.,1,"Tulsa, OK: Tulsa International" +TUS,AA,American Airlines Inc.,1,"Tucson, AZ: Tucson International" +TYS,AA,American Airlines Inc.,1,"Knoxville, TN: McGhee Tyson" +VPS,AA,American Airlines Inc.,1,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,AA,American Airlines Inc.,1,"Fayetteville, AR: Northwest Arkansas National" +ABQ,AS,Alaska Airlines Inc.,1,"Albuquerque, NM: Albuquerque International Sunport" +ADK,AS,Alaska Airlines Inc.,1,"Adak Island, AK: Adak" +ADQ,AS,Alaska Airlines Inc.,1,"Kodiak, AK: Kodiak Airport" +ANC,AS,Alaska Airlines Inc.,1,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,AS,Alaska Airlines Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,AS,Alaska Airlines Inc.,1,"Austin, TX: Austin - Bergstrom International" +BET,AS,Alaska Airlines Inc.,1,"Bethel, AK: Bethel Airport" +BNA,AS,Alaska Airlines Inc.,1,"Nashville, TN: Nashville International" +BOI,AS,Alaska Airlines Inc.,1,"Boise, ID: Boise Air Terminal" +BOS,AS,Alaska Airlines Inc.,1,"Boston, MA: Logan International" +BRW,AS,Alaska Airlines Inc.,1,"Barrow, AK: Wiley Post/Will Rogers Memorial" +BUR,AS,Alaska Airlines Inc.,1,"Burbank, CA: Bob Hope" +BWI,AS,Alaska Airlines Inc.,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,AS,Alaska Airlines Inc.,1,"Bozeman, MT: Bozeman Yellowstone International" +CDV,AS,Alaska Airlines Inc.,1,"Cordova, AK: Merle K Mudhole Smith" +CHS,AS,Alaska Airlines Inc.,1,"Charleston, SC: Charleston AFB/International" +CLE,AS,Alaska Airlines Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CMH,AS,Alaska Airlines Inc.,1,"Columbus, OH: John Glenn Columbus International" +CVG,AS,Alaska Airlines Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,AS,Alaska Airlines Inc.,1,"Dallas, TX: Dallas Love Field" +DCA,AS,Alaska Airlines Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DEN,AS,Alaska Airlines Inc.,1,"Denver, CO: Denver International" +DFW,AS,Alaska Airlines Inc.,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,AS,Alaska Airlines Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +ELP,AS,Alaska Airlines Inc.,1,"El Paso, TX: El Paso International" +EWR,AS,Alaska Airlines Inc.,1,"Newark, NJ: Newark Liberty International" +FAI,AS,Alaska Airlines Inc.,1,"Fairbanks, AK: Fairbanks International" +FAT,AS,Alaska Airlines Inc.,1,"Fresno, CA: Fresno Yosemite International" +FLL,AS,Alaska Airlines Inc.,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,AS,Alaska Airlines Inc.,1,"Spokane, WA: Spokane International" +HNL,AS,Alaska Airlines Inc.,1,"Honolulu, HI: Daniel K Inouye International" +IAD,AS,Alaska Airlines Inc.,1,"Washington, DC: Washington Dulles International" +IAH,AS,Alaska Airlines Inc.,1,"Houston, TX: George Bush Intercontinental/Houston" +IND,AS,Alaska Airlines Inc.,1,"Indianapolis, IN: Indianapolis International" +JAC,AS,Alaska Airlines Inc.,1,"Jackson, WY: Jackson Hole" +JFK,AS,Alaska Airlines Inc.,1,"New York, NY: John F. Kennedy International" +JNU,AS,Alaska Airlines Inc.,1,"Juneau, AK: Juneau International" +KOA,AS,Alaska Airlines Inc.,1,"Kona, HI: Ellison Onizuka Kona International at Keahole" +KTN,AS,Alaska Airlines Inc.,1,"Ketchikan, AK: Ketchikan International" +LAS,AS,Alaska Airlines Inc.,1,"Las Vegas, NV: Harry Reid International" +LAX,AS,Alaska Airlines Inc.,1,"Los Angeles, CA: Los Angeles International" +LIH,AS,Alaska Airlines Inc.,1,"Lihue, HI: Lihue Airport" +MCI,AS,Alaska Airlines Inc.,1,"Kansas City, MO: Kansas City International" +MCO,AS,Alaska Airlines Inc.,1,"Orlando, FL: Orlando International" +MIA,AS,Alaska Airlines Inc.,1,"Miami, FL: Miami International" +MKE,AS,Alaska Airlines Inc.,1,"Milwaukee, WI: General Mitchell International" +MSP,AS,Alaska Airlines Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,AS,Alaska Airlines Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,AS,Alaska Airlines Inc.,1,"Oakland, CA: Metro Oakland International" +OGG,AS,Alaska Airlines Inc.,1,"Kahului, HI: Kahului Airport" +OKC,AS,Alaska Airlines Inc.,1,"Oklahoma City, OK: Will Rogers World" +OMA,AS,Alaska Airlines Inc.,1,"Omaha, NE: Eppley Airfield" +OME,AS,Alaska Airlines Inc.,1,"Nome, AK: Nome Airport" +ONT,AS,Alaska Airlines Inc.,1,"Ontario, CA: Ontario International" +ORD,AS,Alaska Airlines Inc.,1,"Chicago, IL: Chicago O'Hare International" +OTZ,AS,Alaska Airlines Inc.,1,"Kotzebue, AK: Ralph Wien Memorial" +PAE,AS,Alaska Airlines Inc.,1,"Everett, WA: Snohomish County" +PDX,AS,Alaska Airlines Inc.,1,"Portland, OR: Portland International" +PHL,AS,Alaska Airlines Inc.,1,"Philadelphia, PA: Philadelphia International" +PHX,AS,Alaska Airlines Inc.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,AS,Alaska Airlines Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PSG,AS,Alaska Airlines Inc.,1,"Petersburg, AK: Petersburg James A Johnson" +PSP,AS,Alaska Airlines Inc.,1,"Palm Springs, CA: Palm Springs International" +RDM,AS,Alaska Airlines Inc.,1,"Bend/Redmond, OR: Roberts Field" +RDU,AS,Alaska Airlines Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,AS,Alaska Airlines Inc.,1,"Reno, NV: Reno/Tahoe International" +RSW,AS,Alaska Airlines Inc.,1,"Fort Myers, FL: Southwest Florida International" +SAN,AS,Alaska Airlines Inc.,1,"San Diego, CA: San Diego International" +SAT,AS,Alaska Airlines Inc.,1,"San Antonio, TX: San Antonio International" +SBA,AS,Alaska Airlines Inc.,1,"Santa Barbara, CA: Santa Barbara Municipal" +SCC,AS,Alaska Airlines Inc.,1,"Deadhorse, AK: Deadhorse Airport" +SEA,AS,Alaska Airlines Inc.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,AS,Alaska Airlines Inc.,1,"San Francisco, CA: San Francisco International" +SIT,AS,Alaska Airlines Inc.,1,"Sitka, AK: Sitka Rocky Gutierrez" +SJC,AS,Alaska Airlines Inc.,1,"San Jose, CA: Norman Y. Mineta San Jose International" +SLC,AS,Alaska Airlines Inc.,1,"Salt Lake City, UT: Salt Lake City International" +SMF,AS,Alaska Airlines Inc.,1,"Sacramento, CA: Sacramento International" +SNA,AS,Alaska Airlines Inc.,1,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,AS,Alaska Airlines Inc.,1,"St. Louis, MO: St Louis Lambert International" +STS,AS,Alaska Airlines Inc.,1,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +TPA,AS,Alaska Airlines Inc.,1,"Tampa, FL: Tampa International" +TUS,AS,Alaska Airlines Inc.,1,"Tucson, AZ: Tucson International" +WRG,AS,Alaska Airlines Inc.,1,"Wrangell, AK: Wrangell Airport" +YAK,AS,Alaska Airlines Inc.,1,"Yakutat, AK: Yakutat Airport" +ALB,B6,JetBlue Airways,1,"Albany, NY: Albany International" +ATL,B6,JetBlue Airways,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,B6,JetBlue Airways,1,"Austin, TX: Austin - Bergstrom International" +BDL,B6,JetBlue Airways,1,"Hartford, CT: Bradley International" +BNA,B6,JetBlue Airways,1,"Nashville, TN: Nashville International" +BOS,B6,JetBlue Airways,1,"Boston, MA: Logan International" +BQN,B6,JetBlue Airways,1,"Aguadilla, PR: Rafael Hernandez" +BTV,B6,JetBlue Airways,1,"Burlington, VT: Burlington International" +BUF,B6,JetBlue Airways,1,"Buffalo, NY: Buffalo Niagara International" +BUR,B6,JetBlue Airways,1,"Burbank, CA: Bob Hope" +BWI,B6,JetBlue Airways,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,B6,JetBlue Airways,1,"Bozeman, MT: Bozeman Yellowstone International" +CHS,B6,JetBlue Airways,1,"Charleston, SC: Charleston AFB/International" +CLE,B6,JetBlue Airways,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,B6,JetBlue Airways,1,"Charlotte, NC: Charlotte Douglas International" +DCA,B6,JetBlue Airways,1,"Washington, DC: Ronald Reagan Washington National" +DEN,B6,JetBlue Airways,1,"Denver, CO: Denver International" +DFW,B6,JetBlue Airways,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,B6,JetBlue Airways,1,"Detroit, MI: Detroit Metro Wayne County" +EWR,B6,JetBlue Airways,1,"Newark, NJ: Newark Liberty International" +EYW,B6,JetBlue Airways,1,"Key West, FL: Key West International" +FLL,B6,JetBlue Airways,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +HPN,B6,JetBlue Airways,1,"White Plains, NY: Westchester County" +IAH,B6,JetBlue Airways,1,"Houston, TX: George Bush Intercontinental/Houston" +JAX,B6,JetBlue Airways,1,"Jacksonville, FL: Jacksonville International" +JFK,B6,JetBlue Airways,1,"New York, NY: John F. Kennedy International" +LAS,B6,JetBlue Airways,1,"Las Vegas, NV: Harry Reid International" +LAX,B6,JetBlue Airways,1,"Los Angeles, CA: Los Angeles International" +LGA,B6,JetBlue Airways,1,"New York, NY: LaGuardia" +MCI,B6,JetBlue Airways,1,"Kansas City, MO: Kansas City International" +MCO,B6,JetBlue Airways,1,"Orlando, FL: Orlando International" +MIA,B6,JetBlue Airways,1,"Miami, FL: Miami International" +MKE,B6,JetBlue Airways,1,"Milwaukee, WI: General Mitchell International" +MSP,B6,JetBlue Airways,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,B6,JetBlue Airways,1,"New Orleans, LA: Louis Armstrong New Orleans International" +ONT,B6,JetBlue Airways,1,"Ontario, CA: Ontario International" +ORD,B6,JetBlue Airways,1,"Chicago, IL: Chicago O'Hare International" +ORH,B6,JetBlue Airways,1,"Worcester, MA: Worcester Regional" +PBI,B6,JetBlue Airways,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PHL,B6,JetBlue Airways,1,"Philadelphia, PA: Philadelphia International" +PHX,B6,JetBlue Airways,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,B6,JetBlue Airways,1,"Pittsburgh, PA: Pittsburgh International" +PSE,B6,JetBlue Airways,1,"Ponce, PR: Mercedita" +PSP,B6,JetBlue Airways,1,"Palm Springs, CA: Palm Springs International" +PVD,B6,JetBlue Airways,1,"Providence, RI: Rhode Island Tf Green International" +RDU,B6,JetBlue Airways,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,B6,JetBlue Airways,1,"Richmond, VA: Richmond International" +RNO,B6,JetBlue Airways,1,"Reno, NV: Reno/Tahoe International" +ROC,B6,JetBlue Airways,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,B6,JetBlue Airways,1,"Fort Myers, FL: Southwest Florida International" +SAN,B6,JetBlue Airways,1,"San Diego, CA: San Diego International" +SAT,B6,JetBlue Airways,1,"San Antonio, TX: San Antonio International" +SAV,B6,JetBlue Airways,1,"Savannah, GA: Savannah/Hilton Head International" +SEA,B6,JetBlue Airways,1,"Seattle, WA: Seattle/Tacoma International" +SFO,B6,JetBlue Airways,1,"San Francisco, CA: San Francisco International" +SJU,B6,JetBlue Airways,1,"San Juan, PR: Luis Munoz Marin International" +SLC,B6,JetBlue Airways,1,"Salt Lake City, UT: Salt Lake City International" +SMF,B6,JetBlue Airways,1,"Sacramento, CA: Sacramento International" +SRQ,B6,JetBlue Airways,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STT,B6,JetBlue Airways,1,"Charlotte Amalie, VI: Cyril E King" +SYR,B6,JetBlue Airways,1,"Syracuse, NY: Syracuse Hancock International" +TPA,B6,JetBlue Airways,1,"Tampa, FL: Tampa International" +ABQ,DL,Delta Air Lines Inc.,1,"Albuquerque, NM: Albuquerque International Sunport" +ALB,DL,Delta Air Lines Inc.,1,"Albany, NY: Albany International" +ANC,DL,Delta Air Lines Inc.,1,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,DL,Delta Air Lines Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,DL,Delta Air Lines Inc.,1,"Appleton, WI: Appleton International" +AUS,DL,Delta Air Lines Inc.,1,"Austin, TX: Austin - Bergstrom International" +AVL,DL,Delta Air Lines Inc.,1,"Asheville, NC: Asheville Regional" +BDL,DL,Delta Air Lines Inc.,1,"Hartford, CT: Bradley International" +BHM,DL,Delta Air Lines Inc.,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,DL,Delta Air Lines Inc.,1,"Billings, MT: Billings Logan International" +BIS,DL,Delta Air Lines Inc.,1,"Bismarck/Mandan, ND: Bismarck Municipal" +BNA,DL,Delta Air Lines Inc.,1,"Nashville, TN: Nashville International" +BOI,DL,Delta Air Lines Inc.,1,"Boise, ID: Boise Air Terminal" +BOS,DL,Delta Air Lines Inc.,1,"Boston, MA: Logan International" +BTR,DL,Delta Air Lines Inc.,1,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,DL,Delta Air Lines Inc.,1,"Burlington, VT: Burlington International" +BUF,DL,Delta Air Lines Inc.,1,"Buffalo, NY: Buffalo Niagara International" +BUR,DL,Delta Air Lines Inc.,1,"Burbank, CA: Bob Hope" +BWI,DL,Delta Air Lines Inc.,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,DL,Delta Air Lines Inc.,1,"Bozeman, MT: Bozeman Yellowstone International" +CAE,DL,Delta Air Lines Inc.,1,"Columbia, SC: Columbia Metropolitan" +CHA,DL,Delta Air Lines Inc.,1,"Chattanooga, TN: Lovell Field" +CHS,DL,Delta Air Lines Inc.,1,"Charleston, SC: Charleston AFB/International" +CID,DL,Delta Air Lines Inc.,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,DL,Delta Air Lines Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,DL,Delta Air Lines Inc.,1,"Charlotte, NC: Charlotte Douglas International" +CMH,DL,Delta Air Lines Inc.,1,"Columbus, OH: John Glenn Columbus International" +CVG,DL,Delta Air Lines Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,DL,Delta Air Lines Inc.,1,"Daytona Beach, FL: Daytona Beach International" +DAL,DL,Delta Air Lines Inc.,1,"Dallas, TX: Dallas Love Field" +DAY,DL,Delta Air Lines Inc.,1,"Dayton, OH: James M Cox/Dayton International" +DCA,DL,Delta Air Lines Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DEN,DL,Delta Air Lines Inc.,1,"Denver, CO: Denver International" +DFW,DL,Delta Air Lines Inc.,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,DL,Delta Air Lines Inc.,1,"Des Moines, IA: Des Moines International" +DTW,DL,Delta Air Lines Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +ECP,DL,Delta Air Lines Inc.,1,"Panama City, FL: Northwest Florida Beaches International" +EGE,DL,Delta Air Lines Inc.,1,"Eagle, CO: Eagle County Regional" +ELP,DL,Delta Air Lines Inc.,1,"El Paso, TX: El Paso International" +EUG,DL,Delta Air Lines Inc.,1,"Eugene, OR: Mahlon Sweet Field" +EVV,DL,Delta Air Lines Inc.,1,"Evansville, IN: Evansville Regional" +EWR,DL,Delta Air Lines Inc.,1,"Newark, NJ: Newark Liberty International" +EYW,DL,Delta Air Lines Inc.,1,"Key West, FL: Key West International" +FAI,DL,Delta Air Lines Inc.,1,"Fairbanks, AK: Fairbanks International" +FAR,DL,Delta Air Lines Inc.,1,"Fargo, ND: Hector International" +FAY,DL,Delta Air Lines Inc.,1,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FCA,DL,Delta Air Lines Inc.,1,"Kalispell, MT: Glacier Park International" +FLL,DL,Delta Air Lines Inc.,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,DL,Delta Air Lines Inc.,1,"Sioux Falls, SD: Joe Foss Field" +GEG,DL,Delta Air Lines Inc.,1,"Spokane, WA: Spokane International" +GNV,DL,Delta Air Lines Inc.,1,"Gainesville, FL: Gainesville Regional" +GPT,DL,Delta Air Lines Inc.,1,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,DL,Delta Air Lines Inc.,1,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,DL,Delta Air Lines Inc.,1,"Grand Rapids, MI: Gerald R. Ford International" +GSO,DL,Delta Air Lines Inc.,1,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,DL,Delta Air Lines Inc.,1,"Greer, SC: Greenville-Spartanburg International" +HDN,DL,Delta Air Lines Inc.,1,"Hayden, CO: Yampa Valley" +HNL,DL,Delta Air Lines Inc.,1,"Honolulu, HI: Daniel K Inouye International" +HOU,DL,Delta Air Lines Inc.,1,"Houston, TX: William P Hobby" +HPN,DL,Delta Air Lines Inc.,1,"White Plains, NY: Westchester County" +HSV,DL,Delta Air Lines Inc.,1,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,DL,Delta Air Lines Inc.,1,"Washington, DC: Washington Dulles International" +IAH,DL,Delta Air Lines Inc.,1,"Houston, TX: George Bush Intercontinental/Houston" +ICT,DL,Delta Air Lines Inc.,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +ILM,DL,Delta Air Lines Inc.,1,"Wilmington, NC: Wilmington International" +IND,DL,Delta Air Lines Inc.,1,"Indianapolis, IN: Indianapolis International" +JAC,DL,Delta Air Lines Inc.,1,"Jackson, WY: Jackson Hole" +JAN,DL,Delta Air Lines Inc.,1,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,DL,Delta Air Lines Inc.,1,"Jacksonville, FL: Jacksonville International" +JFK,DL,Delta Air Lines Inc.,1,"New York, NY: John F. Kennedy International" +JNU,DL,Delta Air Lines Inc.,1,"Juneau, AK: Juneau International" +KOA,DL,Delta Air Lines Inc.,1,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,DL,Delta Air Lines Inc.,1,"Las Vegas, NV: Harry Reid International" +LAX,DL,Delta Air Lines Inc.,1,"Los Angeles, CA: Los Angeles International" +LEX,DL,Delta Air Lines Inc.,1,"Lexington, KY: Blue Grass" +LGA,DL,Delta Air Lines Inc.,1,"New York, NY: LaGuardia" +LIH,DL,Delta Air Lines Inc.,1,"Lihue, HI: Lihue Airport" +LIT,DL,Delta Air Lines Inc.,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,DL,Delta Air Lines Inc.,1,"Kansas City, MO: Kansas City International" +MCO,DL,Delta Air Lines Inc.,1,"Orlando, FL: Orlando International" +MDT,DL,Delta Air Lines Inc.,1,"Harrisburg, PA: Harrisburg International" +MDW,DL,Delta Air Lines Inc.,1,"Chicago, IL: Chicago Midway International" +MEM,DL,Delta Air Lines Inc.,1,"Memphis, TN: Memphis International" +MIA,DL,Delta Air Lines Inc.,1,"Miami, FL: Miami International" +MKE,DL,Delta Air Lines Inc.,1,"Milwaukee, WI: General Mitchell International" +MLB,DL,Delta Air Lines Inc.,1,"Melbourne, FL: Melbourne Orlando International" +MOB,DL,Delta Air Lines Inc.,1,"Mobile, AL: Mobile Regional" +MSN,DL,Delta Air Lines Inc.,1,"Madison, WI: Dane County Regional-Truax Field" +MSO,DL,Delta Air Lines Inc.,1,"Missoula, MT: Missoula Montana" +MSP,DL,Delta Air Lines Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,DL,Delta Air Lines Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,DL,Delta Air Lines Inc.,1,"Montrose/Delta, CO: Montrose Regional" +MYR,DL,Delta Air Lines Inc.,1,"Myrtle Beach, SC: Myrtle Beach International" +OAJ,DL,Delta Air Lines Inc.,1,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,DL,Delta Air Lines Inc.,1,"Oakland, CA: Metro Oakland International" +OGG,DL,Delta Air Lines Inc.,1,"Kahului, HI: Kahului Airport" +OKC,DL,Delta Air Lines Inc.,1,"Oklahoma City, OK: Will Rogers World" +OMA,DL,Delta Air Lines Inc.,1,"Omaha, NE: Eppley Airfield" +ONT,DL,Delta Air Lines Inc.,1,"Ontario, CA: Ontario International" +ORD,DL,Delta Air Lines Inc.,1,"Chicago, IL: Chicago O'Hare International" +ORF,DL,Delta Air Lines Inc.,1,"Norfolk, VA: Norfolk International" +PBI,DL,Delta Air Lines Inc.,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,DL,Delta Air Lines Inc.,1,"Portland, OR: Portland International" +PHL,DL,Delta Air Lines Inc.,1,"Philadelphia, PA: Philadelphia International" +PHX,DL,Delta Air Lines Inc.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,DL,Delta Air Lines Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PNS,DL,Delta Air Lines Inc.,1,"Pensacola, FL: Pensacola International" +PSC,DL,Delta Air Lines Inc.,1,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,DL,Delta Air Lines Inc.,1,"Palm Springs, CA: Palm Springs International" +PVD,DL,Delta Air Lines Inc.,1,"Providence, RI: Rhode Island Tf Green International" +PWM,DL,Delta Air Lines Inc.,1,"Portland, ME: Portland International Jetport" +RDU,DL,Delta Air Lines Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,DL,Delta Air Lines Inc.,1,"Richmond, VA: Richmond International" +RNO,DL,Delta Air Lines Inc.,1,"Reno, NV: Reno/Tahoe International" +ROA,DL,Delta Air Lines Inc.,1,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,DL,Delta Air Lines Inc.,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,DL,Delta Air Lines Inc.,1,"Rochester, MN: Rochester International" +RSW,DL,Delta Air Lines Inc.,1,"Fort Myers, FL: Southwest Florida International" +SAN,DL,Delta Air Lines Inc.,1,"San Diego, CA: San Diego International" +SAT,DL,Delta Air Lines Inc.,1,"San Antonio, TX: San Antonio International" +SAV,DL,Delta Air Lines Inc.,1,"Savannah, GA: Savannah/Hilton Head International" +SDF,DL,Delta Air Lines Inc.,1,"Louisville, KY: Louisville Muhammad Ali International" +SEA,DL,Delta Air Lines Inc.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,DL,Delta Air Lines Inc.,1,"San Francisco, CA: San Francisco International" +SJC,DL,Delta Air Lines Inc.,1,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,DL,Delta Air Lines Inc.,1,"San Juan, PR: Luis Munoz Marin International" +SLC,DL,Delta Air Lines Inc.,1,"Salt Lake City, UT: Salt Lake City International" +SMF,DL,Delta Air Lines Inc.,1,"Sacramento, CA: Sacramento International" +SNA,DL,Delta Air Lines Inc.,1,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,DL,Delta Air Lines Inc.,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,DL,Delta Air Lines Inc.,1,"St. Louis, MO: St Louis Lambert International" +STT,DL,Delta Air Lines Inc.,1,"Charlotte Amalie, VI: Cyril E King" +STX,DL,Delta Air Lines Inc.,1,"Christiansted, VI: Henry E. Rohlsen" +SYR,DL,Delta Air Lines Inc.,1,"Syracuse, NY: Syracuse Hancock International" +TLH,DL,Delta Air Lines Inc.,1,"Tallahassee, FL: Tallahassee International" +TPA,DL,Delta Air Lines Inc.,1,"Tampa, FL: Tampa International" +TRI,DL,Delta Air Lines Inc.,1,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,DL,Delta Air Lines Inc.,1,"Tulsa, OK: Tulsa International" +TUS,DL,Delta Air Lines Inc.,1,"Tucson, AZ: Tucson International" +TVC,DL,Delta Air Lines Inc.,1,"Traverse City, MI: Cherry Capital" +TYS,DL,Delta Air Lines Inc.,1,"Knoxville, TN: McGhee Tyson" +VPS,DL,Delta Air Lines Inc.,1,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,DL,Delta Air Lines Inc.,1,"Fayetteville, AR: Northwest Arkansas National" +ABQ,F9,Frontier Airlines Inc.,1,"Albuquerque, NM: Albuquerque International Sunport" +ATL,F9,Frontier Airlines Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,F9,Frontier Airlines Inc.,1,"Austin, TX: Austin - Bergstrom International" +BDL,F9,Frontier Airlines Inc.,1,"Hartford, CT: Bradley International" +BMI,F9,Frontier Airlines Inc.,1,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,F9,Frontier Airlines Inc.,1,"Nashville, TN: Nashville International" +BOS,F9,Frontier Airlines Inc.,1,"Boston, MA: Logan International" +BQN,F9,Frontier Airlines Inc.,1,"Aguadilla, PR: Rafael Hernandez" +BUF,F9,Frontier Airlines Inc.,1,"Buffalo, NY: Buffalo Niagara International" +BUR,F9,Frontier Airlines Inc.,1,"Burbank, CA: Bob Hope" +BWI,F9,Frontier Airlines Inc.,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CID,F9,Frontier Airlines Inc.,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,F9,Frontier Airlines Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,F9,Frontier Airlines Inc.,1,"Charlotte, NC: Charlotte Douglas International" +CMH,F9,Frontier Airlines Inc.,1,"Columbus, OH: John Glenn Columbus International" +CVG,F9,Frontier Airlines Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,F9,Frontier Airlines Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DEN,F9,Frontier Airlines Inc.,1,"Denver, CO: Denver International" +DFW,F9,Frontier Airlines Inc.,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,F9,Frontier Airlines Inc.,1,"Des Moines, IA: Des Moines International" +DTW,F9,Frontier Airlines Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +ELP,F9,Frontier Airlines Inc.,1,"El Paso, TX: El Paso International" +FAR,F9,Frontier Airlines Inc.,1,"Fargo, ND: Hector International" +FLL,F9,Frontier Airlines Inc.,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,F9,Frontier Airlines Inc.,1,"Sioux Falls, SD: Joe Foss Field" +GRB,F9,Frontier Airlines Inc.,1,"Green Bay, WI: Green Bay Austin Straubel International" +GRR,F9,Frontier Airlines Inc.,1,"Grand Rapids, MI: Gerald R. Ford International" +HOU,F9,Frontier Airlines Inc.,1,"Houston, TX: William P Hobby" +IAH,F9,Frontier Airlines Inc.,1,"Houston, TX: George Bush Intercontinental/Houston" +IND,F9,Frontier Airlines Inc.,1,"Indianapolis, IN: Indianapolis International" +ISP,F9,Frontier Airlines Inc.,1,"Islip, NY: Long Island MacArthur" +JAX,F9,Frontier Airlines Inc.,1,"Jacksonville, FL: Jacksonville International" +LAS,F9,Frontier Airlines Inc.,1,"Las Vegas, NV: Harry Reid International" +LGA,F9,Frontier Airlines Inc.,1,"New York, NY: LaGuardia" +LIT,F9,Frontier Airlines Inc.,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,F9,Frontier Airlines Inc.,1,"Kansas City, MO: Kansas City International" +MCO,F9,Frontier Airlines Inc.,1,"Orlando, FL: Orlando International" +MDT,F9,Frontier Airlines Inc.,1,"Harrisburg, PA: Harrisburg International" +MDW,F9,Frontier Airlines Inc.,1,"Chicago, IL: Chicago Midway International" +MEM,F9,Frontier Airlines Inc.,1,"Memphis, TN: Memphis International" +MIA,F9,Frontier Airlines Inc.,1,"Miami, FL: Miami International" +MKE,F9,Frontier Airlines Inc.,1,"Milwaukee, WI: General Mitchell International" +MSN,F9,Frontier Airlines Inc.,1,"Madison, WI: Dane County Regional-Truax Field" +MSP,F9,Frontier Airlines Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,F9,Frontier Airlines Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +OAK,F9,Frontier Airlines Inc.,1,"Oakland, CA: Metro Oakland International" +OKC,F9,Frontier Airlines Inc.,1,"Oklahoma City, OK: Will Rogers World" +OMA,F9,Frontier Airlines Inc.,1,"Omaha, NE: Eppley Airfield" +ONT,F9,Frontier Airlines Inc.,1,"Ontario, CA: Ontario International" +ORD,F9,Frontier Airlines Inc.,1,"Chicago, IL: Chicago O'Hare International" +ORF,F9,Frontier Airlines Inc.,1,"Norfolk, VA: Norfolk International" +PBI,F9,Frontier Airlines Inc.,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,F9,Frontier Airlines Inc.,1,"Portland, OR: Portland International" +PHL,F9,Frontier Airlines Inc.,1,"Philadelphia, PA: Philadelphia International" +PHX,F9,Frontier Airlines Inc.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,F9,Frontier Airlines Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PNS,F9,Frontier Airlines Inc.,1,"Pensacola, FL: Pensacola International" +PVD,F9,Frontier Airlines Inc.,1,"Providence, RI: Rhode Island Tf Green International" +PWM,F9,Frontier Airlines Inc.,1,"Portland, ME: Portland International Jetport" +RDU,F9,Frontier Airlines Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RNO,F9,Frontier Airlines Inc.,1,"Reno, NV: Reno/Tahoe International" +ROC,F9,Frontier Airlines Inc.,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,F9,Frontier Airlines Inc.,1,"Fort Myers, FL: Southwest Florida International" +SAN,F9,Frontier Airlines Inc.,1,"San Diego, CA: San Diego International" +SAT,F9,Frontier Airlines Inc.,1,"San Antonio, TX: San Antonio International" +SEA,F9,Frontier Airlines Inc.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,F9,Frontier Airlines Inc.,1,"San Francisco, CA: San Francisco International" +SJU,F9,Frontier Airlines Inc.,1,"San Juan, PR: Luis Munoz Marin International" +SLC,F9,Frontier Airlines Inc.,1,"Salt Lake City, UT: Salt Lake City International" +SMF,F9,Frontier Airlines Inc.,1,"Sacramento, CA: Sacramento International" +SNA,F9,Frontier Airlines Inc.,1,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,F9,Frontier Airlines Inc.,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,F9,Frontier Airlines Inc.,1,"St. Louis, MO: St Louis Lambert International" +SWF,F9,Frontier Airlines Inc.,1,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,F9,Frontier Airlines Inc.,1,"Syracuse, NY: Syracuse Hancock International" +TPA,F9,Frontier Airlines Inc.,1,"Tampa, FL: Tampa International" +TTN,F9,Frontier Airlines Inc.,1,"Trenton, NJ: Trenton Mercer" +TYS,F9,Frontier Airlines Inc.,1,"Knoxville, TN: McGhee Tyson" +XNA,F9,Frontier Airlines Inc.,1,"Fayetteville, AR: Northwest Arkansas National" +ABE,G4,Allegiant Air,1,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ALB,G4,Allegiant Air,1,"Albany, NY: Albany International" +ATW,G4,Allegiant Air,1,"Appleton, WI: Appleton International" +AUS,G4,Allegiant Air,1,"Austin, TX: Austin - Bergstrom International" +AVL,G4,Allegiant Air,1,"Asheville, NC: Asheville Regional" +AZA,G4,Allegiant Air,1,"Phoenix, AZ: Phoenix - Mesa Gateway" +BGR,G4,Allegiant Air,1,"Bangor, ME: Bangor International" +BIL,G4,Allegiant Air,1,"Billings, MT: Billings Logan International" +BIS,G4,Allegiant Air,1,"Bismarck/Mandan, ND: Bismarck Municipal" +BLI,G4,Allegiant Air,1,"Bellingham, WA: Bellingham International" +BLV,G4,Allegiant Air,1,"Belleville, IL: Scott AFB MidAmerica St Louis" +BMI,G4,Allegiant Air,1,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,G4,Allegiant Air,1,"Nashville, TN: Nashville International" +BOI,G4,Allegiant Air,1,"Boise, ID: Boise Air Terminal" +BOS,G4,Allegiant Air,1,"Boston, MA: Logan International" +BWI,G4,Allegiant Air,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,G4,Allegiant Air,1,"Bozeman, MT: Bozeman Yellowstone International" +CAK,G4,Allegiant Air,1,"Akron, OH: Akron-Canton Regional" +CHA,G4,Allegiant Air,1,"Chattanooga, TN: Lovell Field" +CHS,G4,Allegiant Air,1,"Charleston, SC: Charleston AFB/International" +CID,G4,Allegiant Air,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CKB,G4,Allegiant Air,1,"Clarksburg/Fairmont, WV: North Central West Virginia" +CVG,G4,Allegiant Air,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,G4,Allegiant Air,1,"Dayton, OH: James M Cox/Dayton International" +DEN,G4,Allegiant Air,1,"Denver, CO: Denver International" +DSM,G4,Allegiant Air,1,"Des Moines, IA: Des Moines International" +ELM,G4,Allegiant Air,1,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,G4,Allegiant Air,1,"El Paso, TX: El Paso International" +EUG,G4,Allegiant Air,1,"Eugene, OR: Mahlon Sweet Field" +EVV,G4,Allegiant Air,1,"Evansville, IN: Evansville Regional" +EWR,G4,Allegiant Air,1,"Newark, NJ: Newark Liberty International" +EYW,G4,Allegiant Air,1,"Key West, FL: Key West International" +FAR,G4,Allegiant Air,1,"Fargo, ND: Hector International" +FAT,G4,Allegiant Air,1,"Fresno, CA: Fresno Yosemite International" +FCA,G4,Allegiant Air,1,"Kalispell, MT: Glacier Park International" +FLL,G4,Allegiant Air,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FNT,G4,Allegiant Air,1,"Flint, MI: Bishop International" +FSD,G4,Allegiant Air,1,"Sioux Falls, SD: Joe Foss Field" +FWA,G4,Allegiant Air,1,"Fort Wayne, IN: Fort Wayne International" +GEG,G4,Allegiant Air,1,"Spokane, WA: Spokane International" +GFK,G4,Allegiant Air,1,"Grand Forks, ND: Grand Forks International" +GJT,G4,Allegiant Air,1,"Grand Junction, CO: Grand Junction Regional" +GRI,G4,Allegiant Air,1,"Grand Island, NE: Central Nebraska Regional" +GRR,G4,Allegiant Air,1,"Grand Rapids, MI: Gerald R. Ford International" +GSO,G4,Allegiant Air,1,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,G4,Allegiant Air,1,"Greer, SC: Greenville-Spartanburg International" +GTF,G4,Allegiant Air,1,"Great Falls, MT: Great Falls International" +HGR,G4,Allegiant Air,1,"Hagerstown, MD: Hagerstown Regional-Richard A. Henson Field" +HOU,G4,Allegiant Air,1,"Houston, TX: William P Hobby" +HTS,G4,Allegiant Air,1,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,G4,Allegiant Air,1,"Washington, DC: Washington Dulles International" +IAG,G4,Allegiant Air,1,"Niagara Falls, NY: Niagara Falls International" +ICT,G4,Allegiant Air,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,G4,Allegiant Air,1,"Idaho Falls, ID: Idaho Falls Regional" +IND,G4,Allegiant Air,1,"Indianapolis, IN: Indianapolis International" +JAX,G4,Allegiant Air,1,"Jacksonville, FL: Jacksonville International" +LAS,G4,Allegiant Air,1,"Las Vegas, NV: Harry Reid International" +LAX,G4,Allegiant Air,1,"Los Angeles, CA: Los Angeles International" +LCK,G4,Allegiant Air,1,"Columbus, OH: Rickenbacker International" +LEX,G4,Allegiant Air,1,"Lexington, KY: Blue Grass" +LIT,G4,Allegiant Air,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LRD,G4,Allegiant Air,1,"Laredo, TX: Laredo International" +MCI,G4,Allegiant Air,1,"Kansas City, MO: Kansas City International" +MDT,G4,Allegiant Air,1,"Harrisburg, PA: Harrisburg International" +MDW,G4,Allegiant Air,1,"Chicago, IL: Chicago Midway International" +MEM,G4,Allegiant Air,1,"Memphis, TN: Memphis International" +MFE,G4,Allegiant Air,1,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,G4,Allegiant Air,1,"Medford, OR: Rogue Valley International - Medford" +MLB,G4,Allegiant Air,1,"Melbourne, FL: Melbourne Orlando International" +MLI,G4,Allegiant Air,1,"Moline, IL: Quad Cities International" +MOT,G4,Allegiant Air,1,"Minot, ND: Minot International" +MRY,G4,Allegiant Air,1,"Monterey, CA: Monterey Regional" +MSO,G4,Allegiant Air,1,"Missoula, MT: Missoula Montana" +MSP,G4,Allegiant Air,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,G4,Allegiant Air,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,G4,Allegiant Air,1,"Myrtle Beach, SC: Myrtle Beach International" +OAK,G4,Allegiant Air,1,"Oakland, CA: Metro Oakland International" +OKC,G4,Allegiant Air,1,"Oklahoma City, OK: Will Rogers World" +OMA,G4,Allegiant Air,1,"Omaha, NE: Eppley Airfield" +ORF,G4,Allegiant Air,1,"Norfolk, VA: Norfolk International" +OWB,G4,Allegiant Air,1,"Owensboro, KY: Owensboro Daviess County Regional" +PBG,G4,Allegiant Air,1,"Plattsburgh, NY: Plattsburgh International" +PBI,G4,Allegiant Air,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,G4,Allegiant Air,1,"Portland, OR: Portland International" +PGD,G4,Allegiant Air,1,"Punta Gorda, FL: Punta Gorda Airport" +PHX,G4,Allegiant Air,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,G4,Allegiant Air,1,"Peoria, IL: General Downing - Peoria International" +PIE,G4,Allegiant Air,1,"St. Petersburg, FL: St Pete Clearwater International" +PIT,G4,Allegiant Air,1,"Pittsburgh, PA: Pittsburgh International" +PSC,G4,Allegiant Air,1,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSM,G4,Allegiant Air,1,"Portsmouth, NH: Portsmouth International at Pease" +PSP,G4,Allegiant Air,1,"Palm Springs, CA: Palm Springs International" +PVD,G4,Allegiant Air,1,"Providence, RI: Rhode Island Tf Green International" +PVU,G4,Allegiant Air,1,"Provo, UT: Provo Municipal" +RAP,G4,Allegiant Air,1,"Rapid City, SD: Rapid City Regional" +RFD,G4,Allegiant Air,1,"Rockford, IL: Chicago/Rockford International" +RIC,G4,Allegiant Air,1,"Richmond, VA: Richmond International" +RNO,G4,Allegiant Air,1,"Reno, NV: Reno/Tahoe International" +ROA,G4,Allegiant Air,1,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,G4,Allegiant Air,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAN,G4,Allegiant Air,1,"San Diego, CA: San Diego International" +SAT,G4,Allegiant Air,1,"San Antonio, TX: San Antonio International" +SAV,G4,Allegiant Air,1,"Savannah, GA: Savannah/Hilton Head International" +SBN,G4,Allegiant Air,1,"South Bend, IN: South Bend International" +SCK,G4,Allegiant Air,1,"Stockton, CA: Stockton Metro" +SDF,G4,Allegiant Air,1,"Louisville, KY: Louisville Muhammad Ali International" +SFB,G4,Allegiant Air,1,"Sanford, FL: Orlando Sanford International" +SGF,G4,Allegiant Air,1,"Springfield, MO: Springfield-Branson National" +SHV,G4,Allegiant Air,1,"Shreveport, LA: Shreveport Regional" +SMX,G4,Allegiant Air,1,"Santa Maria, CA: Santa Maria Public/Capt. G. Allan Hancock Field" +SNA,G4,Allegiant Air,1,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,G4,Allegiant Air,1,"Springfield, IL: Abraham Lincoln Capital" +SRQ,G4,Allegiant Air,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STC,G4,Allegiant Air,1,"St. Cloud, MN: St. Cloud Regional" +SWF,G4,Allegiant Air,1,"Newburgh/Poughkeepsie, NY: New York Stewart International" +SYR,G4,Allegiant Air,1,"Syracuse, NY: Syracuse Hancock International" +TOL,G4,Allegiant Air,1,"Toledo, OH: Eugene F Kranz Toledo Express" +TRI,G4,Allegiant Air,1,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,G4,Allegiant Air,1,"Tulsa, OK: Tulsa International" +TVC,G4,Allegiant Air,1,"Traverse City, MI: Cherry Capital" +TYS,G4,Allegiant Air,1,"Knoxville, TN: McGhee Tyson" +USA,G4,Allegiant Air,1,"Concord, NC: Concord Padgett Regional" +VPS,G4,Allegiant Air,1,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,G4,Allegiant Air,1,"Fayetteville, AR: Northwest Arkansas National" +AUS,HA,Hawaiian Airlines Inc.,1,"Austin, TX: Austin - Bergstrom International" +BOS,HA,Hawaiian Airlines Inc.,1,"Boston, MA: Logan International" +HNL,HA,Hawaiian Airlines Inc.,1,"Honolulu, HI: Daniel K Inouye International" +ITO,HA,Hawaiian Airlines Inc.,1,"Hilo, HI: Hilo International" +JFK,HA,Hawaiian Airlines Inc.,1,"New York, NY: John F. Kennedy International" +KOA,HA,Hawaiian Airlines Inc.,1,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,HA,Hawaiian Airlines Inc.,1,"Las Vegas, NV: Harry Reid International" +LAX,HA,Hawaiian Airlines Inc.,1,"Los Angeles, CA: Los Angeles International" +LGB,HA,Hawaiian Airlines Inc.,1,"Long Beach, CA: Long Beach Airport" +LIH,HA,Hawaiian Airlines Inc.,1,"Lihue, HI: Lihue Airport" +OAK,HA,Hawaiian Airlines Inc.,1,"Oakland, CA: Metro Oakland International" +OGG,HA,Hawaiian Airlines Inc.,1,"Kahului, HI: Kahului Airport" +ONT,HA,Hawaiian Airlines Inc.,1,"Ontario, CA: Ontario International" +PDX,HA,Hawaiian Airlines Inc.,1,"Portland, OR: Portland International" +PHX,HA,Hawaiian Airlines Inc.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PPG,HA,Hawaiian Airlines Inc.,1,"Pago Pago, TT: Pago Pago International" +SAN,HA,Hawaiian Airlines Inc.,1,"San Diego, CA: San Diego International" +SEA,HA,Hawaiian Airlines Inc.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,HA,Hawaiian Airlines Inc.,1,"San Francisco, CA: San Francisco International" +SJC,HA,Hawaiian Airlines Inc.,1,"San Jose, CA: Norman Y. Mineta San Jose International" +SMF,HA,Hawaiian Airlines Inc.,1,"Sacramento, CA: Sacramento International" +ABE,MQ,Envoy Air,1,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABI,MQ,Envoy Air,1,"Abilene, TX: Abilene Regional" +ABQ,MQ,Envoy Air,1,"Albuquerque, NM: Albuquerque International Sunport" +AGS,MQ,Envoy Air,1,"Augusta, GA: Augusta Regional at Bush Field" +ALB,MQ,Envoy Air,1,"Albany, NY: Albany International" +ALO,MQ,Envoy Air,1,"Waterloo, IA: Waterloo Regional" +ATL,MQ,Envoy Air,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,MQ,Envoy Air,1,"Appleton, WI: Appleton International" +AUS,MQ,Envoy Air,1,"Austin, TX: Austin - Bergstrom International" +AVL,MQ,Envoy Air,1,"Asheville, NC: Asheville Regional" +AVP,MQ,Envoy Air,1,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +AZO,MQ,Envoy Air,1,"Kalamazoo, MI: Kalamazoo/Battle Creek International" +BDL,MQ,Envoy Air,1,"Hartford, CT: Bradley International" +BFL,MQ,Envoy Air,1,"Bakersfield, CA: Meadows Field" +BGR,MQ,Envoy Air,1,"Bangor, ME: Bangor International" +BHM,MQ,Envoy Air,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIL,MQ,Envoy Air,1,"Billings, MT: Billings Logan International" +BIS,MQ,Envoy Air,1,"Bismarck/Mandan, ND: Bismarck Municipal" +BMI,MQ,Envoy Air,1,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,MQ,Envoy Air,1,"Nashville, TN: Nashville International" +BOS,MQ,Envoy Air,1,"Boston, MA: Logan International" +BRO,MQ,Envoy Air,1,"Brownsville, TX: Brownsville South Padre Island International" +BTR,MQ,Envoy Air,1,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BUF,MQ,Envoy Air,1,"Buffalo, NY: Buffalo Niagara International" +BWI,MQ,Envoy Air,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,MQ,Envoy Air,1,"Bozeman, MT: Bozeman Yellowstone International" +CHA,MQ,Envoy Air,1,"Chattanooga, TN: Lovell Field" +CHS,MQ,Envoy Air,1,"Charleston, SC: Charleston AFB/International" +CID,MQ,Envoy Air,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,MQ,Envoy Air,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,MQ,Envoy Air,1,"Charlotte, NC: Charlotte Douglas International" +CMH,MQ,Envoy Air,1,"Columbus, OH: John Glenn Columbus International" +CMI,MQ,Envoy Air,1,"Champaign/Urbana, IL: University of Illinois/Willard" +COS,MQ,Envoy Air,1,"Colorado Springs, CO: City of Colorado Springs Municipal" +COU,MQ,Envoy Air,1,"Columbia, MO: Columbia Regional" +CRP,MQ,Envoy Air,1,"Corpus Christi, TX: Corpus Christi International" +CVG,MQ,Envoy Air,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CWA,MQ,Envoy Air,1,"Mosinee, WI: Central Wisconsin" +DAB,MQ,Envoy Air,1,"Daytona Beach, FL: Daytona Beach International" +DAY,MQ,Envoy Air,1,"Dayton, OH: James M Cox/Dayton International" +DCA,MQ,Envoy Air,1,"Washington, DC: Ronald Reagan Washington National" +DFW,MQ,Envoy Air,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DRO,MQ,Envoy Air,1,"Durango, CO: Durango La Plata County" +DSM,MQ,Envoy Air,1,"Des Moines, IA: Des Moines International" +DTW,MQ,Envoy Air,1,"Detroit, MI: Detroit Metro Wayne County" +ECP,MQ,Envoy Air,1,"Panama City, FL: Northwest Florida Beaches International" +ELP,MQ,Envoy Air,1,"El Paso, TX: El Paso International" +EVV,MQ,Envoy Air,1,"Evansville, IN: Evansville Regional" +EWR,MQ,Envoy Air,1,"Newark, NJ: Newark Liberty International" +EYW,MQ,Envoy Air,1,"Key West, FL: Key West International" +FAR,MQ,Envoy Air,1,"Fargo, ND: Hector International" +FAY,MQ,Envoy Air,1,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +FNT,MQ,Envoy Air,1,"Flint, MI: Bishop International" +FSD,MQ,Envoy Air,1,"Sioux Falls, SD: Joe Foss Field" +FSM,MQ,Envoy Air,1,"Fort Smith, AR: Fort Smith Regional" +FWA,MQ,Envoy Air,1,"Fort Wayne, IN: Fort Wayne International" +GJT,MQ,Envoy Air,1,"Grand Junction, CO: Grand Junction Regional" +GNV,MQ,Envoy Air,1,"Gainesville, FL: Gainesville Regional" +GPT,MQ,Envoy Air,1,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,MQ,Envoy Air,1,"Green Bay, WI: Green Bay Austin Straubel International" +GRK,MQ,Envoy Air,1,"Killeen, TX: Robert Gray AAF" +GRR,MQ,Envoy Air,1,"Grand Rapids, MI: Gerald R. Ford International" +GSO,MQ,Envoy Air,1,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,MQ,Envoy Air,1,"Greer, SC: Greenville-Spartanburg International" +HHH,MQ,Envoy Air,1,"Hilton Head, SC: Hilton Head Airport" +HOU,MQ,Envoy Air,1,"Houston, TX: William P Hobby" +HPN,MQ,Envoy Air,1,"White Plains, NY: Westchester County" +HRL,MQ,Envoy Air,1,"Harlingen/San Benito, TX: Valley International" +HSV,MQ,Envoy Air,1,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAH,MQ,Envoy Air,1,"Houston, TX: George Bush Intercontinental/Houston" +ICT,MQ,Envoy Air,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,MQ,Envoy Air,1,"Indianapolis, IN: Indianapolis International" +JAN,MQ,Envoy Air,1,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,MQ,Envoy Air,1,"Jacksonville, FL: Jacksonville International" +LAN,MQ,Envoy Air,1,"Lansing, MI: Capital Region International" +LBB,MQ,Envoy Air,1,"Lubbock, TX: Lubbock Preston Smith International" +LCH,MQ,Envoy Air,1,"Lake Charles, LA: Lake Charles Regional" +LEX,MQ,Envoy Air,1,"Lexington, KY: Blue Grass" +LFT,MQ,Envoy Air,1,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,MQ,Envoy Air,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LSE,MQ,Envoy Air,1,"La Crosse, WI: La Crosse Regional" +MAF,MQ,Envoy Air,1,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,MQ,Envoy Air,1,"Kansas City, MO: Kansas City International" +MEM,MQ,Envoy Air,1,"Memphis, TN: Memphis International" +MGM,MQ,Envoy Air,1,"Montgomery, AL: Montgomery Regional" +MHK,MQ,Envoy Air,1,"Manhattan/Ft. Riley, KS: Manhattan Regional" +MIA,MQ,Envoy Air,1,"Miami, FL: Miami International" +MKE,MQ,Envoy Air,1,"Milwaukee, WI: General Mitchell International" +MLI,MQ,Envoy Air,1,"Moline, IL: Quad Cities International" +MOB,MQ,Envoy Air,1,"Mobile, AL: Mobile Regional" +MQT,MQ,Envoy Air,1,"Marquette, MI: Sawyer International" +MRY,MQ,Envoy Air,1,"Monterey, CA: Monterey Regional" +MSN,MQ,Envoy Air,1,"Madison, WI: Dane County Regional-Truax Field" +MSO,MQ,Envoy Air,1,"Missoula, MT: Missoula Montana" +MSP,MQ,Envoy Air,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,MQ,Envoy Air,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,MQ,Envoy Air,1,"Myrtle Beach, SC: Myrtle Beach International" +OKC,MQ,Envoy Air,1,"Oklahoma City, OK: Will Rogers World" +OMA,MQ,Envoy Air,1,"Omaha, NE: Eppley Airfield" +ORD,MQ,Envoy Air,1,"Chicago, IL: Chicago O'Hare International" +ORF,MQ,Envoy Air,1,"Norfolk, VA: Norfolk International" +PHX,MQ,Envoy Air,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIA,MQ,Envoy Air,1,"Peoria, IL: General Downing - Peoria International" +PIT,MQ,Envoy Air,1,"Pittsburgh, PA: Pittsburgh International" +PNS,MQ,Envoy Air,1,"Pensacola, FL: Pensacola International" +PSP,MQ,Envoy Air,1,"Palm Springs, CA: Palm Springs International" +PVD,MQ,Envoy Air,1,"Providence, RI: Rhode Island Tf Green International" +RAP,MQ,Envoy Air,1,"Rapid City, SD: Rapid City Regional" +RDU,MQ,Envoy Air,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,MQ,Envoy Air,1,"Richmond, VA: Richmond International" +RNO,MQ,Envoy Air,1,"Reno, NV: Reno/Tahoe International" +ROC,MQ,Envoy Air,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RST,MQ,Envoy Air,1,"Rochester, MN: Rochester International" +SAF,MQ,Envoy Air,1,"Santa Fe, NM: Santa Fe Municipal" +SAV,MQ,Envoy Air,1,"Savannah, GA: Savannah/Hilton Head International" +SBA,MQ,Envoy Air,1,"Santa Barbara, CA: Santa Barbara Municipal" +SBP,MQ,Envoy Air,1,"San Luis Obispo, CA: San Luis County Regional" +SDF,MQ,Envoy Air,1,"Louisville, KY: Louisville Muhammad Ali International" +SGF,MQ,Envoy Air,1,"Springfield, MO: Springfield-Branson National" +SHV,MQ,Envoy Air,1,"Shreveport, LA: Shreveport Regional" +SJT,MQ,Envoy Air,1,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,MQ,Envoy Air,1,"Salt Lake City, UT: Salt Lake City International" +SRQ,MQ,Envoy Air,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,MQ,Envoy Air,1,"St. Louis, MO: St Louis Lambert International" +STS,MQ,Envoy Air,1,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SYR,MQ,Envoy Air,1,"Syracuse, NY: Syracuse Hancock International" +TLH,MQ,Envoy Air,1,"Tallahassee, FL: Tallahassee International" +TPA,MQ,Envoy Air,1,"Tampa, FL: Tampa International" +TRI,MQ,Envoy Air,1,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,MQ,Envoy Air,1,"Tulsa, OK: Tulsa International" +TUS,MQ,Envoy Air,1,"Tucson, AZ: Tucson International" +TVC,MQ,Envoy Air,1,"Traverse City, MI: Cherry Capital" +TYS,MQ,Envoy Air,1,"Knoxville, TN: McGhee Tyson" +VPS,MQ,Envoy Air,1,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,MQ,Envoy Air,1,"Fayetteville, AR: Northwest Arkansas National" +ABQ,NK,Spirit Air Lines,1,"Albuquerque, NM: Albuquerque International Sunport" +ACY,NK,Spirit Air Lines,1,"Atlantic City, NJ: Atlantic City International" +ATL,NK,Spirit Air Lines,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,NK,Spirit Air Lines,1,"Austin, TX: Austin - Bergstrom International" +BDL,NK,Spirit Air Lines,1,"Hartford, CT: Bradley International" +BNA,NK,Spirit Air Lines,1,"Nashville, TN: Nashville International" +BOI,NK,Spirit Air Lines,1,"Boise, ID: Boise Air Terminal" +BOS,NK,Spirit Air Lines,1,"Boston, MA: Logan International" +BQN,NK,Spirit Air Lines,1,"Aguadilla, PR: Rafael Hernandez" +BUR,NK,Spirit Air Lines,1,"Burbank, CA: Bob Hope" +BWI,NK,Spirit Air Lines,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CLE,NK,Spirit Air Lines,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,NK,Spirit Air Lines,1,"Charlotte, NC: Charlotte Douglas International" +CMH,NK,Spirit Air Lines,1,"Columbus, OH: John Glenn Columbus International" +CRW,NK,Spirit Air Lines,1,"Charleston/Dunbar, WV: West Virginia International Yeager" +DEN,NK,Spirit Air Lines,1,"Denver, CO: Denver International" +DFW,NK,Spirit Air Lines,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DTW,NK,Spirit Air Lines,1,"Detroit, MI: Detroit Metro Wayne County" +EWR,NK,Spirit Air Lines,1,"Newark, NJ: Newark Liberty International" +FLL,NK,Spirit Air Lines,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +IAH,NK,Spirit Air Lines,1,"Houston, TX: George Bush Intercontinental/Houston" +IND,NK,Spirit Air Lines,1,"Indianapolis, IN: Indianapolis International" +LAS,NK,Spirit Air Lines,1,"Las Vegas, NV: Harry Reid International" +LAX,NK,Spirit Air Lines,1,"Los Angeles, CA: Los Angeles International" +LBE,NK,Spirit Air Lines,1,"Latrobe, PA: Arnold Palmer Regional" +LGA,NK,Spirit Air Lines,1,"New York, NY: LaGuardia" +MCI,NK,Spirit Air Lines,1,"Kansas City, MO: Kansas City International" +MCO,NK,Spirit Air Lines,1,"Orlando, FL: Orlando International" +MEM,NK,Spirit Air Lines,1,"Memphis, TN: Memphis International" +MHT,NK,Spirit Air Lines,1,"Manchester, NH: Manchester Boston Regional" +MIA,NK,Spirit Air Lines,1,"Miami, FL: Miami International" +MKE,NK,Spirit Air Lines,1,"Milwaukee, WI: General Mitchell International" +MSP,NK,Spirit Air Lines,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,NK,Spirit Air Lines,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,NK,Spirit Air Lines,1,"Myrtle Beach, SC: Myrtle Beach International" +OAK,NK,Spirit Air Lines,1,"Oakland, CA: Metro Oakland International" +ORD,NK,Spirit Air Lines,1,"Chicago, IL: Chicago O'Hare International" +PBI,NK,Spirit Air Lines,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,NK,Spirit Air Lines,1,"Portland, OR: Portland International" +PHL,NK,Spirit Air Lines,1,"Philadelphia, PA: Philadelphia International" +PHX,NK,Spirit Air Lines,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,NK,Spirit Air Lines,1,"Pittsburgh, PA: Pittsburgh International" +PNS,NK,Spirit Air Lines,1,"Pensacola, FL: Pensacola International" +PSE,NK,Spirit Air Lines,1,"Ponce, PR: Mercedita" +RDU,NK,Spirit Air Lines,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,NK,Spirit Air Lines,1,"Richmond, VA: Richmond International" +RNO,NK,Spirit Air Lines,1,"Reno, NV: Reno/Tahoe International" +ROC,NK,Spirit Air Lines,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,NK,Spirit Air Lines,1,"Fort Myers, FL: Southwest Florida International" +SAN,NK,Spirit Air Lines,1,"San Diego, CA: San Diego International" +SAT,NK,Spirit Air Lines,1,"San Antonio, TX: San Antonio International" +SDF,NK,Spirit Air Lines,1,"Louisville, KY: Louisville Muhammad Ali International" +SEA,NK,Spirit Air Lines,1,"Seattle, WA: Seattle/Tacoma International" +SJU,NK,Spirit Air Lines,1,"San Juan, PR: Luis Munoz Marin International" +SLC,NK,Spirit Air Lines,1,"Salt Lake City, UT: Salt Lake City International" +SMF,NK,Spirit Air Lines,1,"Sacramento, CA: Sacramento International" +SNA,NK,Spirit Air Lines,1,"Santa Ana, CA: John Wayne Airport-Orange County" +STL,NK,Spirit Air Lines,1,"St. Louis, MO: St Louis Lambert International" +STT,NK,Spirit Air Lines,1,"Charlotte Amalie, VI: Cyril E King" +STX,NK,Spirit Air Lines,1,"Christiansted, VI: Henry E. Rohlsen" +TPA,NK,Spirit Air Lines,1,"Tampa, FL: Tampa International" +ABE,OH,PSA Airlines Inc.,1,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +AGS,OH,PSA Airlines Inc.,1,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OH,PSA Airlines Inc.,1,"Albany, NY: Albany International" +ATL,OH,PSA Airlines Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AVL,OH,PSA Airlines Inc.,1,"Asheville, NC: Asheville Regional" +AVP,OH,PSA Airlines Inc.,1,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BDL,OH,PSA Airlines Inc.,1,"Hartford, CT: Bradley International" +BGR,OH,PSA Airlines Inc.,1,"Bangor, ME: Bangor International" +BHM,OH,PSA Airlines Inc.,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,OH,PSA Airlines Inc.,1,"Nashville, TN: Nashville International" +BTR,OH,PSA Airlines Inc.,1,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OH,PSA Airlines Inc.,1,"Burlington, VT: Burlington International" +BUF,OH,PSA Airlines Inc.,1,"Buffalo, NY: Buffalo Niagara International" +CAE,OH,PSA Airlines Inc.,1,"Columbia, SC: Columbia Metropolitan" +CAK,OH,PSA Airlines Inc.,1,"Akron, OH: Akron-Canton Regional" +CHA,OH,PSA Airlines Inc.,1,"Chattanooga, TN: Lovell Field" +CHS,OH,PSA Airlines Inc.,1,"Charleston, SC: Charleston AFB/International" +CLE,OH,PSA Airlines Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,OH,PSA Airlines Inc.,1,"Charlotte, NC: Charlotte Douglas International" +CMH,OH,PSA Airlines Inc.,1,"Columbus, OH: John Glenn Columbus International" +CRW,OH,PSA Airlines Inc.,1,"Charleston/Dunbar, WV: West Virginia International Yeager" +CVG,OH,PSA Airlines Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAB,OH,PSA Airlines Inc.,1,"Daytona Beach, FL: Daytona Beach International" +DAY,OH,PSA Airlines Inc.,1,"Dayton, OH: James M Cox/Dayton International" +DCA,OH,PSA Airlines Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DSM,OH,PSA Airlines Inc.,1,"Des Moines, IA: Des Moines International" +DTW,OH,PSA Airlines Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +ECP,OH,PSA Airlines Inc.,1,"Panama City, FL: Northwest Florida Beaches International" +FAY,OH,PSA Airlines Inc.,1,"Fayetteville, NC: Fayetteville Regional/Grannis Field" +GNV,OH,PSA Airlines Inc.,1,"Gainesville, FL: Gainesville Regional" +GPT,OH,PSA Airlines Inc.,1,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRR,OH,PSA Airlines Inc.,1,"Grand Rapids, MI: Gerald R. Ford International" +GSO,OH,PSA Airlines Inc.,1,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,OH,PSA Airlines Inc.,1,"Greer, SC: Greenville-Spartanburg International" +HPN,OH,PSA Airlines Inc.,1,"White Plains, NY: Westchester County" +HSV,OH,PSA Airlines Inc.,1,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HTS,OH,PSA Airlines Inc.,1,"Ashland, WV: Tri-State/Milton J. Ferguson Field" +IAD,OH,PSA Airlines Inc.,1,"Washington, DC: Washington Dulles International" +ILM,OH,PSA Airlines Inc.,1,"Wilmington, NC: Wilmington International" +IND,OH,PSA Airlines Inc.,1,"Indianapolis, IN: Indianapolis International" +JAN,OH,PSA Airlines Inc.,1,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,OH,PSA Airlines Inc.,1,"Jacksonville, FL: Jacksonville International" +LAN,OH,PSA Airlines Inc.,1,"Lansing, MI: Capital Region International" +LEX,OH,PSA Airlines Inc.,1,"Lexington, KY: Blue Grass" +LFT,OH,PSA Airlines Inc.,1,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LIT,OH,PSA Airlines Inc.,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,OH,PSA Airlines Inc.,1,"Kansas City, MO: Kansas City International" +MDT,OH,PSA Airlines Inc.,1,"Harrisburg, PA: Harrisburg International" +MEM,OH,PSA Airlines Inc.,1,"Memphis, TN: Memphis International" +MGM,OH,PSA Airlines Inc.,1,"Montgomery, AL: Montgomery Regional" +MHT,OH,PSA Airlines Inc.,1,"Manchester, NH: Manchester Boston Regional" +MKE,OH,PSA Airlines Inc.,1,"Milwaukee, WI: General Mitchell International" +MLB,OH,PSA Airlines Inc.,1,"Melbourne, FL: Melbourne Orlando International" +MSN,OH,PSA Airlines Inc.,1,"Madison, WI: Dane County Regional-Truax Field" +MSP,OH,PSA Airlines Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OH,PSA Airlines Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,OH,PSA Airlines Inc.,1,"Myrtle Beach, SC: Myrtle Beach International" +OKC,OH,PSA Airlines Inc.,1,"Oklahoma City, OK: Will Rogers World" +ORF,OH,PSA Airlines Inc.,1,"Norfolk, VA: Norfolk International" +PGV,OH,PSA Airlines Inc.,1,"Greenville, NC: Pitt Greenville" +PHL,OH,PSA Airlines Inc.,1,"Philadelphia, PA: Philadelphia International" +PIA,OH,PSA Airlines Inc.,1,"Peoria, IL: General Downing - Peoria International" +PIT,OH,PSA Airlines Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PNS,OH,PSA Airlines Inc.,1,"Pensacola, FL: Pensacola International" +PVD,OH,PSA Airlines Inc.,1,"Providence, RI: Rhode Island Tf Green International" +PWM,OH,PSA Airlines Inc.,1,"Portland, ME: Portland International Jetport" +RDU,OH,PSA Airlines Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,OH,PSA Airlines Inc.,1,"Richmond, VA: Richmond International" +ROC,OH,PSA Airlines Inc.,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +SAV,OH,PSA Airlines Inc.,1,"Savannah, GA: Savannah/Hilton Head International" +SBN,OH,PSA Airlines Inc.,1,"South Bend, IN: South Bend International" +SDF,OH,PSA Airlines Inc.,1,"Louisville, KY: Louisville Muhammad Ali International" +SHV,OH,PSA Airlines Inc.,1,"Shreveport, LA: Shreveport Regional" +SRQ,OH,PSA Airlines Inc.,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OH,PSA Airlines Inc.,1,"St. Louis, MO: St Louis Lambert International" +SYR,OH,PSA Airlines Inc.,1,"Syracuse, NY: Syracuse Hancock International" +TLH,OH,PSA Airlines Inc.,1,"Tallahassee, FL: Tallahassee International" +TRI,OH,PSA Airlines Inc.,1,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OH,PSA Airlines Inc.,1,"Tulsa, OK: Tulsa International" +TYS,OH,PSA Airlines Inc.,1,"Knoxville, TN: McGhee Tyson" +VPS,OH,PSA Airlines Inc.,1,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +XNA,OH,PSA Airlines Inc.,1,"Fayetteville, AR: Northwest Arkansas National" +ABE,OO,SkyWest Airlines Inc.,1,"Allentown/Bethlehem/Easton, PA: Lehigh Valley International" +ABQ,OO,SkyWest Airlines Inc.,1,"Albuquerque, NM: Albuquerque International Sunport" +ABR,OO,SkyWest Airlines Inc.,1,"Aberdeen, SD: Aberdeen Regional" +ACT,OO,SkyWest Airlines Inc.,1,"Waco, TX: Waco Regional" +ACV,OO,SkyWest Airlines Inc.,1,"Arcata/Eureka, CA: California Redwood Coast Humboldt County" +AEX,OO,SkyWest Airlines Inc.,1,"Alexandria, LA: Alexandria International" +AGS,OO,SkyWest Airlines Inc.,1,"Augusta, GA: Augusta Regional at Bush Field" +ALB,OO,SkyWest Airlines Inc.,1,"Albany, NY: Albany International" +AMA,OO,SkyWest Airlines Inc.,1,"Amarillo, TX: Rick Husband Amarillo International" +APN,OO,SkyWest Airlines Inc.,1,"Alpena, MI: Alpena County Regional" +ASE,OO,SkyWest Airlines Inc.,1,"Aspen, CO: Aspen Pitkin County Sardy Field" +ATL,OO,SkyWest Airlines Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +ATW,OO,SkyWest Airlines Inc.,1,"Appleton, WI: Appleton International" +AUS,OO,SkyWest Airlines Inc.,1,"Austin, TX: Austin - Bergstrom International" +AVL,OO,SkyWest Airlines Inc.,1,"Asheville, NC: Asheville Regional" +AVP,OO,SkyWest Airlines Inc.,1,"Scranton/Wilkes-Barre, PA: Wilkes Barre Scranton International" +BFF,OO,SkyWest Airlines Inc.,1,"Scottsbluff, NE: Western Neb. Regional/William B. Heilig Field" +BFL,OO,SkyWest Airlines Inc.,1,"Bakersfield, CA: Meadows Field" +BHM,OO,SkyWest Airlines Inc.,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BIH,OO,SkyWest Airlines Inc.,1,"Bishop, CA: Bishop Airport" +BIL,OO,SkyWest Airlines Inc.,1,"Billings, MT: Billings Logan International" +BIS,OO,SkyWest Airlines Inc.,1,"Bismarck/Mandan, ND: Bismarck Municipal" +BJI,OO,SkyWest Airlines Inc.,1,"Bemidji, MN: Bemidji Regional" +BMI,OO,SkyWest Airlines Inc.,1,"Bloomington/Normal, IL: Central Il Regional Airport at Bloomington" +BNA,OO,SkyWest Airlines Inc.,1,"Nashville, TN: Nashville International" +BOI,OO,SkyWest Airlines Inc.,1,"Boise, ID: Boise Air Terminal" +BOS,OO,SkyWest Airlines Inc.,1,"Boston, MA: Logan International" +BPT,OO,SkyWest Airlines Inc.,1,"Beaumont/Port Arthur, TX: Jack Brooks Regional" +BRD,OO,SkyWest Airlines Inc.,1,"Brainerd, MN: Brainerd Lakes Regional" +BRO,OO,SkyWest Airlines Inc.,1,"Brownsville, TX: Brownsville South Padre Island International" +BTM,OO,SkyWest Airlines Inc.,1,"Butte, MT: Bert Mooney" +BTR,OO,SkyWest Airlines Inc.,1,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,OO,SkyWest Airlines Inc.,1,"Burlington, VT: Burlington International" +BUR,OO,SkyWest Airlines Inc.,1,"Burbank, CA: Bob Hope" +BZN,OO,SkyWest Airlines Inc.,1,"Bozeman, MT: Bozeman Yellowstone International" +CAK,OO,SkyWest Airlines Inc.,1,"Akron, OH: Akron-Canton Regional" +CDC,OO,SkyWest Airlines Inc.,1,"Cedar City, UT: Cedar City Regional" +CHA,OO,SkyWest Airlines Inc.,1,"Chattanooga, TN: Lovell Field" +CID,OO,SkyWest Airlines Inc.,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CIU,OO,SkyWest Airlines Inc.,1,"Sault Ste. Marie, MI: Chippewa County International" +CLE,OO,SkyWest Airlines Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLL,OO,SkyWest Airlines Inc.,1,"College Station/Bryan, TX: Easterwood Field" +CMH,OO,SkyWest Airlines Inc.,1,"Columbus, OH: John Glenn Columbus International" +CMX,OO,SkyWest Airlines Inc.,1,"Hancock/Houghton, MI: Houghton County Memorial" +CNY,OO,SkyWest Airlines Inc.,1,"Moab, UT: Canyonlands Regional" +COD,OO,SkyWest Airlines Inc.,1,"Cody, WY: Yellowstone Regional" +COS,OO,SkyWest Airlines Inc.,1,"Colorado Springs, CO: City of Colorado Springs Municipal" +CPR,OO,SkyWest Airlines Inc.,1,"Casper, WY: Casper/Natrona County International" +CRP,OO,SkyWest Airlines Inc.,1,"Corpus Christi, TX: Corpus Christi International" +CRW,OO,SkyWest Airlines Inc.,1,"Charleston/Dunbar, WV: West Virginia International Yeager" +CSG,OO,SkyWest Airlines Inc.,1,"Columbus, GA: Columbus Airport" +CVG,OO,SkyWest Airlines Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +CYS,OO,SkyWest Airlines Inc.,1,"Cheyenne, WY: Cheyenne Regional/Jerry Olson Field" +DCA,OO,SkyWest Airlines Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DDC,OO,SkyWest Airlines Inc.,1,"Dodge City, KS: Dodge City Regional" +DEC,OO,SkyWest Airlines Inc.,1,"Decatur, IL: Decatur Airport" +DEN,OO,SkyWest Airlines Inc.,1,"Denver, CO: Denver International" +DFW,OO,SkyWest Airlines Inc.,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DIK,OO,SkyWest Airlines Inc.,1,"Dickinson, ND: Dickinson - Theodore Roosevelt Regional" +DLH,OO,SkyWest Airlines Inc.,1,"Duluth, MN: Duluth International" +DRO,OO,SkyWest Airlines Inc.,1,"Durango, CO: Durango La Plata County" +DRT,OO,SkyWest Airlines Inc.,1,"Del Rio, TX: Del Rio International" +DSM,OO,SkyWest Airlines Inc.,1,"Des Moines, IA: Des Moines International" +DTW,OO,SkyWest Airlines Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +DVL,OO,SkyWest Airlines Inc.,1,"Devils Lake, ND: Devils Lake Regional" +EGE,OO,SkyWest Airlines Inc.,1,"Eagle, CO: Eagle County Regional" +EKO,OO,SkyWest Airlines Inc.,1,"Elko, NV: Elko Regional" +ELM,OO,SkyWest Airlines Inc.,1,"Elmira/Corning, NY: Elmira/Corning Regional" +ELP,OO,SkyWest Airlines Inc.,1,"El Paso, TX: El Paso International" +ESC,OO,SkyWest Airlines Inc.,1,"Escanaba, MI: Delta County" +EUG,OO,SkyWest Airlines Inc.,1,"Eugene, OR: Mahlon Sweet Field" +EWR,OO,SkyWest Airlines Inc.,1,"Newark, NJ: Newark Liberty International" +FAR,OO,SkyWest Airlines Inc.,1,"Fargo, ND: Hector International" +FAT,OO,SkyWest Airlines Inc.,1,"Fresno, CA: Fresno Yosemite International" +FCA,OO,SkyWest Airlines Inc.,1,"Kalispell, MT: Glacier Park International" +FLG,OO,SkyWest Airlines Inc.,1,"Flagstaff, AZ: Flagstaff Pulliam" +FOD,OO,SkyWest Airlines Inc.,1,"Fort Dodge, IA: Fort Dodge Regional" +FSD,OO,SkyWest Airlines Inc.,1,"Sioux Falls, SD: Joe Foss Field" +FSM,OO,SkyWest Airlines Inc.,1,"Fort Smith, AR: Fort Smith Regional" +FWA,OO,SkyWest Airlines Inc.,1,"Fort Wayne, IN: Fort Wayne International" +GCC,OO,SkyWest Airlines Inc.,1,"Gillette, WY: Northeast Wyoming Regional" +GCK,OO,SkyWest Airlines Inc.,1,"Garden City, KS: Garden City Regional" +GEG,OO,SkyWest Airlines Inc.,1,"Spokane, WA: Spokane International" +GFK,OO,SkyWest Airlines Inc.,1,"Grand Forks, ND: Grand Forks International" +GGG,OO,SkyWest Airlines Inc.,1,"Longview, TX: East Texas Regional" +GJT,OO,SkyWest Airlines Inc.,1,"Grand Junction, CO: Grand Junction Regional" +GNV,OO,SkyWest Airlines Inc.,1,"Gainesville, FL: Gainesville Regional" +GPT,OO,SkyWest Airlines Inc.,1,"Gulfport/Biloxi, MS: Gulfport-Biloxi International" +GRB,OO,SkyWest Airlines Inc.,1,"Green Bay, WI: Green Bay Austin Straubel International" +GRI,OO,SkyWest Airlines Inc.,1,"Grand Island, NE: Central Nebraska Regional" +GRK,OO,SkyWest Airlines Inc.,1,"Killeen, TX: Robert Gray AAF" +GRR,OO,SkyWest Airlines Inc.,1,"Grand Rapids, MI: Gerald R. Ford International" +GSP,OO,SkyWest Airlines Inc.,1,"Greer, SC: Greenville-Spartanburg International" +GTF,OO,SkyWest Airlines Inc.,1,"Great Falls, MT: Great Falls International" +GUC,OO,SkyWest Airlines Inc.,1,"Gunnison, CO: Gunnison-Crested Butte Regional" +HDN,OO,SkyWest Airlines Inc.,1,"Hayden, CO: Yampa Valley" +HIB,OO,SkyWest Airlines Inc.,1,"Hibbing, MN: Range Regional" +HLN,OO,SkyWest Airlines Inc.,1,"Helena, MT: Helena Regional" +HOU,OO,SkyWest Airlines Inc.,1,"Houston, TX: William P Hobby" +HPN,OO,SkyWest Airlines Inc.,1,"White Plains, NY: Westchester County" +HSV,OO,SkyWest Airlines Inc.,1,"Huntsville, AL: Huntsville International-Carl T Jones Field" +HYS,OO,SkyWest Airlines Inc.,1,"Hays, KS: Hays Regional" +IAD,OO,SkyWest Airlines Inc.,1,"Washington, DC: Washington Dulles International" +IAH,OO,SkyWest Airlines Inc.,1,"Houston, TX: George Bush Intercontinental/Houston" +ICT,OO,SkyWest Airlines Inc.,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +IDA,OO,SkyWest Airlines Inc.,1,"Idaho Falls, ID: Idaho Falls Regional" +IMT,OO,SkyWest Airlines Inc.,1,"Iron Mountain/Kingsfd, MI: Ford" +IND,OO,SkyWest Airlines Inc.,1,"Indianapolis, IN: Indianapolis International" +INL,OO,SkyWest Airlines Inc.,1,"International Falls, MN: Falls International Einarson Field" +JAC,OO,SkyWest Airlines Inc.,1,"Jackson, WY: Jackson Hole" +JAX,OO,SkyWest Airlines Inc.,1,"Jacksonville, FL: Jacksonville International" +JFK,OO,SkyWest Airlines Inc.,1,"New York, NY: John F. Kennedy International" +JLN,OO,SkyWest Airlines Inc.,1,"Joplin, MO: Joplin Regional" +JMS,OO,SkyWest Airlines Inc.,1,"Jamestown, ND: Jamestown Regional" +JST,OO,SkyWest Airlines Inc.,1,"Johnstown, PA: John Murtha Johnstown-Cambria County" +LAR,OO,SkyWest Airlines Inc.,1,"Laramie, WY: Laramie Regional" +LAS,OO,SkyWest Airlines Inc.,1,"Las Vegas, NV: Harry Reid International" +LAW,OO,SkyWest Airlines Inc.,1,"Lawton/Fort Sill, OK: Lawton-Fort Sill Regional" +LAX,OO,SkyWest Airlines Inc.,1,"Los Angeles, CA: Los Angeles International" +LBB,OO,SkyWest Airlines Inc.,1,"Lubbock, TX: Lubbock Preston Smith International" +LBF,OO,SkyWest Airlines Inc.,1,"North Platte, NE: North Platte Regional Airport Lee Bird Field" +LBL,OO,SkyWest Airlines Inc.,1,"Liberal, KS: Liberal Mid-America Regional" +LCH,OO,SkyWest Airlines Inc.,1,"Lake Charles, LA: Lake Charles Regional" +LFT,OO,SkyWest Airlines Inc.,1,"Lafayette, LA: Lafayette Regional Paul Fournet Field" +LGA,OO,SkyWest Airlines Inc.,1,"New York, NY: LaGuardia" +LGB,OO,SkyWest Airlines Inc.,1,"Long Beach, CA: Long Beach Airport" +LIT,OO,SkyWest Airlines Inc.,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +LNK,OO,SkyWest Airlines Inc.,1,"Lincoln, NE: Lincoln Airport" +LRD,OO,SkyWest Airlines Inc.,1,"Laredo, TX: Laredo International" +LSE,OO,SkyWest Airlines Inc.,1,"La Crosse, WI: La Crosse Regional" +LWS,OO,SkyWest Airlines Inc.,1,"Lewiston, ID: Lewiston Nez Perce County" +MAF,OO,SkyWest Airlines Inc.,1,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,OO,SkyWest Airlines Inc.,1,"Kansas City, MO: Kansas City International" +MCW,OO,SkyWest Airlines Inc.,1,"Mason City, IA: Mason City Municipal" +MDT,OO,SkyWest Airlines Inc.,1,"Harrisburg, PA: Harrisburg International" +MEI,OO,SkyWest Airlines Inc.,1,"Meridian, MS: Key Field" +MEM,OO,SkyWest Airlines Inc.,1,"Memphis, TN: Memphis International" +MFR,OO,SkyWest Airlines Inc.,1,"Medford, OR: Rogue Valley International - Medford" +MKE,OO,SkyWest Airlines Inc.,1,"Milwaukee, WI: General Mitchell International" +MLI,OO,SkyWest Airlines Inc.,1,"Moline, IL: Quad Cities International" +MLU,OO,SkyWest Airlines Inc.,1,"Monroe, LA: Monroe Regional" +MOB,OO,SkyWest Airlines Inc.,1,"Mobile, AL: Mobile Regional" +MOT,OO,SkyWest Airlines Inc.,1,"Minot, ND: Minot International" +MRY,OO,SkyWest Airlines Inc.,1,"Monterey, CA: Monterey Regional" +MSN,OO,SkyWest Airlines Inc.,1,"Madison, WI: Dane County Regional-Truax Field" +MSO,OO,SkyWest Airlines Inc.,1,"Missoula, MT: Missoula Montana" +MSP,OO,SkyWest Airlines Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,OO,SkyWest Airlines Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,OO,SkyWest Airlines Inc.,1,"Montrose/Delta, CO: Montrose Regional" +OAJ,OO,SkyWest Airlines Inc.,1,"Jacksonville/Camp Lejeune, NC: Albert J Ellis" +OAK,OO,SkyWest Airlines Inc.,1,"Oakland, CA: Metro Oakland International" +OKC,OO,SkyWest Airlines Inc.,1,"Oklahoma City, OK: Will Rogers World" +OMA,OO,SkyWest Airlines Inc.,1,"Omaha, NE: Eppley Airfield" +ONT,OO,SkyWest Airlines Inc.,1,"Ontario, CA: Ontario International" +ORD,OO,SkyWest Airlines Inc.,1,"Chicago, IL: Chicago O'Hare International" +OTH,OO,SkyWest Airlines Inc.,1,"North Bend/Coos Bay, OR: Southwest Oregon Regional" +PBI,OO,SkyWest Airlines Inc.,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,OO,SkyWest Airlines Inc.,1,"Portland, OR: Portland International" +PHL,OO,SkyWest Airlines Inc.,1,"Philadelphia, PA: Philadelphia International" +PHX,OO,SkyWest Airlines Inc.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIB,OO,SkyWest Airlines Inc.,1,"Hattiesburg/Laurel, MS: Hattiesburg-Laurel Regional" +PIH,OO,SkyWest Airlines Inc.,1,"Pocatello, ID: Pocatello Regional" +PIT,OO,SkyWest Airlines Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PLN,OO,SkyWest Airlines Inc.,1,"Pellston, MI: Pellston Regional Airport of Emmet County" +PNS,OO,SkyWest Airlines Inc.,1,"Pensacola, FL: Pensacola International" +PRC,OO,SkyWest Airlines Inc.,1,"Prescott, AZ: Prescott Regional Ernest A Love Field" +PSC,OO,SkyWest Airlines Inc.,1,"Pasco/Kennewick/Richland, WA: Tri Cities" +PSP,OO,SkyWest Airlines Inc.,1,"Palm Springs, CA: Palm Springs International" +PUB,OO,SkyWest Airlines Inc.,1,"Pueblo, CO: Pueblo Memorial" +PVD,OO,SkyWest Airlines Inc.,1,"Providence, RI: Rhode Island Tf Green International" +PWM,OO,SkyWest Airlines Inc.,1,"Portland, ME: Portland International Jetport" +RAP,OO,SkyWest Airlines Inc.,1,"Rapid City, SD: Rapid City Regional" +RDD,OO,SkyWest Airlines Inc.,1,"Redding, CA: Redding Municipal" +RDM,OO,SkyWest Airlines Inc.,1,"Bend/Redmond, OR: Roberts Field" +RDU,OO,SkyWest Airlines Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RHI,OO,SkyWest Airlines Inc.,1,"Rhinelander, WI: Rhinelander/Oneida County" +RIC,OO,SkyWest Airlines Inc.,1,"Richmond, VA: Richmond International" +RIW,OO,SkyWest Airlines Inc.,1,"Riverton/Lander, WY: Central Wyoming Regional" +RKS,OO,SkyWest Airlines Inc.,1,"Rock Springs, WY: Southwest Wyoming Regional" +RNO,OO,SkyWest Airlines Inc.,1,"Reno, NV: Reno/Tahoe International" +ROA,OO,SkyWest Airlines Inc.,1,"Roanoke, VA: Roanoke Blacksburg Regional" +ROW,OO,SkyWest Airlines Inc.,1,"Roswell, NM: Roswell Air Center" +RST,OO,SkyWest Airlines Inc.,1,"Rochester, MN: Rochester International" +SAF,OO,SkyWest Airlines Inc.,1,"Santa Fe, NM: Santa Fe Municipal" +SAN,OO,SkyWest Airlines Inc.,1,"San Diego, CA: San Diego International" +SAT,OO,SkyWest Airlines Inc.,1,"San Antonio, TX: San Antonio International" +SAV,OO,SkyWest Airlines Inc.,1,"Savannah, GA: Savannah/Hilton Head International" +SBA,OO,SkyWest Airlines Inc.,1,"Santa Barbara, CA: Santa Barbara Municipal" +SBN,OO,SkyWest Airlines Inc.,1,"South Bend, IN: South Bend International" +SBP,OO,SkyWest Airlines Inc.,1,"San Luis Obispo, CA: San Luis County Regional" +SDF,OO,SkyWest Airlines Inc.,1,"Louisville, KY: Louisville Muhammad Ali International" +SEA,OO,SkyWest Airlines Inc.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,OO,SkyWest Airlines Inc.,1,"San Francisco, CA: San Francisco International" +SGF,OO,SkyWest Airlines Inc.,1,"Springfield, MO: Springfield-Branson National" +SGU,OO,SkyWest Airlines Inc.,1,"St. George, UT: St George Regional" +SHR,OO,SkyWest Airlines Inc.,1,"Sheridan, WY: Sheridan County" +SHV,OO,SkyWest Airlines Inc.,1,"Shreveport, LA: Shreveport Regional" +SJC,OO,SkyWest Airlines Inc.,1,"San Jose, CA: Norman Y. Mineta San Jose International" +SJT,OO,SkyWest Airlines Inc.,1,"San Angelo, TX: San Angelo Regional/Mathis Field" +SLC,OO,SkyWest Airlines Inc.,1,"Salt Lake City, UT: Salt Lake City International" +SLN,OO,SkyWest Airlines Inc.,1,"Salina, KS: Salina Regional" +SMF,OO,SkyWest Airlines Inc.,1,"Sacramento, CA: Sacramento International" +SNA,OO,SkyWest Airlines Inc.,1,"Santa Ana, CA: John Wayne Airport-Orange County" +SPI,OO,SkyWest Airlines Inc.,1,"Springfield, IL: Abraham Lincoln Capital" +SPS,OO,SkyWest Airlines Inc.,1,"Wichita Falls, TX: Sheppard AFB/Wichita Falls Municipal" +SRQ,OO,SkyWest Airlines Inc.,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,OO,SkyWest Airlines Inc.,1,"St. Louis, MO: St Louis Lambert International" +STS,OO,SkyWest Airlines Inc.,1,"Santa Rosa, CA: Charles M. Schulz - Sonoma County" +SUN,OO,SkyWest Airlines Inc.,1,"Sun Valley/Hailey/Ketchum, ID: Friedman Memorial" +SUX,OO,SkyWest Airlines Inc.,1,"Sioux City, IA: Sioux Gateway Brig Gen Bud Day Field" +SWO,OO,SkyWest Airlines Inc.,1,"Stillwater, OK: Stillwater Regional" +SYR,OO,SkyWest Airlines Inc.,1,"Syracuse, NY: Syracuse Hancock International" +TRI,OO,SkyWest Airlines Inc.,1,"Bristol/Johnson City/Kingsport, TN: Tri Cities" +TUL,OO,SkyWest Airlines Inc.,1,"Tulsa, OK: Tulsa International" +TUS,OO,SkyWest Airlines Inc.,1,"Tucson, AZ: Tucson International" +TVC,OO,SkyWest Airlines Inc.,1,"Traverse City, MI: Cherry Capital" +TWF,OO,SkyWest Airlines Inc.,1,"Twin Falls, ID: Joslin Field - Magic Valley Regional" +TXK,OO,SkyWest Airlines Inc.,1,"Texarkana, AR: Texarkana Regional-Webb Field" +TYR,OO,SkyWest Airlines Inc.,1,"Tyler, TX: Tyler Pounds Regional" +TYS,OO,SkyWest Airlines Inc.,1,"Knoxville, TN: McGhee Tyson" +VCT,OO,SkyWest Airlines Inc.,1,"Victoria, TX: Victoria Regional" +VEL,OO,SkyWest Airlines Inc.,1,"Vernal, UT: Vernal Regional" +XNA,OO,SkyWest Airlines Inc.,1,"Fayetteville, AR: Northwest Arkansas National" +XWA,OO,SkyWest Airlines Inc.,1,"Williston, ND: Williston Basin International" +YUM,OO,SkyWest Airlines Inc.,1,"Yuma, AZ: Yuma MCAS/Yuma International" +ABQ,UA,United Air Lines Inc.,1,"Albuquerque, NM: Albuquerque International Sunport" +ALB,UA,United Air Lines Inc.,1,"Albany, NY: Albany International" +ANC,UA,United Air Lines Inc.,1,"Anchorage, AK: Ted Stevens Anchorage International" +ATL,UA,United Air Lines Inc.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,UA,United Air Lines Inc.,1,"Austin, TX: Austin - Bergstrom International" +BDL,UA,United Air Lines Inc.,1,"Hartford, CT: Bradley International" +BIL,UA,United Air Lines Inc.,1,"Billings, MT: Billings Logan International" +BNA,UA,United Air Lines Inc.,1,"Nashville, TN: Nashville International" +BOI,UA,United Air Lines Inc.,1,"Boise, ID: Boise Air Terminal" +BOS,UA,United Air Lines Inc.,1,"Boston, MA: Logan International" +BQN,UA,United Air Lines Inc.,1,"Aguadilla, PR: Rafael Hernandez" +BTR,UA,United Air Lines Inc.,1,"Baton Rouge, LA: Baton Rouge Metropolitan/Ryan Field" +BTV,UA,United Air Lines Inc.,1,"Burlington, VT: Burlington International" +BUF,UA,United Air Lines Inc.,1,"Buffalo, NY: Buffalo Niagara International" +BUR,UA,United Air Lines Inc.,1,"Burbank, CA: Bob Hope" +BWI,UA,United Air Lines Inc.,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,UA,United Air Lines Inc.,1,"Bozeman, MT: Bozeman Yellowstone International" +CHS,UA,United Air Lines Inc.,1,"Charleston, SC: Charleston AFB/International" +CID,UA,United Air Lines Inc.,1,"Cedar Rapids/Iowa City, IA: The Eastern Iowa" +CLE,UA,United Air Lines Inc.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,UA,United Air Lines Inc.,1,"Charlotte, NC: Charlotte Douglas International" +CMH,UA,United Air Lines Inc.,1,"Columbus, OH: John Glenn Columbus International" +COS,UA,United Air Lines Inc.,1,"Colorado Springs, CO: City of Colorado Springs Municipal" +CVG,UA,United Air Lines Inc.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DCA,UA,United Air Lines Inc.,1,"Washington, DC: Ronald Reagan Washington National" +DEN,UA,United Air Lines Inc.,1,"Denver, CO: Denver International" +DFW,UA,United Air Lines Inc.,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DSM,UA,United Air Lines Inc.,1,"Des Moines, IA: Des Moines International" +DTW,UA,United Air Lines Inc.,1,"Detroit, MI: Detroit Metro Wayne County" +EGE,UA,United Air Lines Inc.,1,"Eagle, CO: Eagle County Regional" +ELP,UA,United Air Lines Inc.,1,"El Paso, TX: El Paso International" +EUG,UA,United Air Lines Inc.,1,"Eugene, OR: Mahlon Sweet Field" +EWR,UA,United Air Lines Inc.,1,"Newark, NJ: Newark Liberty International" +FAT,UA,United Air Lines Inc.,1,"Fresno, CA: Fresno Yosemite International" +FCA,UA,United Air Lines Inc.,1,"Kalispell, MT: Glacier Park International" +FLL,UA,United Air Lines Inc.,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +FSD,UA,United Air Lines Inc.,1,"Sioux Falls, SD: Joe Foss Field" +GEG,UA,United Air Lines Inc.,1,"Spokane, WA: Spokane International" +GJT,UA,United Air Lines Inc.,1,"Grand Junction, CO: Grand Junction Regional" +GRR,UA,United Air Lines Inc.,1,"Grand Rapids, MI: Gerald R. Ford International" +GUM,UA,United Air Lines Inc.,1,"Guam, TT: Guam International" +HDN,UA,United Air Lines Inc.,1,"Hayden, CO: Yampa Valley" +HNL,UA,United Air Lines Inc.,1,"Honolulu, HI: Daniel K Inouye International" +IAD,UA,United Air Lines Inc.,1,"Washington, DC: Washington Dulles International" +IAH,UA,United Air Lines Inc.,1,"Houston, TX: George Bush Intercontinental/Houston" +ICT,UA,United Air Lines Inc.,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,UA,United Air Lines Inc.,1,"Indianapolis, IN: Indianapolis International" +ITO,UA,United Air Lines Inc.,1,"Hilo, HI: Hilo International" +JAC,UA,United Air Lines Inc.,1,"Jackson, WY: Jackson Hole" +JAX,UA,United Air Lines Inc.,1,"Jacksonville, FL: Jacksonville International" +KOA,UA,United Air Lines Inc.,1,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,UA,United Air Lines Inc.,1,"Las Vegas, NV: Harry Reid International" +LAX,UA,United Air Lines Inc.,1,"Los Angeles, CA: Los Angeles International" +LGA,UA,United Air Lines Inc.,1,"New York, NY: LaGuardia" +LIH,UA,United Air Lines Inc.,1,"Lihue, HI: Lihue Airport" +MAF,UA,United Air Lines Inc.,1,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,UA,United Air Lines Inc.,1,"Kansas City, MO: Kansas City International" +MCO,UA,United Air Lines Inc.,1,"Orlando, FL: Orlando International" +MDT,UA,United Air Lines Inc.,1,"Harrisburg, PA: Harrisburg International" +MEM,UA,United Air Lines Inc.,1,"Memphis, TN: Memphis International" +MFE,UA,United Air Lines Inc.,1,"Mission/McAllen/Edinburg, TX: McAllen Miller International" +MFR,UA,United Air Lines Inc.,1,"Medford, OR: Rogue Valley International - Medford" +MIA,UA,United Air Lines Inc.,1,"Miami, FL: Miami International" +MKE,UA,United Air Lines Inc.,1,"Milwaukee, WI: General Mitchell International" +MSN,UA,United Air Lines Inc.,1,"Madison, WI: Dane County Regional-Truax Field" +MSO,UA,United Air Lines Inc.,1,"Missoula, MT: Missoula Montana" +MSP,UA,United Air Lines Inc.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,UA,United Air Lines Inc.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,UA,United Air Lines Inc.,1,"Montrose/Delta, CO: Montrose Regional" +OGG,UA,United Air Lines Inc.,1,"Kahului, HI: Kahului Airport" +OKC,UA,United Air Lines Inc.,1,"Oklahoma City, OK: Will Rogers World" +OMA,UA,United Air Lines Inc.,1,"Omaha, NE: Eppley Airfield" +ONT,UA,United Air Lines Inc.,1,"Ontario, CA: Ontario International" +ORD,UA,United Air Lines Inc.,1,"Chicago, IL: Chicago O'Hare International" +ORF,UA,United Air Lines Inc.,1,"Norfolk, VA: Norfolk International" +PBI,UA,United Air Lines Inc.,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,UA,United Air Lines Inc.,1,"Portland, OR: Portland International" +PHL,UA,United Air Lines Inc.,1,"Philadelphia, PA: Philadelphia International" +PHX,UA,United Air Lines Inc.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,UA,United Air Lines Inc.,1,"Pittsburgh, PA: Pittsburgh International" +PNS,UA,United Air Lines Inc.,1,"Pensacola, FL: Pensacola International" +PSP,UA,United Air Lines Inc.,1,"Palm Springs, CA: Palm Springs International" +PWM,UA,United Air Lines Inc.,1,"Portland, ME: Portland International Jetport" +RAP,UA,United Air Lines Inc.,1,"Rapid City, SD: Rapid City Regional" +RDM,UA,United Air Lines Inc.,1,"Bend/Redmond, OR: Roberts Field" +RDU,UA,United Air Lines Inc.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,UA,United Air Lines Inc.,1,"Richmond, VA: Richmond International" +RNO,UA,United Air Lines Inc.,1,"Reno, NV: Reno/Tahoe International" +ROC,UA,United Air Lines Inc.,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,UA,United Air Lines Inc.,1,"Fort Myers, FL: Southwest Florida International" +SAN,UA,United Air Lines Inc.,1,"San Diego, CA: San Diego International" +SAT,UA,United Air Lines Inc.,1,"San Antonio, TX: San Antonio International" +SAV,UA,United Air Lines Inc.,1,"Savannah, GA: Savannah/Hilton Head International" +SBA,UA,United Air Lines Inc.,1,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,UA,United Air Lines Inc.,1,"Louisville, KY: Louisville Muhammad Ali International" +SEA,UA,United Air Lines Inc.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,UA,United Air Lines Inc.,1,"San Francisco, CA: San Francisco International" +SJC,UA,United Air Lines Inc.,1,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,UA,United Air Lines Inc.,1,"San Juan, PR: Luis Munoz Marin International" +SLC,UA,United Air Lines Inc.,1,"Salt Lake City, UT: Salt Lake City International" +SMF,UA,United Air Lines Inc.,1,"Sacramento, CA: Sacramento International" +SNA,UA,United Air Lines Inc.,1,"Santa Ana, CA: John Wayne Airport-Orange County" +SPN,UA,United Air Lines Inc.,1,"Saipan, TT: Francisco C. Ada Saipan International" +SRQ,UA,United Air Lines Inc.,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,UA,United Air Lines Inc.,1,"St. Louis, MO: St Louis Lambert International" +STT,UA,United Air Lines Inc.,1,"Charlotte Amalie, VI: Cyril E King" +SYR,UA,United Air Lines Inc.,1,"Syracuse, NY: Syracuse Hancock International" +TPA,UA,United Air Lines Inc.,1,"Tampa, FL: Tampa International" +TUL,UA,United Air Lines Inc.,1,"Tulsa, OK: Tulsa International" +TUS,UA,United Air Lines Inc.,1,"Tucson, AZ: Tucson International" +TVC,UA,United Air Lines Inc.,1,"Traverse City, MI: Cherry Capital" +ABQ,WN,Southwest Airlines Co.,1,"Albuquerque, NM: Albuquerque International Sunport" +ALB,WN,Southwest Airlines Co.,1,"Albany, NY: Albany International" +AMA,WN,Southwest Airlines Co.,1,"Amarillo, TX: Rick Husband Amarillo International" +ATL,WN,Southwest Airlines Co.,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,WN,Southwest Airlines Co.,1,"Austin, TX: Austin - Bergstrom International" +BDL,WN,Southwest Airlines Co.,1,"Hartford, CT: Bradley International" +BHM,WN,Southwest Airlines Co.,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BLI,WN,Southwest Airlines Co.,1,"Bellingham, WA: Bellingham International" +BNA,WN,Southwest Airlines Co.,1,"Nashville, TN: Nashville International" +BOI,WN,Southwest Airlines Co.,1,"Boise, ID: Boise Air Terminal" +BOS,WN,Southwest Airlines Co.,1,"Boston, MA: Logan International" +BUF,WN,Southwest Airlines Co.,1,"Buffalo, NY: Buffalo Niagara International" +BUR,WN,Southwest Airlines Co.,1,"Burbank, CA: Bob Hope" +BWI,WN,Southwest Airlines Co.,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +BZN,WN,Southwest Airlines Co.,1,"Bozeman, MT: Bozeman Yellowstone International" +CHS,WN,Southwest Airlines Co.,1,"Charleston, SC: Charleston AFB/International" +CLE,WN,Southwest Airlines Co.,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,WN,Southwest Airlines Co.,1,"Charlotte, NC: Charlotte Douglas International" +CMH,WN,Southwest Airlines Co.,1,"Columbus, OH: John Glenn Columbus International" +COS,WN,Southwest Airlines Co.,1,"Colorado Springs, CO: City of Colorado Springs Municipal" +CRP,WN,Southwest Airlines Co.,1,"Corpus Christi, TX: Corpus Christi International" +CVG,WN,Southwest Airlines Co.,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAL,WN,Southwest Airlines Co.,1,"Dallas, TX: Dallas Love Field" +DCA,WN,Southwest Airlines Co.,1,"Washington, DC: Ronald Reagan Washington National" +DEN,WN,Southwest Airlines Co.,1,"Denver, CO: Denver International" +DSM,WN,Southwest Airlines Co.,1,"Des Moines, IA: Des Moines International" +DTW,WN,Southwest Airlines Co.,1,"Detroit, MI: Detroit Metro Wayne County" +ECP,WN,Southwest Airlines Co.,1,"Panama City, FL: Northwest Florida Beaches International" +ELP,WN,Southwest Airlines Co.,1,"El Paso, TX: El Paso International" +EUG,WN,Southwest Airlines Co.,1,"Eugene, OR: Mahlon Sweet Field" +FAT,WN,Southwest Airlines Co.,1,"Fresno, CA: Fresno Yosemite International" +FLL,WN,Southwest Airlines Co.,1,"Fort Lauderdale, FL: Fort Lauderdale-Hollywood International" +GEG,WN,Southwest Airlines Co.,1,"Spokane, WA: Spokane International" +GRR,WN,Southwest Airlines Co.,1,"Grand Rapids, MI: Gerald R. Ford International" +GSP,WN,Southwest Airlines Co.,1,"Greer, SC: Greenville-Spartanburg International" +HDN,WN,Southwest Airlines Co.,1,"Hayden, CO: Yampa Valley" +HNL,WN,Southwest Airlines Co.,1,"Honolulu, HI: Daniel K Inouye International" +HOU,WN,Southwest Airlines Co.,1,"Houston, TX: William P Hobby" +HRL,WN,Southwest Airlines Co.,1,"Harlingen/San Benito, TX: Valley International" +IAD,WN,Southwest Airlines Co.,1,"Washington, DC: Washington Dulles International" +IAH,WN,Southwest Airlines Co.,1,"Houston, TX: George Bush Intercontinental/Houston" +ICT,WN,Southwest Airlines Co.,1,"Wichita, KS: Wichita Dwight D Eisenhower National" +IND,WN,Southwest Airlines Co.,1,"Indianapolis, IN: Indianapolis International" +ISP,WN,Southwest Airlines Co.,1,"Islip, NY: Long Island MacArthur" +ITO,WN,Southwest Airlines Co.,1,"Hilo, HI: Hilo International" +JAN,WN,Southwest Airlines Co.,1,"Jackson/Vicksburg, MS: Jackson Medgar Wiley Evers International" +JAX,WN,Southwest Airlines Co.,1,"Jacksonville, FL: Jacksonville International" +KOA,WN,Southwest Airlines Co.,1,"Kona, HI: Ellison Onizuka Kona International at Keahole" +LAS,WN,Southwest Airlines Co.,1,"Las Vegas, NV: Harry Reid International" +LAX,WN,Southwest Airlines Co.,1,"Los Angeles, CA: Los Angeles International" +LBB,WN,Southwest Airlines Co.,1,"Lubbock, TX: Lubbock Preston Smith International" +LGA,WN,Southwest Airlines Co.,1,"New York, NY: LaGuardia" +LGB,WN,Southwest Airlines Co.,1,"Long Beach, CA: Long Beach Airport" +LIH,WN,Southwest Airlines Co.,1,"Lihue, HI: Lihue Airport" +LIT,WN,Southwest Airlines Co.,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MAF,WN,Southwest Airlines Co.,1,"Midland/Odessa, TX: Midland International Air and Space Port" +MCI,WN,Southwest Airlines Co.,1,"Kansas City, MO: Kansas City International" +MCO,WN,Southwest Airlines Co.,1,"Orlando, FL: Orlando International" +MDW,WN,Southwest Airlines Co.,1,"Chicago, IL: Chicago Midway International" +MEM,WN,Southwest Airlines Co.,1,"Memphis, TN: Memphis International" +MHT,WN,Southwest Airlines Co.,1,"Manchester, NH: Manchester Boston Regional" +MIA,WN,Southwest Airlines Co.,1,"Miami, FL: Miami International" +MKE,WN,Southwest Airlines Co.,1,"Milwaukee, WI: General Mitchell International" +MSP,WN,Southwest Airlines Co.,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,WN,Southwest Airlines Co.,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MTJ,WN,Southwest Airlines Co.,1,"Montrose/Delta, CO: Montrose Regional" +MYR,WN,Southwest Airlines Co.,1,"Myrtle Beach, SC: Myrtle Beach International" +OAK,WN,Southwest Airlines Co.,1,"Oakland, CA: Metro Oakland International" +OGG,WN,Southwest Airlines Co.,1,"Kahului, HI: Kahului Airport" +OKC,WN,Southwest Airlines Co.,1,"Oklahoma City, OK: Will Rogers World" +OMA,WN,Southwest Airlines Co.,1,"Omaha, NE: Eppley Airfield" +ONT,WN,Southwest Airlines Co.,1,"Ontario, CA: Ontario International" +ORD,WN,Southwest Airlines Co.,1,"Chicago, IL: Chicago O'Hare International" +ORF,WN,Southwest Airlines Co.,1,"Norfolk, VA: Norfolk International" +PBI,WN,Southwest Airlines Co.,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PDX,WN,Southwest Airlines Co.,1,"Portland, OR: Portland International" +PHL,WN,Southwest Airlines Co.,1,"Philadelphia, PA: Philadelphia International" +PHX,WN,Southwest Airlines Co.,1,"Phoenix, AZ: Phoenix Sky Harbor International" +PIT,WN,Southwest Airlines Co.,1,"Pittsburgh, PA: Pittsburgh International" +PNS,WN,Southwest Airlines Co.,1,"Pensacola, FL: Pensacola International" +PSP,WN,Southwest Airlines Co.,1,"Palm Springs, CA: Palm Springs International" +PVD,WN,Southwest Airlines Co.,1,"Providence, RI: Rhode Island Tf Green International" +PWM,WN,Southwest Airlines Co.,1,"Portland, ME: Portland International Jetport" +RDU,WN,Southwest Airlines Co.,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,WN,Southwest Airlines Co.,1,"Richmond, VA: Richmond International" +RNO,WN,Southwest Airlines Co.,1,"Reno, NV: Reno/Tahoe International" +ROC,WN,Southwest Airlines Co.,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,WN,Southwest Airlines Co.,1,"Fort Myers, FL: Southwest Florida International" +SAN,WN,Southwest Airlines Co.,1,"San Diego, CA: San Diego International" +SAT,WN,Southwest Airlines Co.,1,"San Antonio, TX: San Antonio International" +SAV,WN,Southwest Airlines Co.,1,"Savannah, GA: Savannah/Hilton Head International" +SBA,WN,Southwest Airlines Co.,1,"Santa Barbara, CA: Santa Barbara Municipal" +SDF,WN,Southwest Airlines Co.,1,"Louisville, KY: Louisville Muhammad Ali International" +SEA,WN,Southwest Airlines Co.,1,"Seattle, WA: Seattle/Tacoma International" +SFO,WN,Southwest Airlines Co.,1,"San Francisco, CA: San Francisco International" +SJC,WN,Southwest Airlines Co.,1,"San Jose, CA: Norman Y. Mineta San Jose International" +SJU,WN,Southwest Airlines Co.,1,"San Juan, PR: Luis Munoz Marin International" +SLC,WN,Southwest Airlines Co.,1,"Salt Lake City, UT: Salt Lake City International" +SMF,WN,Southwest Airlines Co.,1,"Sacramento, CA: Sacramento International" +SNA,WN,Southwest Airlines Co.,1,"Santa Ana, CA: John Wayne Airport-Orange County" +SRQ,WN,Southwest Airlines Co.,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,WN,Southwest Airlines Co.,1,"St. Louis, MO: St Louis Lambert International" +SYR,WN,Southwest Airlines Co.,1,"Syracuse, NY: Syracuse Hancock International" +TPA,WN,Southwest Airlines Co.,1,"Tampa, FL: Tampa International" +TUL,WN,Southwest Airlines Co.,1,"Tulsa, OK: Tulsa International" +TUS,WN,Southwest Airlines Co.,1,"Tucson, AZ: Tucson International" +VPS,WN,Southwest Airlines Co.,1,"Valparaiso, FL: Eglin AFB Destin Fort Walton Beach" +ALB,YX,Republic Airline,1,"Albany, NY: Albany International" +ATL,YX,Republic Airline,1,"Atlanta, GA: Hartsfield-Jackson Atlanta International" +AUS,YX,Republic Airline,1,"Austin, TX: Austin - Bergstrom International" +AVL,YX,Republic Airline,1,"Asheville, NC: Asheville Regional" +BDL,YX,Republic Airline,1,"Hartford, CT: Bradley International" +BGR,YX,Republic Airline,1,"Bangor, ME: Bangor International" +BHM,YX,Republic Airline,1,"Birmingham, AL: Birmingham-Shuttlesworth International" +BNA,YX,Republic Airline,1,"Nashville, TN: Nashville International" +BOS,YX,Republic Airline,1,"Boston, MA: Logan International" +BTV,YX,Republic Airline,1,"Burlington, VT: Burlington International" +BUF,YX,Republic Airline,1,"Buffalo, NY: Buffalo Niagara International" +BWI,YX,Republic Airline,1,"Baltimore, MD: Baltimore/Washington International Thurgood Marshall" +CHA,YX,Republic Airline,1,"Chattanooga, TN: Lovell Field" +CHO,YX,Republic Airline,1,"Charlottesville, VA: Charlottesville Albemarle" +CHS,YX,Republic Airline,1,"Charleston, SC: Charleston AFB/International" +CLE,YX,Republic Airline,1,"Cleveland, OH: Cleveland-Hopkins International" +CLT,YX,Republic Airline,1,"Charlotte, NC: Charlotte Douglas International" +CMH,YX,Republic Airline,1,"Columbus, OH: John Glenn Columbus International" +CVG,YX,Republic Airline,1,"Cincinnati, OH: Cincinnati/Northern Kentucky International" +DAY,YX,Republic Airline,1,"Dayton, OH: James M Cox/Dayton International" +DCA,YX,Republic Airline,1,"Washington, DC: Ronald Reagan Washington National" +DFW,YX,Republic Airline,1,"Dallas/Fort Worth, TX: Dallas/Fort Worth International" +DLH,YX,Republic Airline,1,"Duluth, MN: Duluth International" +DSM,YX,Republic Airline,1,"Des Moines, IA: Des Moines International" +DTW,YX,Republic Airline,1,"Detroit, MI: Detroit Metro Wayne County" +EWR,YX,Republic Airline,1,"Newark, NJ: Newark Liberty International" +EYW,YX,Republic Airline,1,"Key West, FL: Key West International" +GRR,YX,Republic Airline,1,"Grand Rapids, MI: Gerald R. Ford International" +GSO,YX,Republic Airline,1,"Greensboro/High Point, NC: Piedmont Triad International" +GSP,YX,Republic Airline,1,"Greer, SC: Greenville-Spartanburg International" +HPN,YX,Republic Airline,1,"White Plains, NY: Westchester County" +HSV,YX,Republic Airline,1,"Huntsville, AL: Huntsville International-Carl T Jones Field" +IAD,YX,Republic Airline,1,"Washington, DC: Washington Dulles International" +IAH,YX,Republic Airline,1,"Houston, TX: George Bush Intercontinental/Houston" +ILM,YX,Republic Airline,1,"Wilmington, NC: Wilmington International" +IND,YX,Republic Airline,1,"Indianapolis, IN: Indianapolis International" +ITH,YX,Republic Airline,1,"Ithaca/Cortland, NY: Ithaca Tompkins International" +JAX,YX,Republic Airline,1,"Jacksonville, FL: Jacksonville International" +JFK,YX,Republic Airline,1,"New York, NY: John F. Kennedy International" +LEX,YX,Republic Airline,1,"Lexington, KY: Blue Grass" +LGA,YX,Republic Airline,1,"New York, NY: LaGuardia" +LIT,YX,Republic Airline,1,"Little Rock, AR: Bill and Hillary Clinton Nat Adams Field" +MCI,YX,Republic Airline,1,"Kansas City, MO: Kansas City International" +MDT,YX,Republic Airline,1,"Harrisburg, PA: Harrisburg International" +MEM,YX,Republic Airline,1,"Memphis, TN: Memphis International" +MHT,YX,Republic Airline,1,"Manchester, NH: Manchester Boston Regional" +MIA,YX,Republic Airline,1,"Miami, FL: Miami International" +MKE,YX,Republic Airline,1,"Milwaukee, WI: General Mitchell International" +MSN,YX,Republic Airline,1,"Madison, WI: Dane County Regional-Truax Field" +MSP,YX,Republic Airline,1,"Minneapolis, MN: Minneapolis-St Paul International" +MSY,YX,Republic Airline,1,"New Orleans, LA: Louis Armstrong New Orleans International" +MYR,YX,Republic Airline,1,"Myrtle Beach, SC: Myrtle Beach International" +OKC,YX,Republic Airline,1,"Oklahoma City, OK: Will Rogers World" +OMA,YX,Republic Airline,1,"Omaha, NE: Eppley Airfield" +ORD,YX,Republic Airline,1,"Chicago, IL: Chicago O'Hare International" +ORF,YX,Republic Airline,1,"Norfolk, VA: Norfolk International" +ORH,YX,Republic Airline,1,"Worcester, MA: Worcester Regional" +PBI,YX,Republic Airline,1,"West Palm Beach/Palm Beach, FL: Palm Beach International" +PHL,YX,Republic Airline,1,"Philadelphia, PA: Philadelphia International" +PIT,YX,Republic Airline,1,"Pittsburgh, PA: Pittsburgh International" +PNS,YX,Republic Airline,1,"Pensacola, FL: Pensacola International" +PVD,YX,Republic Airline,1,"Providence, RI: Rhode Island Tf Green International" +PWM,YX,Republic Airline,1,"Portland, ME: Portland International Jetport" +RDU,YX,Republic Airline,1,"Raleigh/Durham, NC: Raleigh-Durham International" +RIC,YX,Republic Airline,1,"Richmond, VA: Richmond International" +ROA,YX,Republic Airline,1,"Roanoke, VA: Roanoke Blacksburg Regional" +ROC,YX,Republic Airline,1,"Rochester, NY: Frederick Douglass Grtr Rochester International" +RSW,YX,Republic Airline,1,"Fort Myers, FL: Southwest Florida International" +SAV,YX,Republic Airline,1,"Savannah, GA: Savannah/Hilton Head International" +SCE,YX,Republic Airline,1,"State College, PA: University Park" +SDF,YX,Republic Airline,1,"Louisville, KY: Louisville Muhammad Ali International" +SRQ,YX,Republic Airline,1,"Sarasota/Bradenton, FL: Sarasota/Bradenton International" +STL,YX,Republic Airline,1,"St. Louis, MO: St Louis Lambert International" +SYR,YX,Republic Airline,1,"Syracuse, NY: Syracuse Hancock International" +TPA,YX,Republic Airline,1,"Tampa, FL: Tampa International" +TUL,YX,Republic Airline,1,"Tulsa, OK: Tulsa International" +XNA,YX,Republic Airline,1,"Fayetteville, AR: Northwest Arkansas National" \ No newline at end of file From 39b13ea7103bb0788ddf58c0e3164e0111394e2a Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Wed, 23 Oct 2024 16:56:11 +0530 Subject: [PATCH 02/15] added flight div and description box for each div --- index.html | 22 ++++++++++++++++++++-- script.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 4ff2590..bf409a4 100644 --- a/index.html +++ b/index.html @@ -51,7 +51,7 @@

Drag & Drop CSV file here

+ +
+
+

+
+
diff --git a/script.js b/script.js index a86454b..82122eb 100644 --- a/script.js +++ b/script.js @@ -5,6 +5,43 @@ import { render, html } from "https://cdn.jsdelivr.net/npm/lit-html@3/+esm"; const fileInput = document.getElementById("fileInput"); const controls = document.getElementById("controls"); +const cards=document.querySelectorAll(".card"); +const DescriptionBox=document.getElementById("description-box"); + +const values={ + + "author":{ + title:'Co-authors', + description:'"Coauthors" presents a graph visualizing the collaborative relationships between authors and co-authors in Arxiv papers focused on Large Language Models (LLMs), highlighting key contributors and their research networks.' + }, + + "rbc":{ + title:'Religion by Country', + description:'"Religion by Country" displays a network graph that explores the distribution and relationships of religions practiced across different countries, offering insights into cultural and religious diversity worldwide.' + }, + + "flight":{ + + title:'Flights by Airport 2023', + description:'Analyze the network to gain insights into flights arriving at a specific airport.' + } + +} + +cards.forEach((card)=>{ + + card.addEventListener("click",()=>{ + + DescriptionBox.classList.remove("d-none"); + const val=card.getAttribute("data-card"); + const title=values[val].title; + const description=values[val].description; + // console.log(title," ",description); + document.getElementById("title").innerHTML=title; + document.getElementById("description").innerHTML=description; + }) +}) + let data, nodeLinks; document.addEventListener("DOMContentLoaded", () => { @@ -16,6 +53,10 @@ document.addEventListener("DOMContentLoaded", () => { function handleFileUpload(event) { const file = event.target.files[0]; + if(!DescriptionBox.classList.contains('d-none')){ + DescriptionBox.classList.add('d-none'); + } + if (file) { const reader = new FileReader(); reader.onload = (e) => processCSVData(e.target.result); From bc6174c4b569c0157ad376019f0ef95ed1f50fb4 Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Thu, 24 Oct 2024 19:18:34 +0530 Subject: [PATCH 03/15] cards render dynamically and description box updated --- config.json | 22 + index.html | 51 +- node_modules/.bin/marked | 16 + node_modules/.bin/marked.cmd | 17 + node_modules/.bin/marked.ps1 | 28 + node_modules/.package-lock.json | 19 + node_modules/marked/LICENSE.md | 44 + node_modules/marked/README.md | 107 + node_modules/marked/bin/main.js | 282 +++ node_modules/marked/bin/marked.js | 15 + node_modules/marked/lib/marked.cjs | 2521 ++++++++++++++++++++ node_modules/marked/lib/marked.cjs.map | 1 + node_modules/marked/lib/marked.d.cts | 667 ++++++ node_modules/marked/lib/marked.d.ts | 667 ++++++ node_modules/marked/lib/marked.esm.js | 2503 ++++++++++++++++++++ node_modules/marked/lib/marked.esm.js.map | 1 + node_modules/marked/lib/marked.umd.js | 2527 +++++++++++++++++++++ node_modules/marked/lib/marked.umd.js.map | 1 + node_modules/marked/man/marked.1 | 111 + node_modules/marked/man/marked.1.md | 92 + node_modules/marked/marked.min.js | 6 + node_modules/marked/package.json | 110 + package-lock.json | 24 + package.json | 5 + script.js | 107 +- 25 files changed, 9875 insertions(+), 69 deletions(-) create mode 100644 config.json create mode 100644 node_modules/.bin/marked create mode 100644 node_modules/.bin/marked.cmd create mode 100644 node_modules/.bin/marked.ps1 create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/marked/LICENSE.md create mode 100644 node_modules/marked/README.md create mode 100644 node_modules/marked/bin/main.js create mode 100644 node_modules/marked/bin/marked.js create mode 100644 node_modules/marked/lib/marked.cjs create mode 100644 node_modules/marked/lib/marked.cjs.map create mode 100644 node_modules/marked/lib/marked.d.cts create mode 100644 node_modules/marked/lib/marked.d.ts create mode 100644 node_modules/marked/lib/marked.esm.js create mode 100644 node_modules/marked/lib/marked.esm.js.map create mode 100644 node_modules/marked/lib/marked.umd.js create mode 100644 node_modules/marked/lib/marked.umd.js.map create mode 100644 node_modules/marked/man/marked.1 create mode 100644 node_modules/marked/man/marked.1.md create mode 100644 node_modules/marked/marked.min.js create mode 100644 node_modules/marked/package.json create mode 100644 package-lock.json create mode 100644 package.json diff --git a/config.json b/config.json new file mode 100644 index 0000000..386fe79 --- /dev/null +++ b/config.json @@ -0,0 +1,22 @@ +{ + "demos":[ + { + "title":"Co-authors", + "overview":"Co-authors relationships of Arxiv papers related to LLMs", + "description":"'Coauthors' presents a graph visualizing the collaborative relationships between authors and co-authors in Arxiv papers focused on Large Language Models (LLMs), highlighting key contributors and their research networks.", + "href":"https://raw.githubusercontent.com/gramener/gramex-network/main/docs/coauthors.csv" + }, + { + "title":"Religion by Country", + "overview":"Explore the network of religions practiced by country", + "description":"'Religion by Country' displays a network graph that explores the distribution and relationships of religions practiced across different countries, offering insights into cultural and religious diversity worldwide.", + "href":"https://raw.githubusercontent.com/gramener/gramex-network/main/docs/country-religion.csv" + }, + { + "title":"Aircraft Arrival Network in the USA 2023", + "overview":"Analyze the network to gain insights into flights arriving at a specific airport.", + "description":"'Aircraft Arrival Network' illustrates the connections between various aircraft and the airports they arrive at across the USA, providing insights into air traffic patterns and airport activity", + "href":"https://raw.githubusercontent.com/krishna-gramener/network/refs/heads/main/flight-modified.csv" + } + ] +} \ No newline at end of file diff --git a/index.html b/index.html index bf409a4..970e1bf 100644 --- a/index.html +++ b/index.html @@ -8,6 +8,16 @@ Network @@ -48,44 +58,19 @@

Drag & Drop CSV file here

- -
-
-

+
+
+
+

+
diff --git a/node_modules/.bin/marked b/node_modules/.bin/marked new file mode 100644 index 0000000..9ba4dfd --- /dev/null +++ b/node_modules/.bin/marked @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../marked/bin/marked.js" "$@" +else + exec node "$basedir/../marked/bin/marked.js" "$@" +fi diff --git a/node_modules/.bin/marked.cmd b/node_modules/.bin/marked.cmd new file mode 100644 index 0000000..a736455 --- /dev/null +++ b/node_modules/.bin/marked.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\marked\bin\marked.js" %* diff --git a/node_modules/.bin/marked.ps1 b/node_modules/.bin/marked.ps1 new file mode 100644 index 0000000..c6b4c9f --- /dev/null +++ b/node_modules/.bin/marked.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../marked/bin/marked.js" $args + } else { + & "$basedir/node$exe" "$basedir/../marked/bin/marked.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../marked/bin/marked.js" $args + } else { + & "node$exe" "$basedir/../marked/bin/marked.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..d2f5b2e --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,19 @@ +{ + "name": "network", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/marked": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz", + "integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + } + } +} diff --git a/node_modules/marked/LICENSE.md b/node_modules/marked/LICENSE.md new file mode 100644 index 0000000..4bd2d4a --- /dev/null +++ b/node_modules/marked/LICENSE.md @@ -0,0 +1,44 @@ +# License information + +## Contribution License Agreement + +If you contribute code to this project, you are implicitly allowing your code +to be distributed under the MIT license. You are also implicitly verifying that +all code is your original work. `` + +## Marked + +Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/) +Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +## Markdown + +Copyright © 2004, John Gruber +http://daringfireball.net/ +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name “Markdown” nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. diff --git a/node_modules/marked/README.md b/node_modules/marked/README.md new file mode 100644 index 0000000..d4ab251 --- /dev/null +++ b/node_modules/marked/README.md @@ -0,0 +1,107 @@ + + + + +# Marked + +[![npm](https://badgen.net/npm/v/marked)](https://www.npmjs.com/package/marked) +[![gzip size](https://badgen.net/badgesize/gzip/https://cdn.jsdelivr.net/npm/marked/marked.min.js)](https://cdn.jsdelivr.net/npm/marked/marked.min.js) +[![install size](https://badgen.net/packagephobia/install/marked)](https://packagephobia.now.sh/result?p=marked) +[![downloads](https://badgen.net/npm/dt/marked)](https://www.npmjs.com/package/marked) +[![github actions](https://github.com/markedjs/marked/workflows/Tests/badge.svg)](https://github.com/markedjs/marked/actions) +[![snyk](https://snyk.io/test/npm/marked/badge.svg)](https://snyk.io/test/npm/marked) + +- ⚡ built for speed +- ⬇️ low-level compiler for parsing markdown without caching or blocking for long periods of time +- ⚖️ light-weight while implementing all markdown features from the supported flavors & specifications +- 🌐 works in a browser, on a server, or from a command line interface (CLI) + +## Demo + +Checkout the [demo page](https://marked.js.org/demo/) to see marked in action ⛹️ + +## Docs + +Our [documentation pages](https://marked.js.org) are also rendered using marked 💯 + +Also read about: + +* [Options](https://marked.js.org/using_advanced) +* [Extensibility](https://marked.js.org/using_pro) + +## Compatibility + +**Node.js:** Only [current and LTS](https://nodejs.org/en/about/releases/) Node.js versions are supported. End of life Node.js versions may become incompatible with Marked at any point in time. + +**Browser:** Not IE11 :) + +## Installation + +**CLI:** + +```sh +npm install -g marked +``` + +**In-browser:** + +```sh +npm install marked +``` + +## Usage + +### Warning: 🚨 Marked does not [sanitize](https://marked.js.org/using_advanced#options) the output HTML. Please use a sanitize library, like [DOMPurify](https://github.com/cure53/DOMPurify) (recommended), [sanitize-html](https://github.com/apostrophecms/sanitize-html) or [insane](https://github.com/bevacqua/insane) on the *output* HTML! 🚨 + +``` +DOMPurify.sanitize(marked.parse(``)); +``` + +**CLI** + +``` bash +# Example with stdin input +$ marked -o hello.html +hello world +^D +$ cat hello.html +

hello world

+``` + +```bash +# Print all options +$ marked --help +``` + +**Browser** + +```html + + + + + Marked in the browser + + +
+ + + + +``` +or import esm module + +```html + +``` + +## License + +Copyright (c) 2011-2022, Christopher Jeffrey. (MIT License) diff --git a/node_modules/marked/bin/main.js b/node_modules/marked/bin/main.js new file mode 100644 index 0000000..b20689b --- /dev/null +++ b/node_modules/marked/bin/main.js @@ -0,0 +1,282 @@ +#!/usr/bin/env node + +/** + * Marked CLI + * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License) + */ + +import { promises } from 'node:fs'; +import { dirname, resolve } from 'node:path'; +import { homedir } from 'node:os'; +import { createRequire } from 'node:module'; +import { marked } from '../lib/marked.esm.js'; + +const { access, readFile, writeFile } = promises; +const require = createRequire(import.meta.url); + +/** + * @param {Process} nodeProcess inject process so it can be mocked in tests. + */ +export async function main(nodeProcess) { + /** + * Man Page + */ + async function help() { + const { spawn } = await import('child_process'); + const { fileURLToPath } = await import('url'); + + const options = { + cwd: nodeProcess.cwd(), + env: nodeProcess.env, + stdio: 'inherit', + }; + + const __dirname = dirname(fileURLToPath(import.meta.url)); + const helpText = await readFile(resolve(__dirname, '../man/marked.1.md'), 'utf8'); + + await new Promise(res => { + const manProcess = spawn('man', [resolve(__dirname, '../man/marked.1')], options); + nodeProcess.on('SIGINT', () => { + manProcess.kill('SIGINT'); + }); + + manProcess.on('error', () => { + console.log(helpText); + }) + .on('close', res); + }); + } + + async function version() { + const pkg = require('../package.json'); + console.log(pkg.version); + } + + /** + * Main + */ + async function start(argv) { + const files = []; + const options = {}; + let input; + let output; + let string; + let arg; + let tokens; + let config; + let opt; + let noclobber; + + function getArg() { + let arg = argv.shift(); + + if (arg.indexOf('--') === 0) { + // e.g. --opt + arg = arg.split('='); + if (arg.length > 1) { + // e.g. --opt=val + argv.unshift(arg.slice(1).join('=')); + } + arg = arg[0]; + } else if (arg[0] === '-') { + if (arg.length > 2) { + // e.g. -abc + argv = arg.substring(1).split('').map(function(ch) { + return '-' + ch; + }).concat(argv); + arg = argv.shift(); + } else { + // e.g. -a + } + } else { + // e.g. foo + } + + return arg; + } + + while (argv.length) { + arg = getArg(); + switch (arg) { + case '-o': + case '--output': + output = argv.shift(); + break; + case '-i': + case '--input': + input = argv.shift(); + break; + case '-s': + case '--string': + string = argv.shift(); + break; + case '-t': + case '--tokens': + tokens = true; + break; + case '-c': + case '--config': + config = argv.shift(); + break; + case '-n': + case '--no-clobber': + noclobber = true; + break; + case '-h': + case '--help': + return await help(); + case '-v': + case '--version': + return await version(); + default: + if (arg.indexOf('--') === 0) { + opt = camelize(arg.replace(/^--(no-)?/, '')); + if (!(opt in marked.defaults)) { + continue; + } + if (arg.indexOf('--no-') === 0) { + options[opt] = typeof marked.defaults[opt] !== 'boolean' + ? null + : false; + } else { + options[opt] = typeof marked.defaults[opt] !== 'boolean' + ? argv.shift() + : true; + } + } else { + files.push(arg); + } + break; + } + } + + async function getData() { + if (!input) { + if (files.length <= 2) { + if (string) { + return string; + } + return await getStdin(); + } + input = files.pop(); + } + return await readFile(input, 'utf8'); + } + + function resolveFile(file) { + return resolve(file.replace(/^~/, homedir)); + } + + function fileExists(file) { + return access(resolveFile(file)).then(() => true, () => false); + } + + async function runConfig(file) { + const configFile = resolveFile(file); + let markedConfig; + try { + // try require for json + markedConfig = require(configFile); + } catch (err) { + if (err.code !== 'ERR_REQUIRE_ESM') { + throw err; + } + // must import esm + markedConfig = await import('file:///' + configFile); + } + + if (markedConfig.default) { + markedConfig = markedConfig.default; + } + + if (typeof markedConfig === 'function') { + markedConfig(marked); + } else { + marked.use(markedConfig); + } + } + + const data = await getData(); + + if (config) { + if (!await fileExists(config)) { + throw Error(`Cannot load config file '${config}'`); + } + + await runConfig(config); + } else { + const defaultConfig = [ + '~/.marked.json', + '~/.marked.js', + '~/.marked/index.js', + ]; + + for (const configFile of defaultConfig) { + if (await fileExists(configFile)) { + await runConfig(configFile); + break; + } + } + } + + const html = tokens + ? JSON.stringify(marked.lexer(data, options), null, 2) + : await marked.parse(data, options); + + if (output) { + if (noclobber && await fileExists(output)) { + throw Error('marked: output file \'' + output + '\' already exists, disable the \'-n\' / \'--no-clobber\' flag to overwrite\n'); + } + return await writeFile(output, html); + } + + nodeProcess.stdout.write(html + '\n'); + } + + /** + * Helpers + */ + function getStdin() { + return new Promise((resolve, reject) => { + const stdin = nodeProcess.stdin; + let buff = ''; + + stdin.setEncoding('utf8'); + + stdin.on('data', function(data) { + buff += data; + }); + + stdin.on('error', function(err) { + reject(err); + }); + + stdin.on('end', function() { + resolve(buff); + }); + + stdin.resume(); + }); + } + + /** + * @param {string} text + */ + function camelize(text) { + return text.replace(/(\w)-(\w)/g, function(_, a, b) { + return a + b.toUpperCase(); + }); + } + + try { + await start(nodeProcess.argv.slice()); + nodeProcess.exit(0); + } catch (err) { + if (err.code === 'ENOENT') { + nodeProcess.stderr.write('marked: ' + err.path + ': No such file or directory'); + } else { + nodeProcess.stderr.write(err.message); + } + return nodeProcess.exit(1); + } +} diff --git a/node_modules/marked/bin/marked.js b/node_modules/marked/bin/marked.js new file mode 100644 index 0000000..e2dd816 --- /dev/null +++ b/node_modules/marked/bin/marked.js @@ -0,0 +1,15 @@ +#!/usr/bin/env node + +/** + * Marked CLI + * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License) + */ + +import { main } from './main.js'; + +/** + * Expose / Entry Point + */ + +process.title = 'marked'; +main(process); diff --git a/node_modules/marked/lib/marked.cjs b/node_modules/marked/lib/marked.cjs new file mode 100644 index 0000000..89c6c46 --- /dev/null +++ b/node_modules/marked/lib/marked.cjs @@ -0,0 +1,2521 @@ +/** + * marked v14.1.3 - a markdown parser + * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) + * https://github.com/markedjs/marked + */ + +/** + * DO NOT EDIT THIS FILE + * The code in this file is generated from files in ./src/ + */ + +'use strict'; + +/** + * Gets the original marked default options. + */ +function _getDefaults() { + return { + async: false, + breaks: false, + extensions: null, + gfm: true, + hooks: null, + pedantic: false, + renderer: null, + silent: false, + tokenizer: null, + walkTokens: null, + }; +} +exports.defaults = _getDefaults(); +function changeDefaults(newDefaults) { + exports.defaults = newDefaults; +} + +/** + * Helpers + */ +const escapeTest = /[&<>"']/; +const escapeReplace = new RegExp(escapeTest.source, 'g'); +const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; +const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); +const escapeReplacements = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', +}; +const getEscapeReplacement = (ch) => escapeReplacements[ch]; +function escape$1(html, encode) { + if (encode) { + if (escapeTest.test(html)) { + return html.replace(escapeReplace, getEscapeReplacement); + } + } + else { + if (escapeTestNoEncode.test(html)) { + return html.replace(escapeReplaceNoEncode, getEscapeReplacement); + } + } + return html; +} +const caret = /(^|[^\[])\^/g; +function edit(regex, opt) { + let source = typeof regex === 'string' ? regex : regex.source; + opt = opt || ''; + const obj = { + replace: (name, val) => { + let valSource = typeof val === 'string' ? val : val.source; + valSource = valSource.replace(caret, '$1'); + source = source.replace(name, valSource); + return obj; + }, + getRegex: () => { + return new RegExp(source, opt); + }, + }; + return obj; +} +function cleanUrl(href) { + try { + href = encodeURI(href).replace(/%25/g, '%'); + } + catch { + return null; + } + return href; +} +const noopTest = { exec: () => null }; +function splitCells(tableRow, count) { + // ensure that every cell-delimiting pipe has a space + // before it to distinguish it from an escaped pipe + const row = tableRow.replace(/\|/g, (match, offset, str) => { + let escaped = false; + let curr = offset; + while (--curr >= 0 && str[curr] === '\\') + escaped = !escaped; + if (escaped) { + // odd number of slashes means | is escaped + // so we leave it alone + return '|'; + } + else { + // add space before unescaped | + return ' |'; + } + }), cells = row.split(/ \|/); + let i = 0; + // First/last cell in a row cannot be empty if it has no leading/trailing pipe + if (!cells[0].trim()) { + cells.shift(); + } + if (cells.length > 0 && !cells[cells.length - 1].trim()) { + cells.pop(); + } + if (count) { + if (cells.length > count) { + cells.splice(count); + } + else { + while (cells.length < count) + cells.push(''); + } + } + for (; i < cells.length; i++) { + // leading or trailing whitespace is ignored per the gfm spec + cells[i] = cells[i].trim().replace(/\\\|/g, '|'); + } + return cells; +} +/** + * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). + * /c*$/ is vulnerable to REDOS. + * + * @param str + * @param c + * @param invert Remove suffix of non-c chars instead. Default falsey. + */ +function rtrim(str, c, invert) { + const l = str.length; + if (l === 0) { + return ''; + } + // Length of suffix matching the invert condition. + let suffLen = 0; + // Step left until we fail to match the invert condition. + while (suffLen < l) { + const currChar = str.charAt(l - suffLen - 1); + if (currChar === c && !invert) { + suffLen++; + } + else if (currChar !== c && invert) { + suffLen++; + } + else { + break; + } + } + return str.slice(0, l - suffLen); +} +function findClosingBracket(str, b) { + if (str.indexOf(b[1]) === -1) { + return -1; + } + let level = 0; + for (let i = 0; i < str.length; i++) { + if (str[i] === '\\') { + i++; + } + else if (str[i] === b[0]) { + level++; + } + else if (str[i] === b[1]) { + level--; + if (level < 0) { + return i; + } + } + } + return -1; +} + +function outputLink(cap, link, raw, lexer) { + const href = link.href; + const title = link.title ? escape$1(link.title) : null; + const text = cap[1].replace(/\\([\[\]])/g, '$1'); + if (cap[0].charAt(0) !== '!') { + lexer.state.inLink = true; + const token = { + type: 'link', + raw, + href, + title, + text, + tokens: lexer.inlineTokens(text), + }; + lexer.state.inLink = false; + return token; + } + return { + type: 'image', + raw, + href, + title, + text: escape$1(text), + }; +} +function indentCodeCompensation(raw, text) { + const matchIndentToCode = raw.match(/^(\s+)(?:```)/); + if (matchIndentToCode === null) { + return text; + } + const indentToCode = matchIndentToCode[1]; + return text + .split('\n') + .map(node => { + const matchIndentInNode = node.match(/^\s+/); + if (matchIndentInNode === null) { + return node; + } + const [indentInNode] = matchIndentInNode; + if (indentInNode.length >= indentToCode.length) { + return node.slice(indentToCode.length); + } + return node; + }) + .join('\n'); +} +/** + * Tokenizer + */ +class _Tokenizer { + options; + rules; // set by the lexer + lexer; // set by the lexer + constructor(options) { + this.options = options || exports.defaults; + } + space(src) { + const cap = this.rules.block.newline.exec(src); + if (cap && cap[0].length > 0) { + return { + type: 'space', + raw: cap[0], + }; + } + } + code(src) { + const cap = this.rules.block.code.exec(src); + if (cap) { + const text = cap[0].replace(/^(?: {1,4}| {0,3}\t)/gm, ''); + return { + type: 'code', + raw: cap[0], + codeBlockStyle: 'indented', + text: !this.options.pedantic + ? rtrim(text, '\n') + : text, + }; + } + } + fences(src) { + const cap = this.rules.block.fences.exec(src); + if (cap) { + const raw = cap[0]; + const text = indentCodeCompensation(raw, cap[3] || ''); + return { + type: 'code', + raw, + lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], + text, + }; + } + } + heading(src) { + const cap = this.rules.block.heading.exec(src); + if (cap) { + let text = cap[2].trim(); + // remove trailing #s + if (/#$/.test(text)) { + const trimmed = rtrim(text, '#'); + if (this.options.pedantic) { + text = trimmed.trim(); + } + else if (!trimmed || / $/.test(trimmed)) { + // CommonMark requires space before trailing #s + text = trimmed.trim(); + } + } + return { + type: 'heading', + raw: cap[0], + depth: cap[1].length, + text, + tokens: this.lexer.inline(text), + }; + } + } + hr(src) { + const cap = this.rules.block.hr.exec(src); + if (cap) { + return { + type: 'hr', + raw: rtrim(cap[0], '\n'), + }; + } + } + blockquote(src) { + const cap = this.rules.block.blockquote.exec(src); + if (cap) { + let lines = rtrim(cap[0], '\n').split('\n'); + let raw = ''; + let text = ''; + const tokens = []; + while (lines.length > 0) { + let inBlockquote = false; + const currentLines = []; + let i; + for (i = 0; i < lines.length; i++) { + // get lines up to a continuation + if (/^ {0,3}>/.test(lines[i])) { + currentLines.push(lines[i]); + inBlockquote = true; + } + else if (!inBlockquote) { + currentLines.push(lines[i]); + } + else { + break; + } + } + lines = lines.slice(i); + const currentRaw = currentLines.join('\n'); + const currentText = currentRaw + // precede setext continuation with 4 spaces so it isn't a setext + .replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1') + .replace(/^ {0,3}>[ \t]?/gm, ''); + raw = raw ? `${raw}\n${currentRaw}` : currentRaw; + text = text ? `${text}\n${currentText}` : currentText; + // parse blockquote lines as top level tokens + // merge paragraphs if this is a continuation + const top = this.lexer.state.top; + this.lexer.state.top = true; + this.lexer.blockTokens(currentText, tokens, true); + this.lexer.state.top = top; + // if there is no continuation then we are done + if (lines.length === 0) { + break; + } + const lastToken = tokens[tokens.length - 1]; + if (lastToken?.type === 'code') { + // blockquote continuation cannot be preceded by a code block + break; + } + else if (lastToken?.type === 'blockquote') { + // include continuation in nested blockquote + const oldToken = lastToken; + const newText = oldToken.raw + '\n' + lines.join('\n'); + const newToken = this.blockquote(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.text.length) + newToken.text; + break; + } + else if (lastToken?.type === 'list') { + // include continuation in nested list + const oldToken = lastToken; + const newText = oldToken.raw + '\n' + lines.join('\n'); + const newToken = this.list(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw; + lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\n'); + continue; + } + } + return { + type: 'blockquote', + raw, + tokens, + text, + }; + } + } + list(src) { + let cap = this.rules.block.list.exec(src); + if (cap) { + let bull = cap[1].trim(); + const isordered = bull.length > 1; + const list = { + type: 'list', + raw: '', + ordered: isordered, + start: isordered ? +bull.slice(0, -1) : '', + loose: false, + items: [], + }; + bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; + if (this.options.pedantic) { + bull = isordered ? bull : '[*+-]'; + } + // Get next list item + const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); + let endsWithBlankLine = false; + // Check if current bullet point can start a new List Item + while (src) { + let endEarly = false; + let raw = ''; + let itemContents = ''; + if (!(cap = itemRegex.exec(src))) { + break; + } + if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) + break; + } + raw = cap[0]; + src = src.substring(raw.length); + let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); + let nextLine = src.split('\n', 1)[0]; + let blankLine = !line.trim(); + let indent = 0; + if (this.options.pedantic) { + indent = 2; + itemContents = line.trimStart(); + } + else if (blankLine) { + indent = cap[1].length + 1; + } + else { + indent = cap[2].search(/[^ ]/); // Find first non-space char + indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent + itemContents = line.slice(indent); + indent += cap[1].length; + } + if (blankLine && /^[ \t]*$/.test(nextLine)) { // Items begin with at most one blank line + raw += nextLine + '\n'; + src = src.substring(nextLine.length + 1); + endEarly = true; + } + if (!endEarly) { + const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); + const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); + const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); + const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); + const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'); + // Check if following lines should be included in List Item + while (src) { + const rawLine = src.split('\n', 1)[0]; + let nextLineWithoutTabs; + nextLine = rawLine; + // Re-align to follow commonmark nesting rules + if (this.options.pedantic) { + nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); + nextLineWithoutTabs = nextLine; + } + else { + nextLineWithoutTabs = nextLine.replace(/\t/g, ' '); + } + // End list item if found code fences + if (fencesBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of new heading + if (headingBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of html block + if (htmlBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of new bullet + if (nextBulletRegex.test(nextLine)) { + break; + } + // Horizontal rule found + if (hrRegex.test(nextLine)) { + break; + } + if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible + itemContents += '\n' + nextLineWithoutTabs.slice(indent); + } + else { + // not enough indentation + if (blankLine) { + break; + } + // paragraph continuation unless last line was a different block level element + if (line.replace(/\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block + break; + } + if (fencesBeginRegex.test(line)) { + break; + } + if (headingBeginRegex.test(line)) { + break; + } + if (hrRegex.test(line)) { + break; + } + itemContents += '\n' + nextLine; + } + if (!blankLine && !nextLine.trim()) { // Check if current line is blank + blankLine = true; + } + raw += rawLine + '\n'; + src = src.substring(rawLine.length + 1); + line = nextLineWithoutTabs.slice(indent); + } + } + if (!list.loose) { + // If the previous item ended with a blank line, the list is loose + if (endsWithBlankLine) { + list.loose = true; + } + else if (/\n[ \t]*\n[ \t]*$/.test(raw)) { + endsWithBlankLine = true; + } + } + let istask = null; + let ischecked; + // Check for task list items + if (this.options.gfm) { + istask = /^\[[ xX]\] /.exec(itemContents); + if (istask) { + ischecked = istask[0] !== '[ ] '; + itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); + } + } + list.items.push({ + type: 'list_item', + raw, + task: !!istask, + checked: ischecked, + loose: false, + text: itemContents, + tokens: [], + }); + list.raw += raw; + } + // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic + list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd(); + list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd(); + list.raw = list.raw.trimEnd(); + // Item child tokens handled here at end because we needed to have the final item to trim it first + for (let i = 0; i < list.items.length; i++) { + this.lexer.state.top = false; + list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); + if (!list.loose) { + // Check if list should be loose + const spacers = list.items[i].tokens.filter(t => t.type === 'space'); + const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); + list.loose = hasMultipleLineBreaks; + } + } + // Set all items to loose if list is loose + if (list.loose) { + for (let i = 0; i < list.items.length; i++) { + list.items[i].loose = true; + } + } + return list; + } + } + html(src) { + const cap = this.rules.block.html.exec(src); + if (cap) { + const token = { + type: 'html', + block: true, + raw: cap[0], + pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', + text: cap[0], + }; + return token; + } + } + def(src) { + const cap = this.rules.block.def.exec(src); + if (cap) { + const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); + const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; + const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; + return { + type: 'def', + tag, + raw: cap[0], + href, + title, + }; + } + } + table(src) { + const cap = this.rules.block.table.exec(src); + if (!cap) { + return; + } + if (!/[:|]/.test(cap[2])) { + // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading + return; + } + const headers = splitCells(cap[1]); + const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); + const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; + const item = { + type: 'table', + raw: cap[0], + header: [], + align: [], + rows: [], + }; + if (headers.length !== aligns.length) { + // header and align columns must be equal, rows can be different. + return; + } + for (const align of aligns) { + if (/^ *-+: *$/.test(align)) { + item.align.push('right'); + } + else if (/^ *:-+: *$/.test(align)) { + item.align.push('center'); + } + else if (/^ *:-+ *$/.test(align)) { + item.align.push('left'); + } + else { + item.align.push(null); + } + } + for (let i = 0; i < headers.length; i++) { + item.header.push({ + text: headers[i], + tokens: this.lexer.inline(headers[i]), + header: true, + align: item.align[i], + }); + } + for (const row of rows) { + item.rows.push(splitCells(row, item.header.length).map((cell, i) => { + return { + text: cell, + tokens: this.lexer.inline(cell), + header: false, + align: item.align[i], + }; + })); + } + return item; + } + lheading(src) { + const cap = this.rules.block.lheading.exec(src); + if (cap) { + return { + type: 'heading', + raw: cap[0], + depth: cap[2].charAt(0) === '=' ? 1 : 2, + text: cap[1], + tokens: this.lexer.inline(cap[1]), + }; + } + } + paragraph(src) { + const cap = this.rules.block.paragraph.exec(src); + if (cap) { + const text = cap[1].charAt(cap[1].length - 1) === '\n' + ? cap[1].slice(0, -1) + : cap[1]; + return { + type: 'paragraph', + raw: cap[0], + text, + tokens: this.lexer.inline(text), + }; + } + } + text(src) { + const cap = this.rules.block.text.exec(src); + if (cap) { + return { + type: 'text', + raw: cap[0], + text: cap[0], + tokens: this.lexer.inline(cap[0]), + }; + } + } + escape(src) { + const cap = this.rules.inline.escape.exec(src); + if (cap) { + return { + type: 'escape', + raw: cap[0], + text: escape$1(cap[1]), + }; + } + } + tag(src) { + const cap = this.rules.inline.tag.exec(src); + if (cap) { + if (!this.lexer.state.inLink && /^/i.test(cap[0])) { + this.lexer.state.inLink = false; + } + if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = true; + } + else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = false; + } + return { + type: 'html', + raw: cap[0], + inLink: this.lexer.state.inLink, + inRawBlock: this.lexer.state.inRawBlock, + block: false, + text: cap[0], + }; + } + } + link(src) { + const cap = this.rules.inline.link.exec(src); + if (cap) { + const trimmedUrl = cap[2].trim(); + if (!this.options.pedantic && /^$/.test(trimmedUrl))) { + return; + } + // ending angle bracket cannot be escaped + const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); + if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { + return; + } + } + else { + // find closing parenthesis + const lastParenIndex = findClosingBracket(cap[2], '()'); + if (lastParenIndex > -1) { + const start = cap[0].indexOf('!') === 0 ? 5 : 4; + const linkLen = start + cap[1].length + lastParenIndex; + cap[2] = cap[2].substring(0, lastParenIndex); + cap[0] = cap[0].substring(0, linkLen).trim(); + cap[3] = ''; + } + } + let href = cap[2]; + let title = ''; + if (this.options.pedantic) { + // split pedantic href and title + const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); + if (link) { + href = link[1]; + title = link[3]; + } + } + else { + title = cap[3] ? cap[3].slice(1, -1) : ''; + } + href = href.trim(); + if (/^$/.test(trimmedUrl))) { + // pedantic allows starting angle bracket without ending angle bracket + href = href.slice(1); + } + else { + href = href.slice(1, -1); + } + } + return outputLink(cap, { + href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, + title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title, + }, cap[0], this.lexer); + } + } + reflink(src, links) { + let cap; + if ((cap = this.rules.inline.reflink.exec(src)) + || (cap = this.rules.inline.nolink.exec(src))) { + const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); + const link = links[linkString.toLowerCase()]; + if (!link) { + const text = cap[0].charAt(0); + return { + type: 'text', + raw: text, + text, + }; + } + return outputLink(cap, link, cap[0], this.lexer); + } + } + emStrong(src, maskedSrc, prevChar = '') { + let match = this.rules.inline.emStrongLDelim.exec(src); + if (!match) + return; + // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well + if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) + return; + const nextChar = match[1] || match[2] || ''; + if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { + // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) + const lLength = [...match[0]].length - 1; + let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; + const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; + endReg.lastIndex = 0; + // Clip maskedSrc to same section of string as src (move to lexer?) + maskedSrc = maskedSrc.slice(-1 * src.length + lLength); + while ((match = endReg.exec(maskedSrc)) != null) { + rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; + if (!rDelim) + continue; // skip single * in __abc*abc__ + rLength = [...rDelim].length; + if (match[3] || match[4]) { // found another Left Delim + delimTotal += rLength; + continue; + } + else if (match[5] || match[6]) { // either Left or Right Delim + if (lLength % 3 && !((lLength + rLength) % 3)) { + midDelimTotal += rLength; + continue; // CommonMark Emphasis Rules 9-10 + } + } + delimTotal -= rLength; + if (delimTotal > 0) + continue; // Haven't found enough closing delimiters + // Remove extra characters. *a*** -> *a* + rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); + // char length can be >1 for unicode characters; + const lastCharLength = [...match[0]][0].length; + const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); + // Create `em` if smallest delimiter has odd char count. *a*** + if (Math.min(lLength, rLength) % 2) { + const text = raw.slice(1, -1); + return { + type: 'em', + raw, + text, + tokens: this.lexer.inlineTokens(text), + }; + } + // Create 'strong' if smallest delimiter has even char count. **a*** + const text = raw.slice(2, -2); + return { + type: 'strong', + raw, + text, + tokens: this.lexer.inlineTokens(text), + }; + } + } + } + codespan(src) { + const cap = this.rules.inline.code.exec(src); + if (cap) { + let text = cap[2].replace(/\n/g, ' '); + const hasNonSpaceChars = /[^ ]/.test(text); + const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); + if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { + text = text.substring(1, text.length - 1); + } + text = escape$1(text, true); + return { + type: 'codespan', + raw: cap[0], + text, + }; + } + } + br(src) { + const cap = this.rules.inline.br.exec(src); + if (cap) { + return { + type: 'br', + raw: cap[0], + }; + } + } + del(src) { + const cap = this.rules.inline.del.exec(src); + if (cap) { + return { + type: 'del', + raw: cap[0], + text: cap[2], + tokens: this.lexer.inlineTokens(cap[2]), + }; + } + } + autolink(src) { + const cap = this.rules.inline.autolink.exec(src); + if (cap) { + let text, href; + if (cap[2] === '@') { + text = escape$1(cap[1]); + href = 'mailto:' + text; + } + else { + text = escape$1(cap[1]); + href = text; + } + return { + type: 'link', + raw: cap[0], + text, + href, + tokens: [ + { + type: 'text', + raw: text, + text, + }, + ], + }; + } + } + url(src) { + let cap; + if (cap = this.rules.inline.url.exec(src)) { + let text, href; + if (cap[2] === '@') { + text = escape$1(cap[0]); + href = 'mailto:' + text; + } + else { + // do extended autolink path validation + let prevCapZero; + do { + prevCapZero = cap[0]; + cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; + } while (prevCapZero !== cap[0]); + text = escape$1(cap[0]); + if (cap[1] === 'www.') { + href = 'http://' + cap[0]; + } + else { + href = cap[0]; + } + } + return { + type: 'link', + raw: cap[0], + text, + href, + tokens: [ + { + type: 'text', + raw: text, + text, + }, + ], + }; + } + } + inlineText(src) { + const cap = this.rules.inline.text.exec(src); + if (cap) { + let text; + if (this.lexer.state.inRawBlock) { + text = cap[0]; + } + else { + text = escape$1(cap[0]); + } + return { + type: 'text', + raw: cap[0], + text, + }; + } + } +} + +/** + * Block-Level Grammar + */ +const newline = /^(?:[ \t]*(?:\n|$))+/; +const blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; +const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; +const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; +const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; +const bullet = /(?:[*+-]|\d{1,9}[.)])/; +const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) + .replace(/bull/g, bullet) // lists can interrupt + .replace(/blockCode/g, /(?: {4}| {0,3}\t)/) // indented code blocks can interrupt + .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt + .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt + .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt + .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt + .getRegex(); +const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; +const blockText = /^[^\n]+/; +const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; +const def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/) + .replace('label', _blockLabel) + .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) + .getRegex(); +const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) + .replace(/bull/g, bullet) + .getRegex(); +const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' + + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' + + '|tr|track|ul'; +const _comment = /|$))/; +const html = edit('^ {0,3}(?:' // optional indentation + + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) + + '|comment[^\\n]*(\\n+|$)' // (2) + + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) + + '|\\n*|$)' // (4) + + '|\\n*|$)' // (5) + + '|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (6) + + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) open tag + + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) closing tag + + ')', 'i') + .replace('comment', _comment) + .replace('tag', _tag) + .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) + .getRegex(); +const paragraph = edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs + .replace('|table', '') + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // pars can be interrupted by type (6) html blocks + .getRegex(); +const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) + .replace('paragraph', paragraph) + .getRegex(); +/** + * Normal Block Grammar + */ +const blockNormal = { + blockquote, + code: blockCode, + def, + fences, + heading, + hr, + html, + lheading, + list, + newline, + paragraph, + table: noopTest, + text: blockText, +}; +/** + * GFM Block Grammar + */ +const gfmTable = edit('^ *([^\\n ].*)\\n' // Header + + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align + + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('blockquote', ' {0,3}>') + .replace('code', '(?: {4}| {0,3}\t)[^\\n]') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // tables can be interrupted by type (6) html blocks + .getRegex(); +const blockGfm = { + ...blockNormal, + table: gfmTable, + paragraph: edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs + .replace('table', gfmTable) // interrupt paragraphs with table + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // pars can be interrupted by type (6) html blocks + .getRegex(), +}; +/** + * Pedantic grammar (original John Gruber's loose markdown specification) + */ +const blockPedantic = { + ...blockNormal, + html: edit('^ *(?:comment *(?:\\n|\\s*$)' + + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag + + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') + .replace('comment', _comment) + .replace(/tag/g, '(?!(?:' + + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') + .getRegex(), + def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, + heading: /^(#{1,6})(.*)(?:\n+|$)/, + fences: noopTest, // fences not supported + lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + paragraph: edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' *#{1,6} *[^\n]') + .replace('lheading', lheading) + .replace('|table', '') + .replace('blockquote', ' {0,3}>') + .replace('|fences', '') + .replace('|list', '') + .replace('|html', '') + .replace('|tag', '') + .getRegex(), +}; +/** + * Inline-Level Grammar + */ +const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; +const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; +const br = /^( {2,}|\\)\n(?!\s*$)/; +const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ +const blockSkip = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g; +const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') + .replace(/punct/g, _punctuation) + .getRegex(); +const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong + + '|[^*]+(?=[^*])' // Consume to delim + + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter + + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter + + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter + + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter + + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter + + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter + .replace(/punct/g, _punctuation) + .getRegex(); +// (6) Not allowed for _ +const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong + + '|[^_]+(?=[^_])' // Consume to delim + + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter + + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter + + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter + + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter + + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter + .replace(/punct/g, _punctuation) + .getRegex(); +const anyPunctuation = edit(/\\([punct])/, 'gu') + .replace(/punct/g, _punctuation) + .getRegex(); +const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) + .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) + .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) + .getRegex(); +const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); +const tag = edit('^comment' + + '|^' // self-closing tag + + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag + + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. + + '|^' // declaration, e.g. + + '|^') // CDATA section + .replace('comment', _inlineComment) + .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) + .getRegex(); +const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; +const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) + .replace('label', _inlineLabel) + .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) + .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) + .getRegex(); +const reflink = edit(/^!?\[(label)\]\[(ref)\]/) + .replace('label', _inlineLabel) + .replace('ref', _blockLabel) + .getRegex(); +const nolink = edit(/^!?\[(ref)\](?:\[\])?/) + .replace('ref', _blockLabel) + .getRegex(); +const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') + .replace('reflink', reflink) + .replace('nolink', nolink) + .getRegex(); +/** + * Normal Inline Grammar + */ +const inlineNormal = { + _backpedal: noopTest, // only used for GFM url + anyPunctuation, + autolink, + blockSkip, + br, + code: inlineCode, + del: noopTest, + emStrongLDelim, + emStrongRDelimAst, + emStrongRDelimUnd, + escape, + link, + nolink, + punctuation, + reflink, + reflinkSearch, + tag, + text: inlineText, + url: noopTest, +}; +/** + * Pedantic Inline Grammar + */ +const inlinePedantic = { + ...inlineNormal, + link: edit(/^!?\[(label)\]\((.*?)\)/) + .replace('label', _inlineLabel) + .getRegex(), + reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) + .replace('label', _inlineLabel) + .getRegex(), +}; +/** + * GFM Inline Grammar + */ +const inlineGfm = { + ...inlineNormal, + escape: edit(escape).replace('])', '~|])').getRegex(), + url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') + .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) + .getRegex(), + _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, + del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, + text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + // newline + if (token = this.tokenizer.space(src)) { + src = src.substring(token.raw.length); + if (token.raw.length === 1 && tokens.length > 0) { + // if there's a single \n as a spacer, it's terminating the last line, + // so move it there so that we don't get unnecessary paragraph tags + tokens[tokens.length - 1].raw += '\n'; + } + else { + tokens.push(token); + } + continue; + } + // code + if (token = this.tokenizer.code(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + // An indented code block cannot interrupt a paragraph. + if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + continue; + } + // fences + if (token = this.tokenizer.fences(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // heading + if (token = this.tokenizer.heading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // hr + if (token = this.tokenizer.hr(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // blockquote + if (token = this.tokenizer.blockquote(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // list + if (token = this.tokenizer.list(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // html + if (token = this.tokenizer.html(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // def + if (token = this.tokenizer.def(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.raw; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else if (!this.tokens.links[token.tag]) { + this.tokens.links[token.tag] = { + href: token.href, + title: token.title, + }; + } + continue; + } + // table (gfm) + if (token = this.tokenizer.table(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // lheading + if (token = this.tokenizer.lheading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // top-level paragraph + // prevent paragraph consuming extensions by clipping 'src' to extension start + cutSrc = src; + if (this.options.extensions && this.options.extensions.startBlock) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startBlock.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === 'number' && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { + lastToken = tokens[tokens.length - 1]; + if (lastParagraphClipped && lastToken?.type === 'paragraph') { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + lastParagraphClipped = (cutSrc.length !== src.length); + src = src.substring(token.raw.length); + continue; + } + // text + if (token = this.tokenizer.text(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === 'text') { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } + else { + throw new Error(errMsg); + } + } + } + this.state.top = true; + return tokens; + } + inline(src, tokens = []) { + this.inlineQueue.push({ src, tokens }); + return tokens; + } + /** + * Lexing/Compiling + */ + inlineTokens(src, tokens = []) { + let token, lastToken, cutSrc; + // String with links masked to avoid interference with em and strong + let maskedSrc = src; + let match; + let keepPrevChar, prevChar; + // Mask out reflinks + if (this.tokens.links) { + const links = Object.keys(this.tokens.links); + if (links.length > 0) { + while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { + if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { + maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); + } + } + } + } + // Mask out other blocks + while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + } + // Mask out escaped characters + while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + } + while (src) { + if (!keepPrevChar) { + prevChar = ''; + } + keepPrevChar = false; + // extensions + if (this.options.extensions + && this.options.extensions.inline + && this.options.extensions.inline.some((extTokenizer) => { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + // escape + if (token = this.tokenizer.escape(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // tag + if (token = this.tokenizer.tag(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === 'text' && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + // link + if (token = this.tokenizer.link(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // reflink, nolink + if (token = this.tokenizer.reflink(src, this.tokens.links)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === 'text' && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + // em & strong + if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // code + if (token = this.tokenizer.codespan(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // br + if (token = this.tokenizer.br(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // del (gfm) + if (token = this.tokenizer.del(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // autolink + if (token = this.tokenizer.autolink(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // url (gfm) + if (!this.state.inLink && (token = this.tokenizer.url(src))) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // text + // prevent inlineText consuming extensions by clipping 'src' to extension start + cutSrc = src; + if (this.options.extensions && this.options.extensions.startInline) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startInline.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === 'number' && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (token = this.tokenizer.inlineText(cutSrc)) { + src = src.substring(token.raw.length); + if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started + prevChar = token.raw.slice(-1); + } + keepPrevChar = true; + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } + else { + throw new Error(errMsg); + } + } + } + return tokens; + } +} + +/** + * Renderer + */ +class _Renderer { + options; + parser; // set by the parser + constructor(options) { + this.options = options || exports.defaults; + } + space(token) { + return ''; + } + code({ text, lang, escaped }) { + const langString = (lang || '').match(/^\S*/)?.[0]; + const code = text.replace(/\n$/, '') + '\n'; + if (!langString) { + return '
'
+                + (escaped ? code : escape$1(code, true))
+                + '
\n'; + } + return '
'
+            + (escaped ? code : escape$1(code, true))
+            + '
\n'; + } + blockquote({ tokens }) { + const body = this.parser.parse(tokens); + return `
\n${body}
\n`; + } + html({ text }) { + return text; + } + heading({ tokens, depth }) { + return `${this.parser.parseInline(tokens)}\n`; + } + hr(token) { + return '
\n'; + } + list(token) { + const ordered = token.ordered; + const start = token.start; + let body = ''; + for (let j = 0; j < token.items.length; j++) { + const item = token.items[j]; + body += this.listitem(item); + } + const type = ordered ? 'ol' : 'ul'; + const startAttr = (ordered && start !== 1) ? (' start="' + start + '"') : ''; + return '<' + type + startAttr + '>\n' + body + '\n'; + } + listitem(item) { + let itemBody = ''; + if (item.task) { + const checkbox = this.checkbox({ checked: !!item.checked }); + if (item.loose) { + if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') { + item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; + if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { + item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; + } + } + else { + item.tokens.unshift({ + type: 'text', + raw: checkbox + ' ', + text: checkbox + ' ', + }); + } + } + else { + itemBody += checkbox + ' '; + } + } + itemBody += this.parser.parse(item.tokens, !!item.loose); + return `
  • ${itemBody}
  • \n`; + } + checkbox({ checked }) { + return ''; + } + paragraph({ tokens }) { + return `

    ${this.parser.parseInline(tokens)}

    \n`; + } + table(token) { + let header = ''; + // header + let cell = ''; + for (let j = 0; j < token.header.length; j++) { + cell += this.tablecell(token.header[j]); + } + header += this.tablerow({ text: cell }); + let body = ''; + for (let j = 0; j < token.rows.length; j++) { + const row = token.rows[j]; + cell = ''; + for (let k = 0; k < row.length; k++) { + cell += this.tablecell(row[k]); + } + body += this.tablerow({ text: cell }); + } + if (body) + body = `${body}`; + return '\n' + + '\n' + + header + + '\n' + + body + + '
    \n'; + } + tablerow({ text }) { + return `\n${text}\n`; + } + tablecell(token) { + const content = this.parser.parseInline(token.tokens); + const type = token.header ? 'th' : 'td'; + const tag = token.align + ? `<${type} align="${token.align}">` + : `<${type}>`; + return tag + content + `\n`; + } + /** + * span level renderer + */ + strong({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + em({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + codespan({ text }) { + return `${text}`; + } + br(token) { + return '
    '; + } + del({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + link({ href, title, tokens }) { + const text = this.parser.parseInline(tokens); + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = '
    '; + return out; + } + image({ href, title, text }) { + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = `${text} { + const tokens = genericToken[childTokens].flat(Infinity); + values = values.concat(this.walkTokens(tokens, callback)); + }); + } + else if (genericToken.tokens) { + values = values.concat(this.walkTokens(genericToken.tokens, callback)); + } + } + } + } + return values; + } + use(...args) { + const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; + args.forEach((pack) => { + // copy options to new object + const opts = { ...pack }; + // set async to true if it was set to true before + opts.async = this.defaults.async || opts.async || false; + // ==-- Parse "addon" extensions --== // + if (pack.extensions) { + pack.extensions.forEach((ext) => { + if (!ext.name) { + throw new Error('extension name required'); + } + if ('renderer' in ext) { // Renderer extensions + const prevRenderer = extensions.renderers[ext.name]; + if (prevRenderer) { + // Replace extension with func to run new extension but fall back if false + extensions.renderers[ext.name] = function (...args) { + let ret = ext.renderer.apply(this, args); + if (ret === false) { + ret = prevRenderer.apply(this, args); + } + return ret; + }; + } + else { + extensions.renderers[ext.name] = ext.renderer; + } + } + if ('tokenizer' in ext) { // Tokenizer Extensions + if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { + throw new Error("extension level must be 'block' or 'inline'"); + } + const extLevel = extensions[ext.level]; + if (extLevel) { + extLevel.unshift(ext.tokenizer); + } + else { + extensions[ext.level] = [ext.tokenizer]; + } + if (ext.start) { // Function to check for start of token + if (ext.level === 'block') { + if (extensions.startBlock) { + extensions.startBlock.push(ext.start); + } + else { + extensions.startBlock = [ext.start]; + } + } + else if (ext.level === 'inline') { + if (extensions.startInline) { + extensions.startInline.push(ext.start); + } + else { + extensions.startInline = [ext.start]; + } + } + } + } + if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens + extensions.childTokens[ext.name] = ext.childTokens; + } + }); + opts.extensions = extensions; + } + // ==-- Parse "overwrite" extensions --== // + if (pack.renderer) { + const renderer = this.defaults.renderer || new _Renderer(this.defaults); + for (const prop in pack.renderer) { + if (!(prop in renderer)) { + throw new Error(`renderer '${prop}' does not exist`); + } + if (['options', 'parser'].includes(prop)) { + // ignore options property + continue; + } + const rendererProp = prop; + const rendererFunc = pack.renderer[rendererProp]; + const prevRenderer = renderer[rendererProp]; + // Replace renderer with func to run extension, but fall back if false + renderer[rendererProp] = (...args) => { + let ret = rendererFunc.apply(renderer, args); + if (ret === false) { + ret = prevRenderer.apply(renderer, args); + } + return ret || ''; + }; + } + opts.renderer = renderer; + } + if (pack.tokenizer) { + const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); + for (const prop in pack.tokenizer) { + if (!(prop in tokenizer)) { + throw new Error(`tokenizer '${prop}' does not exist`); + } + if (['options', 'rules', 'lexer'].includes(prop)) { + // ignore options, rules, and lexer properties + continue; + } + const tokenizerProp = prop; + const tokenizerFunc = pack.tokenizer[tokenizerProp]; + const prevTokenizer = tokenizer[tokenizerProp]; + // Replace tokenizer with func to run extension, but fall back if false + // @ts-expect-error cannot type tokenizer function dynamically + tokenizer[tokenizerProp] = (...args) => { + let ret = tokenizerFunc.apply(tokenizer, args); + if (ret === false) { + ret = prevTokenizer.apply(tokenizer, args); + } + return ret; + }; + } + opts.tokenizer = tokenizer; + } + // ==-- Parse Hooks extensions --== // + if (pack.hooks) { + const hooks = this.defaults.hooks || new _Hooks(); + for (const prop in pack.hooks) { + if (!(prop in hooks)) { + throw new Error(`hook '${prop}' does not exist`); + } + if (['options', 'block'].includes(prop)) { + // ignore options and block properties + continue; + } + const hooksProp = prop; + const hooksFunc = pack.hooks[hooksProp]; + const prevHook = hooks[hooksProp]; + if (_Hooks.passThroughHooks.has(prop)) { + // @ts-expect-error cannot type hook function dynamically + hooks[hooksProp] = (arg) => { + if (this.defaults.async) { + return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { + return prevHook.call(hooks, ret); + }); + } + const ret = hooksFunc.call(hooks, arg); + return prevHook.call(hooks, ret); + }; + } + else { + // @ts-expect-error cannot type hook function dynamically + hooks[hooksProp] = (...args) => { + let ret = hooksFunc.apply(hooks, args); + if (ret === false) { + ret = prevHook.apply(hooks, args); + } + return ret; + }; + } + } + opts.hooks = hooks; + } + // ==-- Parse WalkTokens extensions --== // + if (pack.walkTokens) { + const walkTokens = this.defaults.walkTokens; + const packWalktokens = pack.walkTokens; + opts.walkTokens = function (token) { + let values = []; + values.push(packWalktokens.call(this, token)); + if (walkTokens) { + values = values.concat(walkTokens.call(this, token)); + } + return values; + }; + } + this.defaults = { ...this.defaults, ...opts }; + }); + return this; + } + setOptions(opt) { + this.defaults = { ...this.defaults, ...opt }; + return this; + } + lexer(src, options) { + return _Lexer.lex(src, options ?? this.defaults); + } + parser(tokens, options) { + return _Parser.parse(tokens, options ?? this.defaults); + } + parseMarkdown(blockType) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const parse = (src, options) => { + const origOpt = { ...options }; + const opt = { ...this.defaults, ...origOpt }; + const throwError = this.onError(!!opt.silent, !!opt.async); + // throw error if an extension set async to true but parse was called with async: false + if (this.defaults.async === true && origOpt.async === false) { + return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.')); + } + // throw error in case of non string input + if (typeof src === 'undefined' || src === null) { + return throwError(new Error('marked(): input parameter is undefined or null')); + } + if (typeof src !== 'string') { + return throwError(new Error('marked(): input parameter is of type ' + + Object.prototype.toString.call(src) + ', string expected')); + } + if (opt.hooks) { + opt.hooks.options = opt; + opt.hooks.block = blockType; + } + const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline); + const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline); + if (opt.async) { + return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) + .then(src => lexer(src, opt)) + .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) + .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) + .then(tokens => parser(tokens, opt)) + .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) + .catch(throwError); + } + try { + if (opt.hooks) { + src = opt.hooks.preprocess(src); + } + let tokens = lexer(src, opt); + if (opt.hooks) { + tokens = opt.hooks.processAllTokens(tokens); + } + if (opt.walkTokens) { + this.walkTokens(tokens, opt.walkTokens); + } + let html = parser(tokens, opt); + if (opt.hooks) { + html = opt.hooks.postprocess(html); + } + return html; + } + catch (e) { + return throwError(e); + } + }; + return parse; + } + onError(silent, async) { + return (e) => { + e.message += '\nPlease report this to https://github.com/markedjs/marked.'; + if (silent) { + const msg = '

    An error occurred:

    '
    +                    + escape$1(e.message + '', true)
    +                    + '
    '; + if (async) { + return Promise.resolve(msg); + } + return msg; + } + if (async) { + return Promise.reject(e); + } + throw e; + }; + } +} + +const markedInstance = new Marked(); +function marked(src, opt) { + return markedInstance.parse(src, opt); +} +/** + * Sets the default options. + * + * @param options Hash of options + */ +marked.options = + marked.setOptions = function (options) { + markedInstance.setOptions(options); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; + }; +/** + * Gets the original marked default options. + */ +marked.getDefaults = _getDefaults; +marked.defaults = exports.defaults; +/** + * Use Extension + */ +marked.use = function (...args) { + markedInstance.use(...args); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; +}; +/** + * Run callback for every token + */ +marked.walkTokens = function (tokens, callback) { + return markedInstance.walkTokens(tokens, callback); +}; +/** + * Compiles markdown to HTML without enclosing `p` tag. + * + * @param src String of markdown source to be compiled + * @param options Hash of options + * @return String of compiled HTML + */ +marked.parseInline = markedInstance.parseInline; +/** + * Expose + */ +marked.Parser = _Parser; +marked.parser = _Parser.parse; +marked.Renderer = _Renderer; +marked.TextRenderer = _TextRenderer; +marked.Lexer = _Lexer; +marked.lexer = _Lexer.lex; +marked.Tokenizer = _Tokenizer; +marked.Hooks = _Hooks; +marked.parse = marked; +const options = marked.options; +const setOptions = marked.setOptions; +const use = marked.use; +const walkTokens = marked.walkTokens; +const parseInline = marked.parseInline; +const parse = marked; +const parser = _Parser.parse; +const lexer = _Lexer.lex; + +exports.Hooks = _Hooks; +exports.Lexer = _Lexer; +exports.Marked = Marked; +exports.Parser = _Parser; +exports.Renderer = _Renderer; +exports.TextRenderer = _TextRenderer; +exports.Tokenizer = _Tokenizer; +exports.getDefaults = _getDefaults; +exports.lexer = lexer; +exports.marked = marked; +exports.options = options; +exports.parse = parse; +exports.parseInline = parseInline; +exports.parser = parser; +exports.setOptions = setOptions; +exports.use = use; +exports.walkTokens = walkTokens; +//# sourceMappingURL=marked.cjs.map diff --git a/node_modules/marked/lib/marked.cjs.map b/node_modules/marked/lib/marked.cjs.map new file mode 100644 index 0000000..8200dc8 --- /dev/null +++ b/node_modules/marked/lib/marked.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"marked.cjs","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket, } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n","import { edit, noopTest, } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape, } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
    \\n${body}
    \\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
    \\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/marked/lib/marked.d.cts b/node_modules/marked/lib/marked.d.cts new file mode 100644 index 0000000..5404b07 --- /dev/null +++ b/node_modules/marked/lib/marked.d.cts @@ -0,0 +1,667 @@ +// Generated by dts-bundle-generator v9.5.1 + +export type MarkedToken = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del); +export type Token = (MarkedToken | Tokens.Generic); +export declare namespace Tokens { + interface Space { + type: "space"; + raw: string; + } + interface Code { + type: "code"; + raw: string; + codeBlockStyle?: "indented" | undefined; + lang?: string | undefined; + text: string; + escaped?: boolean; + } + interface Heading { + type: "heading"; + raw: string; + depth: number; + text: string; + tokens: Token[]; + } + interface Table { + type: "table"; + raw: string; + align: Array<"center" | "left" | "right" | null>; + header: TableCell[]; + rows: TableCell[][]; + } + interface TableRow { + text: string; + } + interface TableCell { + text: string; + tokens: Token[]; + header: boolean; + align: "center" | "left" | "right" | null; + } + interface Hr { + type: "hr"; + raw: string; + } + interface Blockquote { + type: "blockquote"; + raw: string; + text: string; + tokens: Token[]; + } + interface List { + type: "list"; + raw: string; + ordered: boolean; + start: number | ""; + loose: boolean; + items: ListItem[]; + } + interface ListItem { + type: "list_item"; + raw: string; + task: boolean; + checked?: boolean | undefined; + loose: boolean; + text: string; + tokens: Token[]; + } + interface Checkbox { + checked: boolean; + } + interface Paragraph { + type: "paragraph"; + raw: string; + pre?: boolean | undefined; + text: string; + tokens: Token[]; + } + interface HTML { + type: "html"; + raw: string; + pre: boolean; + text: string; + block: boolean; + } + interface Text { + type: "text"; + raw: string; + text: string; + tokens?: Token[]; + } + interface Def { + type: "def"; + raw: string; + tag: string; + href: string; + title: string; + } + interface Escape { + type: "escape"; + raw: string; + text: string; + } + interface Tag { + type: "text" | "html"; + raw: string; + inLink: boolean; + inRawBlock: boolean; + text: string; + block: boolean; + } + interface Link { + type: "link"; + raw: string; + href: string; + title?: string | null; + text: string; + tokens: Token[]; + } + interface Image { + type: "image"; + raw: string; + href: string; + title: string | null; + text: string; + } + interface Strong { + type: "strong"; + raw: string; + text: string; + tokens: Token[]; + } + interface Em { + type: "em"; + raw: string; + text: string; + tokens: Token[]; + } + interface Codespan { + type: "codespan"; + raw: string; + text: string; + } + interface Br { + type: "br"; + raw: string; + } + interface Del { + type: "del"; + raw: string; + text: string; + tokens: Token[]; + } + interface Generic { + [index: string]: any; + type: string; + raw: string; + tokens?: Token[] | undefined; + } +} +export type Links = Record>; +export type TokensList = Token[] & { + links: Links; +}; +/** + * Renderer + */ +declare class _Renderer { + options: MarkedOptions; + parser: _Parser; + constructor(options?: MarkedOptions); + space(token: Tokens.Space): string; + code({ text, lang, escaped }: Tokens.Code): string; + blockquote({ tokens }: Tokens.Blockquote): string; + html({ text }: Tokens.HTML | Tokens.Tag): string; + heading({ tokens, depth }: Tokens.Heading): string; + hr(token: Tokens.Hr): string; + list(token: Tokens.List): string; + listitem(item: Tokens.ListItem): string; + checkbox({ checked }: Tokens.Checkbox): string; + paragraph({ tokens }: Tokens.Paragraph): string; + table(token: Tokens.Table): string; + tablerow({ text }: Tokens.TableRow): string; + tablecell(token: Tokens.TableCell): string; + /** + * span level renderer + */ + strong({ tokens }: Tokens.Strong): string; + em({ tokens }: Tokens.Em): string; + codespan({ text }: Tokens.Codespan): string; + br(token: Tokens.Br): string; + del({ tokens }: Tokens.Del): string; + link({ href, title, tokens }: Tokens.Link): string; + image({ href, title, text }: Tokens.Image): string; + text(token: Tokens.Text | Tokens.Escape | Tokens.Tag): string; +} +/** + * TextRenderer + * returns only the textual part of the token + */ +declare class _TextRenderer { + strong({ text }: Tokens.Strong): string; + em({ text }: Tokens.Em): string; + codespan({ text }: Tokens.Codespan): string; + del({ text }: Tokens.Del): string; + html({ text }: Tokens.HTML | Tokens.Tag): string; + text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): string; + link({ text }: Tokens.Link): string; + image({ text }: Tokens.Image): string; + br(): string; +} +/** + * Parsing & Compiling + */ +declare class _Parser { + options: MarkedOptions; + renderer: _Renderer; + textRenderer: _TextRenderer; + constructor(options?: MarkedOptions); + /** + * Static Parse Method + */ + static parse(tokens: Token[], options?: MarkedOptions): string; + /** + * Static Parse Inline Method + */ + static parseInline(tokens: Token[], options?: MarkedOptions): string; + /** + * Parse Loop + */ + parse(tokens: Token[], top?: boolean): string; + /** + * Parse Inline Tokens + */ + parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string; +} +declare const blockNormal: { + blockquote: RegExp; + code: RegExp; + def: RegExp; + fences: RegExp; + heading: RegExp; + hr: RegExp; + html: RegExp; + lheading: RegExp; + list: RegExp; + newline: RegExp; + paragraph: RegExp; + table: RegExp; + text: RegExp; +}; +export type BlockKeys = keyof typeof blockNormal; +declare const inlineNormal: { + _backpedal: RegExp; + anyPunctuation: RegExp; + autolink: RegExp; + blockSkip: RegExp; + br: RegExp; + code: RegExp; + del: RegExp; + emStrongLDelim: RegExp; + emStrongRDelimAst: RegExp; + emStrongRDelimUnd: RegExp; + escape: RegExp; + link: RegExp; + nolink: RegExp; + punctuation: RegExp; + reflink: RegExp; + reflinkSearch: RegExp; + tag: RegExp; + text: RegExp; + url: RegExp; +}; +export type InlineKeys = keyof typeof inlineNormal; +export interface Rules { + block: Record; + inline: Record; +} +/** + * Tokenizer + */ +declare class _Tokenizer { + options: MarkedOptions; + rules: Rules; + lexer: _Lexer; + constructor(options?: MarkedOptions); + space(src: string): Tokens.Space | undefined; + code(src: string): Tokens.Code | undefined; + fences(src: string): Tokens.Code | undefined; + heading(src: string): Tokens.Heading | undefined; + hr(src: string): Tokens.Hr | undefined; + blockquote(src: string): Tokens.Blockquote | undefined; + list(src: string): Tokens.List | undefined; + html(src: string): Tokens.HTML | undefined; + def(src: string): Tokens.Def | undefined; + table(src: string): Tokens.Table | undefined; + lheading(src: string): Tokens.Heading | undefined; + paragraph(src: string): Tokens.Paragraph | undefined; + text(src: string): Tokens.Text | undefined; + escape(src: string): Tokens.Escape | undefined; + tag(src: string): Tokens.Tag | undefined; + link(src: string): Tokens.Link | Tokens.Image | undefined; + reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined; + emStrong(src: string, maskedSrc: string, prevChar?: string): Tokens.Em | Tokens.Strong | undefined; + codespan(src: string): Tokens.Codespan | undefined; + br(src: string): Tokens.Br | undefined; + del(src: string): Tokens.Del | undefined; + autolink(src: string): Tokens.Link | undefined; + url(src: string): Tokens.Link | undefined; + inlineText(src: string): Tokens.Text | undefined; +} +declare class _Hooks { + options: MarkedOptions; + block: boolean | undefined; + constructor(options?: MarkedOptions); + static passThroughHooks: Set; + /** + * Process markdown before marked + */ + preprocess(markdown: string): string; + /** + * Process HTML after marked is finished + */ + postprocess(html: string): string; + /** + * Process all tokens before walk tokens + */ + processAllTokens(tokens: Token[] | TokensList): Token[] | TokensList; + /** + * Provide function to tokenize markdown + */ + provideLexer(): typeof _Lexer.lexInline; + /** + * Provide function to parse tokens + */ + provideParser(): typeof _Parser.parse; +} +export interface TokenizerThis { + lexer: _Lexer; +} +export type TokenizerExtensionFunction = (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; +export type TokenizerStartFunction = (this: TokenizerThis, src: string) => number | void; +export interface TokenizerExtension { + name: string; + level: "block" | "inline"; + start?: TokenizerStartFunction | undefined; + tokenizer: TokenizerExtensionFunction; + childTokens?: string[] | undefined; +} +export interface RendererThis { + parser: _Parser; +} +export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; +export interface RendererExtension { + name: string; + renderer: RendererExtensionFunction; +} +export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); +export type HooksApi = Omit<_Hooks, "constructor" | "options" | "block">; +export type HooksObject = { + [K in keyof HooksApi]?: (this: _Hooks, ...args: Parameters) => ReturnType | Promise>; +}; +export type RendererApi = Omit<_Renderer, "constructor" | "options" | "parser">; +export type RendererObject = { + [K in keyof RendererApi]?: (this: _Renderer, ...args: Parameters) => ReturnType | false; +}; +export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">; +export type TokenizerObject = { + [K in keyof TokenizerApi]?: (this: _Tokenizer, ...args: Parameters) => ReturnType | false; +}; +export interface MarkedExtension { + /** + * True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string. + */ + async?: boolean; + /** + * Enable GFM line breaks. This option requires the gfm option to be true. + */ + breaks?: boolean | undefined; + /** + * Add tokenizers and renderers to marked + */ + extensions?: TokenizerAndRendererExtension[] | undefined | null; + /** + * Enable GitHub flavored markdown. + */ + gfm?: boolean | undefined; + /** + * Hooks are methods that hook into some part of marked. + * preprocess is called to process markdown before sending it to marked. + * processAllTokens is called with the TokensList before walkTokens. + * postprocess is called to process html after marked has finished parsing. + * provideLexer is called to provide a function to tokenize markdown. + * provideParser is called to provide a function to parse tokens. + */ + hooks?: HooksObject | undefined | null; + /** + * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior. + */ + pedantic?: boolean | undefined; + /** + * Type: object Default: new Renderer() + * + * An object containing functions to render tokens to HTML. + */ + renderer?: RendererObject | undefined | null; + /** + * Shows an HTML error message when rendering fails. + */ + silent?: boolean | undefined; + /** + * The tokenizer defines how to turn markdown text into tokens. + */ + tokenizer?: TokenizerObject | undefined | null; + /** + * The walkTokens function gets called with every token. + * Child tokens are called before moving on to sibling tokens. + * Each token is passed by reference so updates are persisted when passed to the parser. + * The return value of the function is ignored. + */ + walkTokens?: ((token: Token) => void | Promise) | undefined | null; +} +export interface MarkedOptions extends Omit { + /** + * Hooks are methods that hook into some part of marked. + */ + hooks?: _Hooks | undefined | null; + /** + * Type: object Default: new Renderer() + * + * An object containing functions to render tokens to HTML. + */ + renderer?: _Renderer | undefined | null; + /** + * The tokenizer defines how to turn markdown text into tokens. + */ + tokenizer?: _Tokenizer | undefined | null; + /** + * Custom extensions + */ + extensions?: null | { + renderers: { + [name: string]: RendererExtensionFunction; + }; + childTokens: { + [name: string]: string[]; + }; + inline?: TokenizerExtensionFunction[]; + block?: TokenizerExtensionFunction[]; + startInline?: TokenizerStartFunction[]; + startBlock?: TokenizerStartFunction[]; + }; + /** + * walkTokens function returns array of values for Promise.all + */ + walkTokens?: null | ((token: Token) => void | Promise | (void | Promise)[]); +} +/** + * Block Lexer + */ +declare class _Lexer { + tokens: TokensList; + options: MarkedOptions; + state: { + inLink: boolean; + inRawBlock: boolean; + top: boolean; + }; + private tokenizer; + private inlineQueue; + constructor(options?: MarkedOptions); + /** + * Expose Rules + */ + static get rules(): { + block: { + normal: { + blockquote: RegExp; + code: RegExp; + def: RegExp; + fences: RegExp; + heading: RegExp; + hr: RegExp; + html: RegExp; + lheading: RegExp; + list: RegExp; + newline: RegExp; + paragraph: RegExp; + table: RegExp; + text: RegExp; + }; + gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; + pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; + }; + inline: { + normal: { + _backpedal: RegExp; + anyPunctuation: RegExp; + autolink: RegExp; + blockSkip: RegExp; + br: RegExp; + code: RegExp; + del: RegExp; + emStrongLDelim: RegExp; + emStrongRDelimAst: RegExp; + emStrongRDelimUnd: RegExp; + escape: RegExp; + link: RegExp; + nolink: RegExp; + punctuation: RegExp; + reflink: RegExp; + reflinkSearch: RegExp; + tag: RegExp; + text: RegExp; + url: RegExp; + }; + gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; + breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; + pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; + }; + }; + /** + * Static Lex Method + */ + static lex(src: string, options?: MarkedOptions): TokensList; + /** + * Static Lex Inline Method + */ + static lexInline(src: string, options?: MarkedOptions): Token[]; + /** + * Preprocessing + */ + lex(src: string): TokensList; + /** + * Lexing + */ + blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[]; + blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList; + inline(src: string, tokens?: Token[]): Token[]; + /** + * Lexing/Compiling + */ + inlineTokens(src: string, tokens?: Token[]): Token[]; +} +/** + * Gets the original marked default options. + */ +declare function _getDefaults(): MarkedOptions; +declare let _defaults: MarkedOptions; +export type MaybePromise = void | Promise; +export declare class Marked { + defaults: MarkedOptions; + options: (opt: MarkedOptions) => this; + parse: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; + }; + parseInline: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; + }; + Parser: typeof _Parser; + Renderer: typeof _Renderer; + TextRenderer: typeof _TextRenderer; + Lexer: typeof _Lexer; + Tokenizer: typeof _Tokenizer; + Hooks: typeof _Hooks; + constructor(...args: MarkedExtension[]); + /** + * Run callback for every token + */ + walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]): MaybePromise[]; + use(...args: MarkedExtension[]): this; + setOptions(opt: MarkedOptions): this; + lexer(src: string, options?: MarkedOptions): TokensList; + parser(tokens: Token[], options?: MarkedOptions): string; + private parseMarkdown; + private onError; +} +/** + * Compiles markdown to HTML asynchronously. + * + * @param src String of markdown source to be compiled + * @param options Hash of options, having async: true + * @return Promise of string of compiled HTML + */ +export declare function marked(src: string, options: MarkedOptions & { + async: true; +}): Promise; +/** + * Compiles markdown to HTML. + * + * @param src String of markdown source to be compiled + * @param options Optional hash of options + * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions. + */ +export declare function marked(src: string, options: MarkedOptions & { + async: false; +}): string; +export declare function marked(src: string, options: MarkedOptions & { + async: true; +}): Promise; +export declare function marked(src: string, options?: MarkedOptions | undefined | null): string | Promise; +export declare namespace marked { + var options: (options: MarkedOptions) => typeof marked; + var setOptions: (options: MarkedOptions) => typeof marked; + var getDefaults: typeof _getDefaults; + var defaults: MarkedOptions; + var use: (...args: MarkedExtension[]) => typeof marked; + var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; + var parseInline: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; + }; + var Parser: typeof _Parser; + var parser: typeof _Parser.parse; + var Renderer: typeof _Renderer; + var TextRenderer: typeof _TextRenderer; + var Lexer: typeof _Lexer; + var lexer: typeof _Lexer.lex; + var Tokenizer: typeof _Tokenizer; + var Hooks: typeof _Hooks; + var parse: typeof marked; +} +export declare const options: (options: MarkedOptions) => typeof marked; +export declare const setOptions: (options: MarkedOptions) => typeof marked; +export declare const use: (...args: MarkedExtension[]) => typeof marked; +export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; +export declare const parseInline: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; +}; +export declare const parse: typeof marked; +export declare const parser: typeof _Parser.parse; +export declare const lexer: typeof _Lexer.lex; + +export { + _Hooks as Hooks, + _Lexer as Lexer, + _Parser as Parser, + _Renderer as Renderer, + _TextRenderer as TextRenderer, + _Tokenizer as Tokenizer, + _defaults as defaults, + _getDefaults as getDefaults, +}; + +export {}; diff --git a/node_modules/marked/lib/marked.d.ts b/node_modules/marked/lib/marked.d.ts new file mode 100644 index 0000000..5404b07 --- /dev/null +++ b/node_modules/marked/lib/marked.d.ts @@ -0,0 +1,667 @@ +// Generated by dts-bundle-generator v9.5.1 + +export type MarkedToken = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del); +export type Token = (MarkedToken | Tokens.Generic); +export declare namespace Tokens { + interface Space { + type: "space"; + raw: string; + } + interface Code { + type: "code"; + raw: string; + codeBlockStyle?: "indented" | undefined; + lang?: string | undefined; + text: string; + escaped?: boolean; + } + interface Heading { + type: "heading"; + raw: string; + depth: number; + text: string; + tokens: Token[]; + } + interface Table { + type: "table"; + raw: string; + align: Array<"center" | "left" | "right" | null>; + header: TableCell[]; + rows: TableCell[][]; + } + interface TableRow { + text: string; + } + interface TableCell { + text: string; + tokens: Token[]; + header: boolean; + align: "center" | "left" | "right" | null; + } + interface Hr { + type: "hr"; + raw: string; + } + interface Blockquote { + type: "blockquote"; + raw: string; + text: string; + tokens: Token[]; + } + interface List { + type: "list"; + raw: string; + ordered: boolean; + start: number | ""; + loose: boolean; + items: ListItem[]; + } + interface ListItem { + type: "list_item"; + raw: string; + task: boolean; + checked?: boolean | undefined; + loose: boolean; + text: string; + tokens: Token[]; + } + interface Checkbox { + checked: boolean; + } + interface Paragraph { + type: "paragraph"; + raw: string; + pre?: boolean | undefined; + text: string; + tokens: Token[]; + } + interface HTML { + type: "html"; + raw: string; + pre: boolean; + text: string; + block: boolean; + } + interface Text { + type: "text"; + raw: string; + text: string; + tokens?: Token[]; + } + interface Def { + type: "def"; + raw: string; + tag: string; + href: string; + title: string; + } + interface Escape { + type: "escape"; + raw: string; + text: string; + } + interface Tag { + type: "text" | "html"; + raw: string; + inLink: boolean; + inRawBlock: boolean; + text: string; + block: boolean; + } + interface Link { + type: "link"; + raw: string; + href: string; + title?: string | null; + text: string; + tokens: Token[]; + } + interface Image { + type: "image"; + raw: string; + href: string; + title: string | null; + text: string; + } + interface Strong { + type: "strong"; + raw: string; + text: string; + tokens: Token[]; + } + interface Em { + type: "em"; + raw: string; + text: string; + tokens: Token[]; + } + interface Codespan { + type: "codespan"; + raw: string; + text: string; + } + interface Br { + type: "br"; + raw: string; + } + interface Del { + type: "del"; + raw: string; + text: string; + tokens: Token[]; + } + interface Generic { + [index: string]: any; + type: string; + raw: string; + tokens?: Token[] | undefined; + } +} +export type Links = Record>; +export type TokensList = Token[] & { + links: Links; +}; +/** + * Renderer + */ +declare class _Renderer { + options: MarkedOptions; + parser: _Parser; + constructor(options?: MarkedOptions); + space(token: Tokens.Space): string; + code({ text, lang, escaped }: Tokens.Code): string; + blockquote({ tokens }: Tokens.Blockquote): string; + html({ text }: Tokens.HTML | Tokens.Tag): string; + heading({ tokens, depth }: Tokens.Heading): string; + hr(token: Tokens.Hr): string; + list(token: Tokens.List): string; + listitem(item: Tokens.ListItem): string; + checkbox({ checked }: Tokens.Checkbox): string; + paragraph({ tokens }: Tokens.Paragraph): string; + table(token: Tokens.Table): string; + tablerow({ text }: Tokens.TableRow): string; + tablecell(token: Tokens.TableCell): string; + /** + * span level renderer + */ + strong({ tokens }: Tokens.Strong): string; + em({ tokens }: Tokens.Em): string; + codespan({ text }: Tokens.Codespan): string; + br(token: Tokens.Br): string; + del({ tokens }: Tokens.Del): string; + link({ href, title, tokens }: Tokens.Link): string; + image({ href, title, text }: Tokens.Image): string; + text(token: Tokens.Text | Tokens.Escape | Tokens.Tag): string; +} +/** + * TextRenderer + * returns only the textual part of the token + */ +declare class _TextRenderer { + strong({ text }: Tokens.Strong): string; + em({ text }: Tokens.Em): string; + codespan({ text }: Tokens.Codespan): string; + del({ text }: Tokens.Del): string; + html({ text }: Tokens.HTML | Tokens.Tag): string; + text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): string; + link({ text }: Tokens.Link): string; + image({ text }: Tokens.Image): string; + br(): string; +} +/** + * Parsing & Compiling + */ +declare class _Parser { + options: MarkedOptions; + renderer: _Renderer; + textRenderer: _TextRenderer; + constructor(options?: MarkedOptions); + /** + * Static Parse Method + */ + static parse(tokens: Token[], options?: MarkedOptions): string; + /** + * Static Parse Inline Method + */ + static parseInline(tokens: Token[], options?: MarkedOptions): string; + /** + * Parse Loop + */ + parse(tokens: Token[], top?: boolean): string; + /** + * Parse Inline Tokens + */ + parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string; +} +declare const blockNormal: { + blockquote: RegExp; + code: RegExp; + def: RegExp; + fences: RegExp; + heading: RegExp; + hr: RegExp; + html: RegExp; + lheading: RegExp; + list: RegExp; + newline: RegExp; + paragraph: RegExp; + table: RegExp; + text: RegExp; +}; +export type BlockKeys = keyof typeof blockNormal; +declare const inlineNormal: { + _backpedal: RegExp; + anyPunctuation: RegExp; + autolink: RegExp; + blockSkip: RegExp; + br: RegExp; + code: RegExp; + del: RegExp; + emStrongLDelim: RegExp; + emStrongRDelimAst: RegExp; + emStrongRDelimUnd: RegExp; + escape: RegExp; + link: RegExp; + nolink: RegExp; + punctuation: RegExp; + reflink: RegExp; + reflinkSearch: RegExp; + tag: RegExp; + text: RegExp; + url: RegExp; +}; +export type InlineKeys = keyof typeof inlineNormal; +export interface Rules { + block: Record; + inline: Record; +} +/** + * Tokenizer + */ +declare class _Tokenizer { + options: MarkedOptions; + rules: Rules; + lexer: _Lexer; + constructor(options?: MarkedOptions); + space(src: string): Tokens.Space | undefined; + code(src: string): Tokens.Code | undefined; + fences(src: string): Tokens.Code | undefined; + heading(src: string): Tokens.Heading | undefined; + hr(src: string): Tokens.Hr | undefined; + blockquote(src: string): Tokens.Blockquote | undefined; + list(src: string): Tokens.List | undefined; + html(src: string): Tokens.HTML | undefined; + def(src: string): Tokens.Def | undefined; + table(src: string): Tokens.Table | undefined; + lheading(src: string): Tokens.Heading | undefined; + paragraph(src: string): Tokens.Paragraph | undefined; + text(src: string): Tokens.Text | undefined; + escape(src: string): Tokens.Escape | undefined; + tag(src: string): Tokens.Tag | undefined; + link(src: string): Tokens.Link | Tokens.Image | undefined; + reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined; + emStrong(src: string, maskedSrc: string, prevChar?: string): Tokens.Em | Tokens.Strong | undefined; + codespan(src: string): Tokens.Codespan | undefined; + br(src: string): Tokens.Br | undefined; + del(src: string): Tokens.Del | undefined; + autolink(src: string): Tokens.Link | undefined; + url(src: string): Tokens.Link | undefined; + inlineText(src: string): Tokens.Text | undefined; +} +declare class _Hooks { + options: MarkedOptions; + block: boolean | undefined; + constructor(options?: MarkedOptions); + static passThroughHooks: Set; + /** + * Process markdown before marked + */ + preprocess(markdown: string): string; + /** + * Process HTML after marked is finished + */ + postprocess(html: string): string; + /** + * Process all tokens before walk tokens + */ + processAllTokens(tokens: Token[] | TokensList): Token[] | TokensList; + /** + * Provide function to tokenize markdown + */ + provideLexer(): typeof _Lexer.lexInline; + /** + * Provide function to parse tokens + */ + provideParser(): typeof _Parser.parse; +} +export interface TokenizerThis { + lexer: _Lexer; +} +export type TokenizerExtensionFunction = (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; +export type TokenizerStartFunction = (this: TokenizerThis, src: string) => number | void; +export interface TokenizerExtension { + name: string; + level: "block" | "inline"; + start?: TokenizerStartFunction | undefined; + tokenizer: TokenizerExtensionFunction; + childTokens?: string[] | undefined; +} +export interface RendererThis { + parser: _Parser; +} +export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; +export interface RendererExtension { + name: string; + renderer: RendererExtensionFunction; +} +export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); +export type HooksApi = Omit<_Hooks, "constructor" | "options" | "block">; +export type HooksObject = { + [K in keyof HooksApi]?: (this: _Hooks, ...args: Parameters) => ReturnType | Promise>; +}; +export type RendererApi = Omit<_Renderer, "constructor" | "options" | "parser">; +export type RendererObject = { + [K in keyof RendererApi]?: (this: _Renderer, ...args: Parameters) => ReturnType | false; +}; +export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">; +export type TokenizerObject = { + [K in keyof TokenizerApi]?: (this: _Tokenizer, ...args: Parameters) => ReturnType | false; +}; +export interface MarkedExtension { + /** + * True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string. + */ + async?: boolean; + /** + * Enable GFM line breaks. This option requires the gfm option to be true. + */ + breaks?: boolean | undefined; + /** + * Add tokenizers and renderers to marked + */ + extensions?: TokenizerAndRendererExtension[] | undefined | null; + /** + * Enable GitHub flavored markdown. + */ + gfm?: boolean | undefined; + /** + * Hooks are methods that hook into some part of marked. + * preprocess is called to process markdown before sending it to marked. + * processAllTokens is called with the TokensList before walkTokens. + * postprocess is called to process html after marked has finished parsing. + * provideLexer is called to provide a function to tokenize markdown. + * provideParser is called to provide a function to parse tokens. + */ + hooks?: HooksObject | undefined | null; + /** + * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior. + */ + pedantic?: boolean | undefined; + /** + * Type: object Default: new Renderer() + * + * An object containing functions to render tokens to HTML. + */ + renderer?: RendererObject | undefined | null; + /** + * Shows an HTML error message when rendering fails. + */ + silent?: boolean | undefined; + /** + * The tokenizer defines how to turn markdown text into tokens. + */ + tokenizer?: TokenizerObject | undefined | null; + /** + * The walkTokens function gets called with every token. + * Child tokens are called before moving on to sibling tokens. + * Each token is passed by reference so updates are persisted when passed to the parser. + * The return value of the function is ignored. + */ + walkTokens?: ((token: Token) => void | Promise) | undefined | null; +} +export interface MarkedOptions extends Omit { + /** + * Hooks are methods that hook into some part of marked. + */ + hooks?: _Hooks | undefined | null; + /** + * Type: object Default: new Renderer() + * + * An object containing functions to render tokens to HTML. + */ + renderer?: _Renderer | undefined | null; + /** + * The tokenizer defines how to turn markdown text into tokens. + */ + tokenizer?: _Tokenizer | undefined | null; + /** + * Custom extensions + */ + extensions?: null | { + renderers: { + [name: string]: RendererExtensionFunction; + }; + childTokens: { + [name: string]: string[]; + }; + inline?: TokenizerExtensionFunction[]; + block?: TokenizerExtensionFunction[]; + startInline?: TokenizerStartFunction[]; + startBlock?: TokenizerStartFunction[]; + }; + /** + * walkTokens function returns array of values for Promise.all + */ + walkTokens?: null | ((token: Token) => void | Promise | (void | Promise)[]); +} +/** + * Block Lexer + */ +declare class _Lexer { + tokens: TokensList; + options: MarkedOptions; + state: { + inLink: boolean; + inRawBlock: boolean; + top: boolean; + }; + private tokenizer; + private inlineQueue; + constructor(options?: MarkedOptions); + /** + * Expose Rules + */ + static get rules(): { + block: { + normal: { + blockquote: RegExp; + code: RegExp; + def: RegExp; + fences: RegExp; + heading: RegExp; + hr: RegExp; + html: RegExp; + lheading: RegExp; + list: RegExp; + newline: RegExp; + paragraph: RegExp; + table: RegExp; + text: RegExp; + }; + gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; + pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; + }; + inline: { + normal: { + _backpedal: RegExp; + anyPunctuation: RegExp; + autolink: RegExp; + blockSkip: RegExp; + br: RegExp; + code: RegExp; + del: RegExp; + emStrongLDelim: RegExp; + emStrongRDelimAst: RegExp; + emStrongRDelimUnd: RegExp; + escape: RegExp; + link: RegExp; + nolink: RegExp; + punctuation: RegExp; + reflink: RegExp; + reflinkSearch: RegExp; + tag: RegExp; + text: RegExp; + url: RegExp; + }; + gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; + breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; + pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; + }; + }; + /** + * Static Lex Method + */ + static lex(src: string, options?: MarkedOptions): TokensList; + /** + * Static Lex Inline Method + */ + static lexInline(src: string, options?: MarkedOptions): Token[]; + /** + * Preprocessing + */ + lex(src: string): TokensList; + /** + * Lexing + */ + blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[]; + blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList; + inline(src: string, tokens?: Token[]): Token[]; + /** + * Lexing/Compiling + */ + inlineTokens(src: string, tokens?: Token[]): Token[]; +} +/** + * Gets the original marked default options. + */ +declare function _getDefaults(): MarkedOptions; +declare let _defaults: MarkedOptions; +export type MaybePromise = void | Promise; +export declare class Marked { + defaults: MarkedOptions; + options: (opt: MarkedOptions) => this; + parse: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; + }; + parseInline: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; + }; + Parser: typeof _Parser; + Renderer: typeof _Renderer; + TextRenderer: typeof _TextRenderer; + Lexer: typeof _Lexer; + Tokenizer: typeof _Tokenizer; + Hooks: typeof _Hooks; + constructor(...args: MarkedExtension[]); + /** + * Run callback for every token + */ + walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]): MaybePromise[]; + use(...args: MarkedExtension[]): this; + setOptions(opt: MarkedOptions): this; + lexer(src: string, options?: MarkedOptions): TokensList; + parser(tokens: Token[], options?: MarkedOptions): string; + private parseMarkdown; + private onError; +} +/** + * Compiles markdown to HTML asynchronously. + * + * @param src String of markdown source to be compiled + * @param options Hash of options, having async: true + * @return Promise of string of compiled HTML + */ +export declare function marked(src: string, options: MarkedOptions & { + async: true; +}): Promise; +/** + * Compiles markdown to HTML. + * + * @param src String of markdown source to be compiled + * @param options Optional hash of options + * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions. + */ +export declare function marked(src: string, options: MarkedOptions & { + async: false; +}): string; +export declare function marked(src: string, options: MarkedOptions & { + async: true; +}): Promise; +export declare function marked(src: string, options?: MarkedOptions | undefined | null): string | Promise; +export declare namespace marked { + var options: (options: MarkedOptions) => typeof marked; + var setOptions: (options: MarkedOptions) => typeof marked; + var getDefaults: typeof _getDefaults; + var defaults: MarkedOptions; + var use: (...args: MarkedExtension[]) => typeof marked; + var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; + var parseInline: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; + }; + var Parser: typeof _Parser; + var parser: typeof _Parser.parse; + var Renderer: typeof _Renderer; + var TextRenderer: typeof _TextRenderer; + var Lexer: typeof _Lexer; + var lexer: typeof _Lexer.lex; + var Tokenizer: typeof _Tokenizer; + var Hooks: typeof _Hooks; + var parse: typeof marked; +} +export declare const options: (options: MarkedOptions) => typeof marked; +export declare const setOptions: (options: MarkedOptions) => typeof marked; +export declare const use: (...args: MarkedExtension[]) => typeof marked; +export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; +export declare const parseInline: { + (src: string, options: MarkedOptions & { + async: true; + }): Promise; + (src: string, options: MarkedOptions & { + async: false; + }): string; + (src: string, options?: MarkedOptions | undefined | null): string | Promise; +}; +export declare const parse: typeof marked; +export declare const parser: typeof _Parser.parse; +export declare const lexer: typeof _Lexer.lex; + +export { + _Hooks as Hooks, + _Lexer as Lexer, + _Parser as Parser, + _Renderer as Renderer, + _TextRenderer as TextRenderer, + _Tokenizer as Tokenizer, + _defaults as defaults, + _getDefaults as getDefaults, +}; + +export {}; diff --git a/node_modules/marked/lib/marked.esm.js b/node_modules/marked/lib/marked.esm.js new file mode 100644 index 0000000..90d6522 --- /dev/null +++ b/node_modules/marked/lib/marked.esm.js @@ -0,0 +1,2503 @@ +/** + * marked v14.1.3 - a markdown parser + * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) + * https://github.com/markedjs/marked + */ + +/** + * DO NOT EDIT THIS FILE + * The code in this file is generated from files in ./src/ + */ + +/** + * Gets the original marked default options. + */ +function _getDefaults() { + return { + async: false, + breaks: false, + extensions: null, + gfm: true, + hooks: null, + pedantic: false, + renderer: null, + silent: false, + tokenizer: null, + walkTokens: null, + }; +} +let _defaults = _getDefaults(); +function changeDefaults(newDefaults) { + _defaults = newDefaults; +} + +/** + * Helpers + */ +const escapeTest = /[&<>"']/; +const escapeReplace = new RegExp(escapeTest.source, 'g'); +const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; +const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); +const escapeReplacements = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', +}; +const getEscapeReplacement = (ch) => escapeReplacements[ch]; +function escape$1(html, encode) { + if (encode) { + if (escapeTest.test(html)) { + return html.replace(escapeReplace, getEscapeReplacement); + } + } + else { + if (escapeTestNoEncode.test(html)) { + return html.replace(escapeReplaceNoEncode, getEscapeReplacement); + } + } + return html; +} +const caret = /(^|[^\[])\^/g; +function edit(regex, opt) { + let source = typeof regex === 'string' ? regex : regex.source; + opt = opt || ''; + const obj = { + replace: (name, val) => { + let valSource = typeof val === 'string' ? val : val.source; + valSource = valSource.replace(caret, '$1'); + source = source.replace(name, valSource); + return obj; + }, + getRegex: () => { + return new RegExp(source, opt); + }, + }; + return obj; +} +function cleanUrl(href) { + try { + href = encodeURI(href).replace(/%25/g, '%'); + } + catch { + return null; + } + return href; +} +const noopTest = { exec: () => null }; +function splitCells(tableRow, count) { + // ensure that every cell-delimiting pipe has a space + // before it to distinguish it from an escaped pipe + const row = tableRow.replace(/\|/g, (match, offset, str) => { + let escaped = false; + let curr = offset; + while (--curr >= 0 && str[curr] === '\\') + escaped = !escaped; + if (escaped) { + // odd number of slashes means | is escaped + // so we leave it alone + return '|'; + } + else { + // add space before unescaped | + return ' |'; + } + }), cells = row.split(/ \|/); + let i = 0; + // First/last cell in a row cannot be empty if it has no leading/trailing pipe + if (!cells[0].trim()) { + cells.shift(); + } + if (cells.length > 0 && !cells[cells.length - 1].trim()) { + cells.pop(); + } + if (count) { + if (cells.length > count) { + cells.splice(count); + } + else { + while (cells.length < count) + cells.push(''); + } + } + for (; i < cells.length; i++) { + // leading or trailing whitespace is ignored per the gfm spec + cells[i] = cells[i].trim().replace(/\\\|/g, '|'); + } + return cells; +} +/** + * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). + * /c*$/ is vulnerable to REDOS. + * + * @param str + * @param c + * @param invert Remove suffix of non-c chars instead. Default falsey. + */ +function rtrim(str, c, invert) { + const l = str.length; + if (l === 0) { + return ''; + } + // Length of suffix matching the invert condition. + let suffLen = 0; + // Step left until we fail to match the invert condition. + while (suffLen < l) { + const currChar = str.charAt(l - suffLen - 1); + if (currChar === c && !invert) { + suffLen++; + } + else if (currChar !== c && invert) { + suffLen++; + } + else { + break; + } + } + return str.slice(0, l - suffLen); +} +function findClosingBracket(str, b) { + if (str.indexOf(b[1]) === -1) { + return -1; + } + let level = 0; + for (let i = 0; i < str.length; i++) { + if (str[i] === '\\') { + i++; + } + else if (str[i] === b[0]) { + level++; + } + else if (str[i] === b[1]) { + level--; + if (level < 0) { + return i; + } + } + } + return -1; +} + +function outputLink(cap, link, raw, lexer) { + const href = link.href; + const title = link.title ? escape$1(link.title) : null; + const text = cap[1].replace(/\\([\[\]])/g, '$1'); + if (cap[0].charAt(0) !== '!') { + lexer.state.inLink = true; + const token = { + type: 'link', + raw, + href, + title, + text, + tokens: lexer.inlineTokens(text), + }; + lexer.state.inLink = false; + return token; + } + return { + type: 'image', + raw, + href, + title, + text: escape$1(text), + }; +} +function indentCodeCompensation(raw, text) { + const matchIndentToCode = raw.match(/^(\s+)(?:```)/); + if (matchIndentToCode === null) { + return text; + } + const indentToCode = matchIndentToCode[1]; + return text + .split('\n') + .map(node => { + const matchIndentInNode = node.match(/^\s+/); + if (matchIndentInNode === null) { + return node; + } + const [indentInNode] = matchIndentInNode; + if (indentInNode.length >= indentToCode.length) { + return node.slice(indentToCode.length); + } + return node; + }) + .join('\n'); +} +/** + * Tokenizer + */ +class _Tokenizer { + options; + rules; // set by the lexer + lexer; // set by the lexer + constructor(options) { + this.options = options || _defaults; + } + space(src) { + const cap = this.rules.block.newline.exec(src); + if (cap && cap[0].length > 0) { + return { + type: 'space', + raw: cap[0], + }; + } + } + code(src) { + const cap = this.rules.block.code.exec(src); + if (cap) { + const text = cap[0].replace(/^(?: {1,4}| {0,3}\t)/gm, ''); + return { + type: 'code', + raw: cap[0], + codeBlockStyle: 'indented', + text: !this.options.pedantic + ? rtrim(text, '\n') + : text, + }; + } + } + fences(src) { + const cap = this.rules.block.fences.exec(src); + if (cap) { + const raw = cap[0]; + const text = indentCodeCompensation(raw, cap[3] || ''); + return { + type: 'code', + raw, + lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], + text, + }; + } + } + heading(src) { + const cap = this.rules.block.heading.exec(src); + if (cap) { + let text = cap[2].trim(); + // remove trailing #s + if (/#$/.test(text)) { + const trimmed = rtrim(text, '#'); + if (this.options.pedantic) { + text = trimmed.trim(); + } + else if (!trimmed || / $/.test(trimmed)) { + // CommonMark requires space before trailing #s + text = trimmed.trim(); + } + } + return { + type: 'heading', + raw: cap[0], + depth: cap[1].length, + text, + tokens: this.lexer.inline(text), + }; + } + } + hr(src) { + const cap = this.rules.block.hr.exec(src); + if (cap) { + return { + type: 'hr', + raw: rtrim(cap[0], '\n'), + }; + } + } + blockquote(src) { + const cap = this.rules.block.blockquote.exec(src); + if (cap) { + let lines = rtrim(cap[0], '\n').split('\n'); + let raw = ''; + let text = ''; + const tokens = []; + while (lines.length > 0) { + let inBlockquote = false; + const currentLines = []; + let i; + for (i = 0; i < lines.length; i++) { + // get lines up to a continuation + if (/^ {0,3}>/.test(lines[i])) { + currentLines.push(lines[i]); + inBlockquote = true; + } + else if (!inBlockquote) { + currentLines.push(lines[i]); + } + else { + break; + } + } + lines = lines.slice(i); + const currentRaw = currentLines.join('\n'); + const currentText = currentRaw + // precede setext continuation with 4 spaces so it isn't a setext + .replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1') + .replace(/^ {0,3}>[ \t]?/gm, ''); + raw = raw ? `${raw}\n${currentRaw}` : currentRaw; + text = text ? `${text}\n${currentText}` : currentText; + // parse blockquote lines as top level tokens + // merge paragraphs if this is a continuation + const top = this.lexer.state.top; + this.lexer.state.top = true; + this.lexer.blockTokens(currentText, tokens, true); + this.lexer.state.top = top; + // if there is no continuation then we are done + if (lines.length === 0) { + break; + } + const lastToken = tokens[tokens.length - 1]; + if (lastToken?.type === 'code') { + // blockquote continuation cannot be preceded by a code block + break; + } + else if (lastToken?.type === 'blockquote') { + // include continuation in nested blockquote + const oldToken = lastToken; + const newText = oldToken.raw + '\n' + lines.join('\n'); + const newToken = this.blockquote(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.text.length) + newToken.text; + break; + } + else if (lastToken?.type === 'list') { + // include continuation in nested list + const oldToken = lastToken; + const newText = oldToken.raw + '\n' + lines.join('\n'); + const newToken = this.list(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw; + lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\n'); + continue; + } + } + return { + type: 'blockquote', + raw, + tokens, + text, + }; + } + } + list(src) { + let cap = this.rules.block.list.exec(src); + if (cap) { + let bull = cap[1].trim(); + const isordered = bull.length > 1; + const list = { + type: 'list', + raw: '', + ordered: isordered, + start: isordered ? +bull.slice(0, -1) : '', + loose: false, + items: [], + }; + bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; + if (this.options.pedantic) { + bull = isordered ? bull : '[*+-]'; + } + // Get next list item + const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); + let endsWithBlankLine = false; + // Check if current bullet point can start a new List Item + while (src) { + let endEarly = false; + let raw = ''; + let itemContents = ''; + if (!(cap = itemRegex.exec(src))) { + break; + } + if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) + break; + } + raw = cap[0]; + src = src.substring(raw.length); + let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); + let nextLine = src.split('\n', 1)[0]; + let blankLine = !line.trim(); + let indent = 0; + if (this.options.pedantic) { + indent = 2; + itemContents = line.trimStart(); + } + else if (blankLine) { + indent = cap[1].length + 1; + } + else { + indent = cap[2].search(/[^ ]/); // Find first non-space char + indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent + itemContents = line.slice(indent); + indent += cap[1].length; + } + if (blankLine && /^[ \t]*$/.test(nextLine)) { // Items begin with at most one blank line + raw += nextLine + '\n'; + src = src.substring(nextLine.length + 1); + endEarly = true; + } + if (!endEarly) { + const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); + const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); + const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); + const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); + const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'); + // Check if following lines should be included in List Item + while (src) { + const rawLine = src.split('\n', 1)[0]; + let nextLineWithoutTabs; + nextLine = rawLine; + // Re-align to follow commonmark nesting rules + if (this.options.pedantic) { + nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); + nextLineWithoutTabs = nextLine; + } + else { + nextLineWithoutTabs = nextLine.replace(/\t/g, ' '); + } + // End list item if found code fences + if (fencesBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of new heading + if (headingBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of html block + if (htmlBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of new bullet + if (nextBulletRegex.test(nextLine)) { + break; + } + // Horizontal rule found + if (hrRegex.test(nextLine)) { + break; + } + if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible + itemContents += '\n' + nextLineWithoutTabs.slice(indent); + } + else { + // not enough indentation + if (blankLine) { + break; + } + // paragraph continuation unless last line was a different block level element + if (line.replace(/\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block + break; + } + if (fencesBeginRegex.test(line)) { + break; + } + if (headingBeginRegex.test(line)) { + break; + } + if (hrRegex.test(line)) { + break; + } + itemContents += '\n' + nextLine; + } + if (!blankLine && !nextLine.trim()) { // Check if current line is blank + blankLine = true; + } + raw += rawLine + '\n'; + src = src.substring(rawLine.length + 1); + line = nextLineWithoutTabs.slice(indent); + } + } + if (!list.loose) { + // If the previous item ended with a blank line, the list is loose + if (endsWithBlankLine) { + list.loose = true; + } + else if (/\n[ \t]*\n[ \t]*$/.test(raw)) { + endsWithBlankLine = true; + } + } + let istask = null; + let ischecked; + // Check for task list items + if (this.options.gfm) { + istask = /^\[[ xX]\] /.exec(itemContents); + if (istask) { + ischecked = istask[0] !== '[ ] '; + itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); + } + } + list.items.push({ + type: 'list_item', + raw, + task: !!istask, + checked: ischecked, + loose: false, + text: itemContents, + tokens: [], + }); + list.raw += raw; + } + // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic + list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd(); + list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd(); + list.raw = list.raw.trimEnd(); + // Item child tokens handled here at end because we needed to have the final item to trim it first + for (let i = 0; i < list.items.length; i++) { + this.lexer.state.top = false; + list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); + if (!list.loose) { + // Check if list should be loose + const spacers = list.items[i].tokens.filter(t => t.type === 'space'); + const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); + list.loose = hasMultipleLineBreaks; + } + } + // Set all items to loose if list is loose + if (list.loose) { + for (let i = 0; i < list.items.length; i++) { + list.items[i].loose = true; + } + } + return list; + } + } + html(src) { + const cap = this.rules.block.html.exec(src); + if (cap) { + const token = { + type: 'html', + block: true, + raw: cap[0], + pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', + text: cap[0], + }; + return token; + } + } + def(src) { + const cap = this.rules.block.def.exec(src); + if (cap) { + const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); + const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; + const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; + return { + type: 'def', + tag, + raw: cap[0], + href, + title, + }; + } + } + table(src) { + const cap = this.rules.block.table.exec(src); + if (!cap) { + return; + } + if (!/[:|]/.test(cap[2])) { + // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading + return; + } + const headers = splitCells(cap[1]); + const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); + const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; + const item = { + type: 'table', + raw: cap[0], + header: [], + align: [], + rows: [], + }; + if (headers.length !== aligns.length) { + // header and align columns must be equal, rows can be different. + return; + } + for (const align of aligns) { + if (/^ *-+: *$/.test(align)) { + item.align.push('right'); + } + else if (/^ *:-+: *$/.test(align)) { + item.align.push('center'); + } + else if (/^ *:-+ *$/.test(align)) { + item.align.push('left'); + } + else { + item.align.push(null); + } + } + for (let i = 0; i < headers.length; i++) { + item.header.push({ + text: headers[i], + tokens: this.lexer.inline(headers[i]), + header: true, + align: item.align[i], + }); + } + for (const row of rows) { + item.rows.push(splitCells(row, item.header.length).map((cell, i) => { + return { + text: cell, + tokens: this.lexer.inline(cell), + header: false, + align: item.align[i], + }; + })); + } + return item; + } + lheading(src) { + const cap = this.rules.block.lheading.exec(src); + if (cap) { + return { + type: 'heading', + raw: cap[0], + depth: cap[2].charAt(0) === '=' ? 1 : 2, + text: cap[1], + tokens: this.lexer.inline(cap[1]), + }; + } + } + paragraph(src) { + const cap = this.rules.block.paragraph.exec(src); + if (cap) { + const text = cap[1].charAt(cap[1].length - 1) === '\n' + ? cap[1].slice(0, -1) + : cap[1]; + return { + type: 'paragraph', + raw: cap[0], + text, + tokens: this.lexer.inline(text), + }; + } + } + text(src) { + const cap = this.rules.block.text.exec(src); + if (cap) { + return { + type: 'text', + raw: cap[0], + text: cap[0], + tokens: this.lexer.inline(cap[0]), + }; + } + } + escape(src) { + const cap = this.rules.inline.escape.exec(src); + if (cap) { + return { + type: 'escape', + raw: cap[0], + text: escape$1(cap[1]), + }; + } + } + tag(src) { + const cap = this.rules.inline.tag.exec(src); + if (cap) { + if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) { + this.lexer.state.inLink = false; + } + if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = true; + } + else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = false; + } + return { + type: 'html', + raw: cap[0], + inLink: this.lexer.state.inLink, + inRawBlock: this.lexer.state.inRawBlock, + block: false, + text: cap[0], + }; + } + } + link(src) { + const cap = this.rules.inline.link.exec(src); + if (cap) { + const trimmedUrl = cap[2].trim(); + if (!this.options.pedantic && /^$/.test(trimmedUrl))) { + return; + } + // ending angle bracket cannot be escaped + const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); + if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { + return; + } + } + else { + // find closing parenthesis + const lastParenIndex = findClosingBracket(cap[2], '()'); + if (lastParenIndex > -1) { + const start = cap[0].indexOf('!') === 0 ? 5 : 4; + const linkLen = start + cap[1].length + lastParenIndex; + cap[2] = cap[2].substring(0, lastParenIndex); + cap[0] = cap[0].substring(0, linkLen).trim(); + cap[3] = ''; + } + } + let href = cap[2]; + let title = ''; + if (this.options.pedantic) { + // split pedantic href and title + const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); + if (link) { + href = link[1]; + title = link[3]; + } + } + else { + title = cap[3] ? cap[3].slice(1, -1) : ''; + } + href = href.trim(); + if (/^$/.test(trimmedUrl))) { + // pedantic allows starting angle bracket without ending angle bracket + href = href.slice(1); + } + else { + href = href.slice(1, -1); + } + } + return outputLink(cap, { + href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, + title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title, + }, cap[0], this.lexer); + } + } + reflink(src, links) { + let cap; + if ((cap = this.rules.inline.reflink.exec(src)) + || (cap = this.rules.inline.nolink.exec(src))) { + const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); + const link = links[linkString.toLowerCase()]; + if (!link) { + const text = cap[0].charAt(0); + return { + type: 'text', + raw: text, + text, + }; + } + return outputLink(cap, link, cap[0], this.lexer); + } + } + emStrong(src, maskedSrc, prevChar = '') { + let match = this.rules.inline.emStrongLDelim.exec(src); + if (!match) + return; + // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well + if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) + return; + const nextChar = match[1] || match[2] || ''; + if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { + // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) + const lLength = [...match[0]].length - 1; + let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; + const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; + endReg.lastIndex = 0; + // Clip maskedSrc to same section of string as src (move to lexer?) + maskedSrc = maskedSrc.slice(-1 * src.length + lLength); + while ((match = endReg.exec(maskedSrc)) != null) { + rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; + if (!rDelim) + continue; // skip single * in __abc*abc__ + rLength = [...rDelim].length; + if (match[3] || match[4]) { // found another Left Delim + delimTotal += rLength; + continue; + } + else if (match[5] || match[6]) { // either Left or Right Delim + if (lLength % 3 && !((lLength + rLength) % 3)) { + midDelimTotal += rLength; + continue; // CommonMark Emphasis Rules 9-10 + } + } + delimTotal -= rLength; + if (delimTotal > 0) + continue; // Haven't found enough closing delimiters + // Remove extra characters. *a*** -> *a* + rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); + // char length can be >1 for unicode characters; + const lastCharLength = [...match[0]][0].length; + const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); + // Create `em` if smallest delimiter has odd char count. *a*** + if (Math.min(lLength, rLength) % 2) { + const text = raw.slice(1, -1); + return { + type: 'em', + raw, + text, + tokens: this.lexer.inlineTokens(text), + }; + } + // Create 'strong' if smallest delimiter has even char count. **a*** + const text = raw.slice(2, -2); + return { + type: 'strong', + raw, + text, + tokens: this.lexer.inlineTokens(text), + }; + } + } + } + codespan(src) { + const cap = this.rules.inline.code.exec(src); + if (cap) { + let text = cap[2].replace(/\n/g, ' '); + const hasNonSpaceChars = /[^ ]/.test(text); + const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); + if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { + text = text.substring(1, text.length - 1); + } + text = escape$1(text, true); + return { + type: 'codespan', + raw: cap[0], + text, + }; + } + } + br(src) { + const cap = this.rules.inline.br.exec(src); + if (cap) { + return { + type: 'br', + raw: cap[0], + }; + } + } + del(src) { + const cap = this.rules.inline.del.exec(src); + if (cap) { + return { + type: 'del', + raw: cap[0], + text: cap[2], + tokens: this.lexer.inlineTokens(cap[2]), + }; + } + } + autolink(src) { + const cap = this.rules.inline.autolink.exec(src); + if (cap) { + let text, href; + if (cap[2] === '@') { + text = escape$1(cap[1]); + href = 'mailto:' + text; + } + else { + text = escape$1(cap[1]); + href = text; + } + return { + type: 'link', + raw: cap[0], + text, + href, + tokens: [ + { + type: 'text', + raw: text, + text, + }, + ], + }; + } + } + url(src) { + let cap; + if (cap = this.rules.inline.url.exec(src)) { + let text, href; + if (cap[2] === '@') { + text = escape$1(cap[0]); + href = 'mailto:' + text; + } + else { + // do extended autolink path validation + let prevCapZero; + do { + prevCapZero = cap[0]; + cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; + } while (prevCapZero !== cap[0]); + text = escape$1(cap[0]); + if (cap[1] === 'www.') { + href = 'http://' + cap[0]; + } + else { + href = cap[0]; + } + } + return { + type: 'link', + raw: cap[0], + text, + href, + tokens: [ + { + type: 'text', + raw: text, + text, + }, + ], + }; + } + } + inlineText(src) { + const cap = this.rules.inline.text.exec(src); + if (cap) { + let text; + if (this.lexer.state.inRawBlock) { + text = cap[0]; + } + else { + text = escape$1(cap[0]); + } + return { + type: 'text', + raw: cap[0], + text, + }; + } + } +} + +/** + * Block-Level Grammar + */ +const newline = /^(?:[ \t]*(?:\n|$))+/; +const blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; +const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; +const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; +const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; +const bullet = /(?:[*+-]|\d{1,9}[.)])/; +const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) + .replace(/bull/g, bullet) // lists can interrupt + .replace(/blockCode/g, /(?: {4}| {0,3}\t)/) // indented code blocks can interrupt + .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt + .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt + .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt + .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt + .getRegex(); +const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; +const blockText = /^[^\n]+/; +const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; +const def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/) + .replace('label', _blockLabel) + .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) + .getRegex(); +const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) + .replace(/bull/g, bullet) + .getRegex(); +const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' + + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' + + '|tr|track|ul'; +const _comment = /|$))/; +const html = edit('^ {0,3}(?:' // optional indentation + + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) + + '|comment[^\\n]*(\\n+|$)' // (2) + + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) + + '|\\n*|$)' // (4) + + '|\\n*|$)' // (5) + + '|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (6) + + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) open tag + + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) closing tag + + ')', 'i') + .replace('comment', _comment) + .replace('tag', _tag) + .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) + .getRegex(); +const paragraph = edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs + .replace('|table', '') + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // pars can be interrupted by type (6) html blocks + .getRegex(); +const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) + .replace('paragraph', paragraph) + .getRegex(); +/** + * Normal Block Grammar + */ +const blockNormal = { + blockquote, + code: blockCode, + def, + fences, + heading, + hr, + html, + lheading, + list, + newline, + paragraph, + table: noopTest, + text: blockText, +}; +/** + * GFM Block Grammar + */ +const gfmTable = edit('^ *([^\\n ].*)\\n' // Header + + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align + + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('blockquote', ' {0,3}>') + .replace('code', '(?: {4}| {0,3}\t)[^\\n]') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // tables can be interrupted by type (6) html blocks + .getRegex(); +const blockGfm = { + ...blockNormal, + table: gfmTable, + paragraph: edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs + .replace('table', gfmTable) // interrupt paragraphs with table + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // pars can be interrupted by type (6) html blocks + .getRegex(), +}; +/** + * Pedantic grammar (original John Gruber's loose markdown specification) + */ +const blockPedantic = { + ...blockNormal, + html: edit('^ *(?:comment *(?:\\n|\\s*$)' + + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag + + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') + .replace('comment', _comment) + .replace(/tag/g, '(?!(?:' + + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') + .getRegex(), + def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, + heading: /^(#{1,6})(.*)(?:\n+|$)/, + fences: noopTest, // fences not supported + lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + paragraph: edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' *#{1,6} *[^\n]') + .replace('lheading', lheading) + .replace('|table', '') + .replace('blockquote', ' {0,3}>') + .replace('|fences', '') + .replace('|list', '') + .replace('|html', '') + .replace('|tag', '') + .getRegex(), +}; +/** + * Inline-Level Grammar + */ +const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; +const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; +const br = /^( {2,}|\\)\n(?!\s*$)/; +const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ +const blockSkip = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g; +const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') + .replace(/punct/g, _punctuation) + .getRegex(); +const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong + + '|[^*]+(?=[^*])' // Consume to delim + + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter + + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter + + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter + + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter + + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter + + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter + .replace(/punct/g, _punctuation) + .getRegex(); +// (6) Not allowed for _ +const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong + + '|[^_]+(?=[^_])' // Consume to delim + + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter + + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter + + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter + + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter + + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter + .replace(/punct/g, _punctuation) + .getRegex(); +const anyPunctuation = edit(/\\([punct])/, 'gu') + .replace(/punct/g, _punctuation) + .getRegex(); +const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) + .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) + .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) + .getRegex(); +const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); +const tag = edit('^comment' + + '|^' // self-closing tag + + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag + + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. + + '|^' // declaration, e.g. + + '|^') // CDATA section + .replace('comment', _inlineComment) + .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) + .getRegex(); +const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; +const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) + .replace('label', _inlineLabel) + .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) + .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) + .getRegex(); +const reflink = edit(/^!?\[(label)\]\[(ref)\]/) + .replace('label', _inlineLabel) + .replace('ref', _blockLabel) + .getRegex(); +const nolink = edit(/^!?\[(ref)\](?:\[\])?/) + .replace('ref', _blockLabel) + .getRegex(); +const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') + .replace('reflink', reflink) + .replace('nolink', nolink) + .getRegex(); +/** + * Normal Inline Grammar + */ +const inlineNormal = { + _backpedal: noopTest, // only used for GFM url + anyPunctuation, + autolink, + blockSkip, + br, + code: inlineCode, + del: noopTest, + emStrongLDelim, + emStrongRDelimAst, + emStrongRDelimUnd, + escape, + link, + nolink, + punctuation, + reflink, + reflinkSearch, + tag, + text: inlineText, + url: noopTest, +}; +/** + * Pedantic Inline Grammar + */ +const inlinePedantic = { + ...inlineNormal, + link: edit(/^!?\[(label)\]\((.*?)\)/) + .replace('label', _inlineLabel) + .getRegex(), + reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) + .replace('label', _inlineLabel) + .getRegex(), +}; +/** + * GFM Inline Grammar + */ +const inlineGfm = { + ...inlineNormal, + escape: edit(escape).replace('])', '~|])').getRegex(), + url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') + .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) + .getRegex(), + _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, + del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, + text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + // newline + if (token = this.tokenizer.space(src)) { + src = src.substring(token.raw.length); + if (token.raw.length === 1 && tokens.length > 0) { + // if there's a single \n as a spacer, it's terminating the last line, + // so move it there so that we don't get unnecessary paragraph tags + tokens[tokens.length - 1].raw += '\n'; + } + else { + tokens.push(token); + } + continue; + } + // code + if (token = this.tokenizer.code(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + // An indented code block cannot interrupt a paragraph. + if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + continue; + } + // fences + if (token = this.tokenizer.fences(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // heading + if (token = this.tokenizer.heading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // hr + if (token = this.tokenizer.hr(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // blockquote + if (token = this.tokenizer.blockquote(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // list + if (token = this.tokenizer.list(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // html + if (token = this.tokenizer.html(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // def + if (token = this.tokenizer.def(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.raw; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else if (!this.tokens.links[token.tag]) { + this.tokens.links[token.tag] = { + href: token.href, + title: token.title, + }; + } + continue; + } + // table (gfm) + if (token = this.tokenizer.table(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // lheading + if (token = this.tokenizer.lheading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // top-level paragraph + // prevent paragraph consuming extensions by clipping 'src' to extension start + cutSrc = src; + if (this.options.extensions && this.options.extensions.startBlock) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startBlock.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === 'number' && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { + lastToken = tokens[tokens.length - 1]; + if (lastParagraphClipped && lastToken?.type === 'paragraph') { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + lastParagraphClipped = (cutSrc.length !== src.length); + src = src.substring(token.raw.length); + continue; + } + // text + if (token = this.tokenizer.text(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === 'text') { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } + else { + throw new Error(errMsg); + } + } + } + this.state.top = true; + return tokens; + } + inline(src, tokens = []) { + this.inlineQueue.push({ src, tokens }); + return tokens; + } + /** + * Lexing/Compiling + */ + inlineTokens(src, tokens = []) { + let token, lastToken, cutSrc; + // String with links masked to avoid interference with em and strong + let maskedSrc = src; + let match; + let keepPrevChar, prevChar; + // Mask out reflinks + if (this.tokens.links) { + const links = Object.keys(this.tokens.links); + if (links.length > 0) { + while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { + if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { + maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); + } + } + } + } + // Mask out other blocks + while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + } + // Mask out escaped characters + while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + } + while (src) { + if (!keepPrevChar) { + prevChar = ''; + } + keepPrevChar = false; + // extensions + if (this.options.extensions + && this.options.extensions.inline + && this.options.extensions.inline.some((extTokenizer) => { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + // escape + if (token = this.tokenizer.escape(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // tag + if (token = this.tokenizer.tag(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === 'text' && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + // link + if (token = this.tokenizer.link(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // reflink, nolink + if (token = this.tokenizer.reflink(src, this.tokens.links)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === 'text' && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + // em & strong + if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // code + if (token = this.tokenizer.codespan(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // br + if (token = this.tokenizer.br(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // del (gfm) + if (token = this.tokenizer.del(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // autolink + if (token = this.tokenizer.autolink(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // url (gfm) + if (!this.state.inLink && (token = this.tokenizer.url(src))) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // text + // prevent inlineText consuming extensions by clipping 'src' to extension start + cutSrc = src; + if (this.options.extensions && this.options.extensions.startInline) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startInline.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === 'number' && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (token = this.tokenizer.inlineText(cutSrc)) { + src = src.substring(token.raw.length); + if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started + prevChar = token.raw.slice(-1); + } + keepPrevChar = true; + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } + else { + throw new Error(errMsg); + } + } + } + return tokens; + } +} + +/** + * Renderer + */ +class _Renderer { + options; + parser; // set by the parser + constructor(options) { + this.options = options || _defaults; + } + space(token) { + return ''; + } + code({ text, lang, escaped }) { + const langString = (lang || '').match(/^\S*/)?.[0]; + const code = text.replace(/\n$/, '') + '\n'; + if (!langString) { + return '
    '
    +                + (escaped ? code : escape$1(code, true))
    +                + '
    \n'; + } + return '
    '
    +            + (escaped ? code : escape$1(code, true))
    +            + '
    \n'; + } + blockquote({ tokens }) { + const body = this.parser.parse(tokens); + return `
    \n${body}
    \n`; + } + html({ text }) { + return text; + } + heading({ tokens, depth }) { + return `${this.parser.parseInline(tokens)}\n`; + } + hr(token) { + return '
    \n'; + } + list(token) { + const ordered = token.ordered; + const start = token.start; + let body = ''; + for (let j = 0; j < token.items.length; j++) { + const item = token.items[j]; + body += this.listitem(item); + } + const type = ordered ? 'ol' : 'ul'; + const startAttr = (ordered && start !== 1) ? (' start="' + start + '"') : ''; + return '<' + type + startAttr + '>\n' + body + '\n'; + } + listitem(item) { + let itemBody = ''; + if (item.task) { + const checkbox = this.checkbox({ checked: !!item.checked }); + if (item.loose) { + if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') { + item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; + if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { + item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; + } + } + else { + item.tokens.unshift({ + type: 'text', + raw: checkbox + ' ', + text: checkbox + ' ', + }); + } + } + else { + itemBody += checkbox + ' '; + } + } + itemBody += this.parser.parse(item.tokens, !!item.loose); + return `
  • ${itemBody}
  • \n`; + } + checkbox({ checked }) { + return ''; + } + paragraph({ tokens }) { + return `

    ${this.parser.parseInline(tokens)}

    \n`; + } + table(token) { + let header = ''; + // header + let cell = ''; + for (let j = 0; j < token.header.length; j++) { + cell += this.tablecell(token.header[j]); + } + header += this.tablerow({ text: cell }); + let body = ''; + for (let j = 0; j < token.rows.length; j++) { + const row = token.rows[j]; + cell = ''; + for (let k = 0; k < row.length; k++) { + cell += this.tablecell(row[k]); + } + body += this.tablerow({ text: cell }); + } + if (body) + body = `${body}`; + return '\n' + + '\n' + + header + + '\n' + + body + + '
    \n'; + } + tablerow({ text }) { + return `\n${text}\n`; + } + tablecell(token) { + const content = this.parser.parseInline(token.tokens); + const type = token.header ? 'th' : 'td'; + const tag = token.align + ? `<${type} align="${token.align}">` + : `<${type}>`; + return tag + content + `\n`; + } + /** + * span level renderer + */ + strong({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + em({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + codespan({ text }) { + return `${text}`; + } + br(token) { + return '
    '; + } + del({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + link({ href, title, tokens }) { + const text = this.parser.parseInline(tokens); + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = '
    '; + return out; + } + image({ href, title, text }) { + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = `${text} { + const tokens = genericToken[childTokens].flat(Infinity); + values = values.concat(this.walkTokens(tokens, callback)); + }); + } + else if (genericToken.tokens) { + values = values.concat(this.walkTokens(genericToken.tokens, callback)); + } + } + } + } + return values; + } + use(...args) { + const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; + args.forEach((pack) => { + // copy options to new object + const opts = { ...pack }; + // set async to true if it was set to true before + opts.async = this.defaults.async || opts.async || false; + // ==-- Parse "addon" extensions --== // + if (pack.extensions) { + pack.extensions.forEach((ext) => { + if (!ext.name) { + throw new Error('extension name required'); + } + if ('renderer' in ext) { // Renderer extensions + const prevRenderer = extensions.renderers[ext.name]; + if (prevRenderer) { + // Replace extension with func to run new extension but fall back if false + extensions.renderers[ext.name] = function (...args) { + let ret = ext.renderer.apply(this, args); + if (ret === false) { + ret = prevRenderer.apply(this, args); + } + return ret; + }; + } + else { + extensions.renderers[ext.name] = ext.renderer; + } + } + if ('tokenizer' in ext) { // Tokenizer Extensions + if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { + throw new Error("extension level must be 'block' or 'inline'"); + } + const extLevel = extensions[ext.level]; + if (extLevel) { + extLevel.unshift(ext.tokenizer); + } + else { + extensions[ext.level] = [ext.tokenizer]; + } + if (ext.start) { // Function to check for start of token + if (ext.level === 'block') { + if (extensions.startBlock) { + extensions.startBlock.push(ext.start); + } + else { + extensions.startBlock = [ext.start]; + } + } + else if (ext.level === 'inline') { + if (extensions.startInline) { + extensions.startInline.push(ext.start); + } + else { + extensions.startInline = [ext.start]; + } + } + } + } + if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens + extensions.childTokens[ext.name] = ext.childTokens; + } + }); + opts.extensions = extensions; + } + // ==-- Parse "overwrite" extensions --== // + if (pack.renderer) { + const renderer = this.defaults.renderer || new _Renderer(this.defaults); + for (const prop in pack.renderer) { + if (!(prop in renderer)) { + throw new Error(`renderer '${prop}' does not exist`); + } + if (['options', 'parser'].includes(prop)) { + // ignore options property + continue; + } + const rendererProp = prop; + const rendererFunc = pack.renderer[rendererProp]; + const prevRenderer = renderer[rendererProp]; + // Replace renderer with func to run extension, but fall back if false + renderer[rendererProp] = (...args) => { + let ret = rendererFunc.apply(renderer, args); + if (ret === false) { + ret = prevRenderer.apply(renderer, args); + } + return ret || ''; + }; + } + opts.renderer = renderer; + } + if (pack.tokenizer) { + const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); + for (const prop in pack.tokenizer) { + if (!(prop in tokenizer)) { + throw new Error(`tokenizer '${prop}' does not exist`); + } + if (['options', 'rules', 'lexer'].includes(prop)) { + // ignore options, rules, and lexer properties + continue; + } + const tokenizerProp = prop; + const tokenizerFunc = pack.tokenizer[tokenizerProp]; + const prevTokenizer = tokenizer[tokenizerProp]; + // Replace tokenizer with func to run extension, but fall back if false + // @ts-expect-error cannot type tokenizer function dynamically + tokenizer[tokenizerProp] = (...args) => { + let ret = tokenizerFunc.apply(tokenizer, args); + if (ret === false) { + ret = prevTokenizer.apply(tokenizer, args); + } + return ret; + }; + } + opts.tokenizer = tokenizer; + } + // ==-- Parse Hooks extensions --== // + if (pack.hooks) { + const hooks = this.defaults.hooks || new _Hooks(); + for (const prop in pack.hooks) { + if (!(prop in hooks)) { + throw new Error(`hook '${prop}' does not exist`); + } + if (['options', 'block'].includes(prop)) { + // ignore options and block properties + continue; + } + const hooksProp = prop; + const hooksFunc = pack.hooks[hooksProp]; + const prevHook = hooks[hooksProp]; + if (_Hooks.passThroughHooks.has(prop)) { + // @ts-expect-error cannot type hook function dynamically + hooks[hooksProp] = (arg) => { + if (this.defaults.async) { + return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { + return prevHook.call(hooks, ret); + }); + } + const ret = hooksFunc.call(hooks, arg); + return prevHook.call(hooks, ret); + }; + } + else { + // @ts-expect-error cannot type hook function dynamically + hooks[hooksProp] = (...args) => { + let ret = hooksFunc.apply(hooks, args); + if (ret === false) { + ret = prevHook.apply(hooks, args); + } + return ret; + }; + } + } + opts.hooks = hooks; + } + // ==-- Parse WalkTokens extensions --== // + if (pack.walkTokens) { + const walkTokens = this.defaults.walkTokens; + const packWalktokens = pack.walkTokens; + opts.walkTokens = function (token) { + let values = []; + values.push(packWalktokens.call(this, token)); + if (walkTokens) { + values = values.concat(walkTokens.call(this, token)); + } + return values; + }; + } + this.defaults = { ...this.defaults, ...opts }; + }); + return this; + } + setOptions(opt) { + this.defaults = { ...this.defaults, ...opt }; + return this; + } + lexer(src, options) { + return _Lexer.lex(src, options ?? this.defaults); + } + parser(tokens, options) { + return _Parser.parse(tokens, options ?? this.defaults); + } + parseMarkdown(blockType) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const parse = (src, options) => { + const origOpt = { ...options }; + const opt = { ...this.defaults, ...origOpt }; + const throwError = this.onError(!!opt.silent, !!opt.async); + // throw error if an extension set async to true but parse was called with async: false + if (this.defaults.async === true && origOpt.async === false) { + return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.')); + } + // throw error in case of non string input + if (typeof src === 'undefined' || src === null) { + return throwError(new Error('marked(): input parameter is undefined or null')); + } + if (typeof src !== 'string') { + return throwError(new Error('marked(): input parameter is of type ' + + Object.prototype.toString.call(src) + ', string expected')); + } + if (opt.hooks) { + opt.hooks.options = opt; + opt.hooks.block = blockType; + } + const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline); + const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline); + if (opt.async) { + return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) + .then(src => lexer(src, opt)) + .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) + .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) + .then(tokens => parser(tokens, opt)) + .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) + .catch(throwError); + } + try { + if (opt.hooks) { + src = opt.hooks.preprocess(src); + } + let tokens = lexer(src, opt); + if (opt.hooks) { + tokens = opt.hooks.processAllTokens(tokens); + } + if (opt.walkTokens) { + this.walkTokens(tokens, opt.walkTokens); + } + let html = parser(tokens, opt); + if (opt.hooks) { + html = opt.hooks.postprocess(html); + } + return html; + } + catch (e) { + return throwError(e); + } + }; + return parse; + } + onError(silent, async) { + return (e) => { + e.message += '\nPlease report this to https://github.com/markedjs/marked.'; + if (silent) { + const msg = '

    An error occurred:

    '
    +                    + escape$1(e.message + '', true)
    +                    + '
    '; + if (async) { + return Promise.resolve(msg); + } + return msg; + } + if (async) { + return Promise.reject(e); + } + throw e; + }; + } +} + +const markedInstance = new Marked(); +function marked(src, opt) { + return markedInstance.parse(src, opt); +} +/** + * Sets the default options. + * + * @param options Hash of options + */ +marked.options = + marked.setOptions = function (options) { + markedInstance.setOptions(options); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; + }; +/** + * Gets the original marked default options. + */ +marked.getDefaults = _getDefaults; +marked.defaults = _defaults; +/** + * Use Extension + */ +marked.use = function (...args) { + markedInstance.use(...args); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; +}; +/** + * Run callback for every token + */ +marked.walkTokens = function (tokens, callback) { + return markedInstance.walkTokens(tokens, callback); +}; +/** + * Compiles markdown to HTML without enclosing `p` tag. + * + * @param src String of markdown source to be compiled + * @param options Hash of options + * @return String of compiled HTML + */ +marked.parseInline = markedInstance.parseInline; +/** + * Expose + */ +marked.Parser = _Parser; +marked.parser = _Parser.parse; +marked.Renderer = _Renderer; +marked.TextRenderer = _TextRenderer; +marked.Lexer = _Lexer; +marked.lexer = _Lexer.lex; +marked.Tokenizer = _Tokenizer; +marked.Hooks = _Hooks; +marked.parse = marked; +const options = marked.options; +const setOptions = marked.setOptions; +const use = marked.use; +const walkTokens = marked.walkTokens; +const parseInline = marked.parseInline; +const parse = marked; +const parser = _Parser.parse; +const lexer = _Lexer.lex; + +export { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens }; +//# sourceMappingURL=marked.esm.js.map diff --git a/node_modules/marked/lib/marked.esm.js.map b/node_modules/marked/lib/marked.esm.js.map new file mode 100644 index 0000000..4265d28 --- /dev/null +++ b/node_modules/marked/lib/marked.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"marked.esm.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket, } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n","import { edit, noopTest, } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape, } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
    \\n${body}
    \\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
    \\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["escape"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/marked/lib/marked.umd.js b/node_modules/marked/lib/marked.umd.js new file mode 100644 index 0000000..f76d7d4 --- /dev/null +++ b/node_modules/marked/lib/marked.umd.js @@ -0,0 +1,2527 @@ +/** + * marked v14.1.3 - a markdown parser + * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) + * https://github.com/markedjs/marked + */ + +/** + * DO NOT EDIT THIS FILE + * The code in this file is generated from files in ./src/ + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {})); +})(this, (function (exports) { 'use strict'; + + /** + * Gets the original marked default options. + */ + function _getDefaults() { + return { + async: false, + breaks: false, + extensions: null, + gfm: true, + hooks: null, + pedantic: false, + renderer: null, + silent: false, + tokenizer: null, + walkTokens: null, + }; + } + exports.defaults = _getDefaults(); + function changeDefaults(newDefaults) { + exports.defaults = newDefaults; + } + + /** + * Helpers + */ + const escapeTest = /[&<>"']/; + const escapeReplace = new RegExp(escapeTest.source, 'g'); + const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; + const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); + const escapeReplacements = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + }; + const getEscapeReplacement = (ch) => escapeReplacements[ch]; + function escape$1(html, encode) { + if (encode) { + if (escapeTest.test(html)) { + return html.replace(escapeReplace, getEscapeReplacement); + } + } + else { + if (escapeTestNoEncode.test(html)) { + return html.replace(escapeReplaceNoEncode, getEscapeReplacement); + } + } + return html; + } + const caret = /(^|[^\[])\^/g; + function edit(regex, opt) { + let source = typeof regex === 'string' ? regex : regex.source; + opt = opt || ''; + const obj = { + replace: (name, val) => { + let valSource = typeof val === 'string' ? val : val.source; + valSource = valSource.replace(caret, '$1'); + source = source.replace(name, valSource); + return obj; + }, + getRegex: () => { + return new RegExp(source, opt); + }, + }; + return obj; + } + function cleanUrl(href) { + try { + href = encodeURI(href).replace(/%25/g, '%'); + } + catch { + return null; + } + return href; + } + const noopTest = { exec: () => null }; + function splitCells(tableRow, count) { + // ensure that every cell-delimiting pipe has a space + // before it to distinguish it from an escaped pipe + const row = tableRow.replace(/\|/g, (match, offset, str) => { + let escaped = false; + let curr = offset; + while (--curr >= 0 && str[curr] === '\\') + escaped = !escaped; + if (escaped) { + // odd number of slashes means | is escaped + // so we leave it alone + return '|'; + } + else { + // add space before unescaped | + return ' |'; + } + }), cells = row.split(/ \|/); + let i = 0; + // First/last cell in a row cannot be empty if it has no leading/trailing pipe + if (!cells[0].trim()) { + cells.shift(); + } + if (cells.length > 0 && !cells[cells.length - 1].trim()) { + cells.pop(); + } + if (count) { + if (cells.length > count) { + cells.splice(count); + } + else { + while (cells.length < count) + cells.push(''); + } + } + for (; i < cells.length; i++) { + // leading or trailing whitespace is ignored per the gfm spec + cells[i] = cells[i].trim().replace(/\\\|/g, '|'); + } + return cells; + } + /** + * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). + * /c*$/ is vulnerable to REDOS. + * + * @param str + * @param c + * @param invert Remove suffix of non-c chars instead. Default falsey. + */ + function rtrim(str, c, invert) { + const l = str.length; + if (l === 0) { + return ''; + } + // Length of suffix matching the invert condition. + let suffLen = 0; + // Step left until we fail to match the invert condition. + while (suffLen < l) { + const currChar = str.charAt(l - suffLen - 1); + if (currChar === c && !invert) { + suffLen++; + } + else if (currChar !== c && invert) { + suffLen++; + } + else { + break; + } + } + return str.slice(0, l - suffLen); + } + function findClosingBracket(str, b) { + if (str.indexOf(b[1]) === -1) { + return -1; + } + let level = 0; + for (let i = 0; i < str.length; i++) { + if (str[i] === '\\') { + i++; + } + else if (str[i] === b[0]) { + level++; + } + else if (str[i] === b[1]) { + level--; + if (level < 0) { + return i; + } + } + } + return -1; + } + + function outputLink(cap, link, raw, lexer) { + const href = link.href; + const title = link.title ? escape$1(link.title) : null; + const text = cap[1].replace(/\\([\[\]])/g, '$1'); + if (cap[0].charAt(0) !== '!') { + lexer.state.inLink = true; + const token = { + type: 'link', + raw, + href, + title, + text, + tokens: lexer.inlineTokens(text), + }; + lexer.state.inLink = false; + return token; + } + return { + type: 'image', + raw, + href, + title, + text: escape$1(text), + }; + } + function indentCodeCompensation(raw, text) { + const matchIndentToCode = raw.match(/^(\s+)(?:```)/); + if (matchIndentToCode === null) { + return text; + } + const indentToCode = matchIndentToCode[1]; + return text + .split('\n') + .map(node => { + const matchIndentInNode = node.match(/^\s+/); + if (matchIndentInNode === null) { + return node; + } + const [indentInNode] = matchIndentInNode; + if (indentInNode.length >= indentToCode.length) { + return node.slice(indentToCode.length); + } + return node; + }) + .join('\n'); + } + /** + * Tokenizer + */ + class _Tokenizer { + options; + rules; // set by the lexer + lexer; // set by the lexer + constructor(options) { + this.options = options || exports.defaults; + } + space(src) { + const cap = this.rules.block.newline.exec(src); + if (cap && cap[0].length > 0) { + return { + type: 'space', + raw: cap[0], + }; + } + } + code(src) { + const cap = this.rules.block.code.exec(src); + if (cap) { + const text = cap[0].replace(/^(?: {1,4}| {0,3}\t)/gm, ''); + return { + type: 'code', + raw: cap[0], + codeBlockStyle: 'indented', + text: !this.options.pedantic + ? rtrim(text, '\n') + : text, + }; + } + } + fences(src) { + const cap = this.rules.block.fences.exec(src); + if (cap) { + const raw = cap[0]; + const text = indentCodeCompensation(raw, cap[3] || ''); + return { + type: 'code', + raw, + lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], + text, + }; + } + } + heading(src) { + const cap = this.rules.block.heading.exec(src); + if (cap) { + let text = cap[2].trim(); + // remove trailing #s + if (/#$/.test(text)) { + const trimmed = rtrim(text, '#'); + if (this.options.pedantic) { + text = trimmed.trim(); + } + else if (!trimmed || / $/.test(trimmed)) { + // CommonMark requires space before trailing #s + text = trimmed.trim(); + } + } + return { + type: 'heading', + raw: cap[0], + depth: cap[1].length, + text, + tokens: this.lexer.inline(text), + }; + } + } + hr(src) { + const cap = this.rules.block.hr.exec(src); + if (cap) { + return { + type: 'hr', + raw: rtrim(cap[0], '\n'), + }; + } + } + blockquote(src) { + const cap = this.rules.block.blockquote.exec(src); + if (cap) { + let lines = rtrim(cap[0], '\n').split('\n'); + let raw = ''; + let text = ''; + const tokens = []; + while (lines.length > 0) { + let inBlockquote = false; + const currentLines = []; + let i; + for (i = 0; i < lines.length; i++) { + // get lines up to a continuation + if (/^ {0,3}>/.test(lines[i])) { + currentLines.push(lines[i]); + inBlockquote = true; + } + else if (!inBlockquote) { + currentLines.push(lines[i]); + } + else { + break; + } + } + lines = lines.slice(i); + const currentRaw = currentLines.join('\n'); + const currentText = currentRaw + // precede setext continuation with 4 spaces so it isn't a setext + .replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1') + .replace(/^ {0,3}>[ \t]?/gm, ''); + raw = raw ? `${raw}\n${currentRaw}` : currentRaw; + text = text ? `${text}\n${currentText}` : currentText; + // parse blockquote lines as top level tokens + // merge paragraphs if this is a continuation + const top = this.lexer.state.top; + this.lexer.state.top = true; + this.lexer.blockTokens(currentText, tokens, true); + this.lexer.state.top = top; + // if there is no continuation then we are done + if (lines.length === 0) { + break; + } + const lastToken = tokens[tokens.length - 1]; + if (lastToken?.type === 'code') { + // blockquote continuation cannot be preceded by a code block + break; + } + else if (lastToken?.type === 'blockquote') { + // include continuation in nested blockquote + const oldToken = lastToken; + const newText = oldToken.raw + '\n' + lines.join('\n'); + const newToken = this.blockquote(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.text.length) + newToken.text; + break; + } + else if (lastToken?.type === 'list') { + // include continuation in nested list + const oldToken = lastToken; + const newText = oldToken.raw + '\n' + lines.join('\n'); + const newToken = this.list(newText); + tokens[tokens.length - 1] = newToken; + raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; + text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw; + lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\n'); + continue; + } + } + return { + type: 'blockquote', + raw, + tokens, + text, + }; + } + } + list(src) { + let cap = this.rules.block.list.exec(src); + if (cap) { + let bull = cap[1].trim(); + const isordered = bull.length > 1; + const list = { + type: 'list', + raw: '', + ordered: isordered, + start: isordered ? +bull.slice(0, -1) : '', + loose: false, + items: [], + }; + bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; + if (this.options.pedantic) { + bull = isordered ? bull : '[*+-]'; + } + // Get next list item + const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); + let endsWithBlankLine = false; + // Check if current bullet point can start a new List Item + while (src) { + let endEarly = false; + let raw = ''; + let itemContents = ''; + if (!(cap = itemRegex.exec(src))) { + break; + } + if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) + break; + } + raw = cap[0]; + src = src.substring(raw.length); + let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); + let nextLine = src.split('\n', 1)[0]; + let blankLine = !line.trim(); + let indent = 0; + if (this.options.pedantic) { + indent = 2; + itemContents = line.trimStart(); + } + else if (blankLine) { + indent = cap[1].length + 1; + } + else { + indent = cap[2].search(/[^ ]/); // Find first non-space char + indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent + itemContents = line.slice(indent); + indent += cap[1].length; + } + if (blankLine && /^[ \t]*$/.test(nextLine)) { // Items begin with at most one blank line + raw += nextLine + '\n'; + src = src.substring(nextLine.length + 1); + endEarly = true; + } + if (!endEarly) { + const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); + const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); + const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); + const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); + const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'); + // Check if following lines should be included in List Item + while (src) { + const rawLine = src.split('\n', 1)[0]; + let nextLineWithoutTabs; + nextLine = rawLine; + // Re-align to follow commonmark nesting rules + if (this.options.pedantic) { + nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); + nextLineWithoutTabs = nextLine; + } + else { + nextLineWithoutTabs = nextLine.replace(/\t/g, ' '); + } + // End list item if found code fences + if (fencesBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of new heading + if (headingBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of html block + if (htmlBeginRegex.test(nextLine)) { + break; + } + // End list item if found start of new bullet + if (nextBulletRegex.test(nextLine)) { + break; + } + // Horizontal rule found + if (hrRegex.test(nextLine)) { + break; + } + if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible + itemContents += '\n' + nextLineWithoutTabs.slice(indent); + } + else { + // not enough indentation + if (blankLine) { + break; + } + // paragraph continuation unless last line was a different block level element + if (line.replace(/\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block + break; + } + if (fencesBeginRegex.test(line)) { + break; + } + if (headingBeginRegex.test(line)) { + break; + } + if (hrRegex.test(line)) { + break; + } + itemContents += '\n' + nextLine; + } + if (!blankLine && !nextLine.trim()) { // Check if current line is blank + blankLine = true; + } + raw += rawLine + '\n'; + src = src.substring(rawLine.length + 1); + line = nextLineWithoutTabs.slice(indent); + } + } + if (!list.loose) { + // If the previous item ended with a blank line, the list is loose + if (endsWithBlankLine) { + list.loose = true; + } + else if (/\n[ \t]*\n[ \t]*$/.test(raw)) { + endsWithBlankLine = true; + } + } + let istask = null; + let ischecked; + // Check for task list items + if (this.options.gfm) { + istask = /^\[[ xX]\] /.exec(itemContents); + if (istask) { + ischecked = istask[0] !== '[ ] '; + itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); + } + } + list.items.push({ + type: 'list_item', + raw, + task: !!istask, + checked: ischecked, + loose: false, + text: itemContents, + tokens: [], + }); + list.raw += raw; + } + // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic + list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd(); + list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd(); + list.raw = list.raw.trimEnd(); + // Item child tokens handled here at end because we needed to have the final item to trim it first + for (let i = 0; i < list.items.length; i++) { + this.lexer.state.top = false; + list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); + if (!list.loose) { + // Check if list should be loose + const spacers = list.items[i].tokens.filter(t => t.type === 'space'); + const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); + list.loose = hasMultipleLineBreaks; + } + } + // Set all items to loose if list is loose + if (list.loose) { + for (let i = 0; i < list.items.length; i++) { + list.items[i].loose = true; + } + } + return list; + } + } + html(src) { + const cap = this.rules.block.html.exec(src); + if (cap) { + const token = { + type: 'html', + block: true, + raw: cap[0], + pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', + text: cap[0], + }; + return token; + } + } + def(src) { + const cap = this.rules.block.def.exec(src); + if (cap) { + const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); + const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; + const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; + return { + type: 'def', + tag, + raw: cap[0], + href, + title, + }; + } + } + table(src) { + const cap = this.rules.block.table.exec(src); + if (!cap) { + return; + } + if (!/[:|]/.test(cap[2])) { + // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading + return; + } + const headers = splitCells(cap[1]); + const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); + const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; + const item = { + type: 'table', + raw: cap[0], + header: [], + align: [], + rows: [], + }; + if (headers.length !== aligns.length) { + // header and align columns must be equal, rows can be different. + return; + } + for (const align of aligns) { + if (/^ *-+: *$/.test(align)) { + item.align.push('right'); + } + else if (/^ *:-+: *$/.test(align)) { + item.align.push('center'); + } + else if (/^ *:-+ *$/.test(align)) { + item.align.push('left'); + } + else { + item.align.push(null); + } + } + for (let i = 0; i < headers.length; i++) { + item.header.push({ + text: headers[i], + tokens: this.lexer.inline(headers[i]), + header: true, + align: item.align[i], + }); + } + for (const row of rows) { + item.rows.push(splitCells(row, item.header.length).map((cell, i) => { + return { + text: cell, + tokens: this.lexer.inline(cell), + header: false, + align: item.align[i], + }; + })); + } + return item; + } + lheading(src) { + const cap = this.rules.block.lheading.exec(src); + if (cap) { + return { + type: 'heading', + raw: cap[0], + depth: cap[2].charAt(0) === '=' ? 1 : 2, + text: cap[1], + tokens: this.lexer.inline(cap[1]), + }; + } + } + paragraph(src) { + const cap = this.rules.block.paragraph.exec(src); + if (cap) { + const text = cap[1].charAt(cap[1].length - 1) === '\n' + ? cap[1].slice(0, -1) + : cap[1]; + return { + type: 'paragraph', + raw: cap[0], + text, + tokens: this.lexer.inline(text), + }; + } + } + text(src) { + const cap = this.rules.block.text.exec(src); + if (cap) { + return { + type: 'text', + raw: cap[0], + text: cap[0], + tokens: this.lexer.inline(cap[0]), + }; + } + } + escape(src) { + const cap = this.rules.inline.escape.exec(src); + if (cap) { + return { + type: 'escape', + raw: cap[0], + text: escape$1(cap[1]), + }; + } + } + tag(src) { + const cap = this.rules.inline.tag.exec(src); + if (cap) { + if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) { + this.lexer.state.inLink = false; + } + if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = true; + } + else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { + this.lexer.state.inRawBlock = false; + } + return { + type: 'html', + raw: cap[0], + inLink: this.lexer.state.inLink, + inRawBlock: this.lexer.state.inRawBlock, + block: false, + text: cap[0], + }; + } + } + link(src) { + const cap = this.rules.inline.link.exec(src); + if (cap) { + const trimmedUrl = cap[2].trim(); + if (!this.options.pedantic && /^$/.test(trimmedUrl))) { + return; + } + // ending angle bracket cannot be escaped + const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); + if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { + return; + } + } + else { + // find closing parenthesis + const lastParenIndex = findClosingBracket(cap[2], '()'); + if (lastParenIndex > -1) { + const start = cap[0].indexOf('!') === 0 ? 5 : 4; + const linkLen = start + cap[1].length + lastParenIndex; + cap[2] = cap[2].substring(0, lastParenIndex); + cap[0] = cap[0].substring(0, linkLen).trim(); + cap[3] = ''; + } + } + let href = cap[2]; + let title = ''; + if (this.options.pedantic) { + // split pedantic href and title + const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); + if (link) { + href = link[1]; + title = link[3]; + } + } + else { + title = cap[3] ? cap[3].slice(1, -1) : ''; + } + href = href.trim(); + if (/^$/.test(trimmedUrl))) { + // pedantic allows starting angle bracket without ending angle bracket + href = href.slice(1); + } + else { + href = href.slice(1, -1); + } + } + return outputLink(cap, { + href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, + title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title, + }, cap[0], this.lexer); + } + } + reflink(src, links) { + let cap; + if ((cap = this.rules.inline.reflink.exec(src)) + || (cap = this.rules.inline.nolink.exec(src))) { + const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); + const link = links[linkString.toLowerCase()]; + if (!link) { + const text = cap[0].charAt(0); + return { + type: 'text', + raw: text, + text, + }; + } + return outputLink(cap, link, cap[0], this.lexer); + } + } + emStrong(src, maskedSrc, prevChar = '') { + let match = this.rules.inline.emStrongLDelim.exec(src); + if (!match) + return; + // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well + if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) + return; + const nextChar = match[1] || match[2] || ''; + if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { + // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) + const lLength = [...match[0]].length - 1; + let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; + const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; + endReg.lastIndex = 0; + // Clip maskedSrc to same section of string as src (move to lexer?) + maskedSrc = maskedSrc.slice(-1 * src.length + lLength); + while ((match = endReg.exec(maskedSrc)) != null) { + rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; + if (!rDelim) + continue; // skip single * in __abc*abc__ + rLength = [...rDelim].length; + if (match[3] || match[4]) { // found another Left Delim + delimTotal += rLength; + continue; + } + else if (match[5] || match[6]) { // either Left or Right Delim + if (lLength % 3 && !((lLength + rLength) % 3)) { + midDelimTotal += rLength; + continue; // CommonMark Emphasis Rules 9-10 + } + } + delimTotal -= rLength; + if (delimTotal > 0) + continue; // Haven't found enough closing delimiters + // Remove extra characters. *a*** -> *a* + rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); + // char length can be >1 for unicode characters; + const lastCharLength = [...match[0]][0].length; + const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); + // Create `em` if smallest delimiter has odd char count. *a*** + if (Math.min(lLength, rLength) % 2) { + const text = raw.slice(1, -1); + return { + type: 'em', + raw, + text, + tokens: this.lexer.inlineTokens(text), + }; + } + // Create 'strong' if smallest delimiter has even char count. **a*** + const text = raw.slice(2, -2); + return { + type: 'strong', + raw, + text, + tokens: this.lexer.inlineTokens(text), + }; + } + } + } + codespan(src) { + const cap = this.rules.inline.code.exec(src); + if (cap) { + let text = cap[2].replace(/\n/g, ' '); + const hasNonSpaceChars = /[^ ]/.test(text); + const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); + if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { + text = text.substring(1, text.length - 1); + } + text = escape$1(text, true); + return { + type: 'codespan', + raw: cap[0], + text, + }; + } + } + br(src) { + const cap = this.rules.inline.br.exec(src); + if (cap) { + return { + type: 'br', + raw: cap[0], + }; + } + } + del(src) { + const cap = this.rules.inline.del.exec(src); + if (cap) { + return { + type: 'del', + raw: cap[0], + text: cap[2], + tokens: this.lexer.inlineTokens(cap[2]), + }; + } + } + autolink(src) { + const cap = this.rules.inline.autolink.exec(src); + if (cap) { + let text, href; + if (cap[2] === '@') { + text = escape$1(cap[1]); + href = 'mailto:' + text; + } + else { + text = escape$1(cap[1]); + href = text; + } + return { + type: 'link', + raw: cap[0], + text, + href, + tokens: [ + { + type: 'text', + raw: text, + text, + }, + ], + }; + } + } + url(src) { + let cap; + if (cap = this.rules.inline.url.exec(src)) { + let text, href; + if (cap[2] === '@') { + text = escape$1(cap[0]); + href = 'mailto:' + text; + } + else { + // do extended autolink path validation + let prevCapZero; + do { + prevCapZero = cap[0]; + cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; + } while (prevCapZero !== cap[0]); + text = escape$1(cap[0]); + if (cap[1] === 'www.') { + href = 'http://' + cap[0]; + } + else { + href = cap[0]; + } + } + return { + type: 'link', + raw: cap[0], + text, + href, + tokens: [ + { + type: 'text', + raw: text, + text, + }, + ], + }; + } + } + inlineText(src) { + const cap = this.rules.inline.text.exec(src); + if (cap) { + let text; + if (this.lexer.state.inRawBlock) { + text = cap[0]; + } + else { + text = escape$1(cap[0]); + } + return { + type: 'text', + raw: cap[0], + text, + }; + } + } + } + + /** + * Block-Level Grammar + */ + const newline = /^(?:[ \t]*(?:\n|$))+/; + const blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; + const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; + const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; + const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; + const bullet = /(?:[*+-]|\d{1,9}[.)])/; + const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) + .replace(/bull/g, bullet) // lists can interrupt + .replace(/blockCode/g, /(?: {4}| {0,3}\t)/) // indented code blocks can interrupt + .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt + .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt + .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt + .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt + .getRegex(); + const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; + const blockText = /^[^\n]+/; + const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; + const def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/) + .replace('label', _blockLabel) + .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) + .getRegex(); + const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) + .replace(/bull/g, bullet) + .getRegex(); + const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' + + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' + + '|tr|track|ul'; + const _comment = /|$))/; + const html = edit('^ {0,3}(?:' // optional indentation + + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) + + '|comment[^\\n]*(\\n+|$)' // (2) + + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) + + '|\\n*|$)' // (4) + + '|\\n*|$)' // (5) + + '|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (6) + + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) open tag + + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) closing tag + + ')', 'i') + .replace('comment', _comment) + .replace('tag', _tag) + .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) + .getRegex(); + const paragraph = edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs + .replace('|table', '') + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // pars can be interrupted by type (6) html blocks + .getRegex(); + const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) + .replace('paragraph', paragraph) + .getRegex(); + /** + * Normal Block Grammar + */ + const blockNormal = { + blockquote, + code: blockCode, + def, + fences, + heading, + hr, + html, + lheading, + list, + newline, + paragraph, + table: noopTest, + text: blockText, + }; + /** + * GFM Block Grammar + */ + const gfmTable = edit('^ *([^\\n ].*)\\n' // Header + + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align + + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('blockquote', ' {0,3}>') + .replace('code', '(?: {4}| {0,3}\t)[^\\n]') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // tables can be interrupted by type (6) html blocks + .getRegex(); + const blockGfm = { + ...blockNormal, + table: gfmTable, + paragraph: edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') + .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs + .replace('table', gfmTable) // interrupt paragraphs with table + .replace('blockquote', ' {0,3}>') + .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') + .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt + .replace('html', ')|<(?:script|pre|style|textarea|!--)') + .replace('tag', _tag) // pars can be interrupted by type (6) html blocks + .getRegex(), + }; + /** + * Pedantic grammar (original John Gruber's loose markdown specification) + */ + const blockPedantic = { + ...blockNormal, + html: edit('^ *(?:comment *(?:\\n|\\s*$)' + + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag + + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') + .replace('comment', _comment) + .replace(/tag/g, '(?!(?:' + + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') + .getRegex(), + def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, + heading: /^(#{1,6})(.*)(?:\n+|$)/, + fences: noopTest, // fences not supported + lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, + paragraph: edit(_paragraph) + .replace('hr', hr) + .replace('heading', ' *#{1,6} *[^\n]') + .replace('lheading', lheading) + .replace('|table', '') + .replace('blockquote', ' {0,3}>') + .replace('|fences', '') + .replace('|list', '') + .replace('|html', '') + .replace('|tag', '') + .getRegex(), + }; + /** + * Inline-Level Grammar + */ + const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; + const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; + const br = /^( {2,}|\\)\n(?!\s*$)/; + const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ + const blockSkip = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g; + const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') + .replace(/punct/g, _punctuation) + .getRegex(); + const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong + + '|[^*]+(?=[^*])' // Consume to delim + + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter + + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter + + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter + + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter + + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter + + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter + .replace(/punct/g, _punctuation) + .getRegex(); + // (6) Not allowed for _ + const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong + + '|[^_]+(?=[^_])' // Consume to delim + + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter + + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter + + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter + + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter + + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter + .replace(/punct/g, _punctuation) + .getRegex(); + const anyPunctuation = edit(/\\([punct])/, 'gu') + .replace(/punct/g, _punctuation) + .getRegex(); + const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) + .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) + .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) + .getRegex(); + const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); + const tag = edit('^comment' + + '|^' // self-closing tag + + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag + + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. + + '|^' // declaration, e.g. + + '|^') // CDATA section + .replace('comment', _inlineComment) + .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) + .getRegex(); + const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; + const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) + .replace('label', _inlineLabel) + .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) + .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) + .getRegex(); + const reflink = edit(/^!?\[(label)\]\[(ref)\]/) + .replace('label', _inlineLabel) + .replace('ref', _blockLabel) + .getRegex(); + const nolink = edit(/^!?\[(ref)\](?:\[\])?/) + .replace('ref', _blockLabel) + .getRegex(); + const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') + .replace('reflink', reflink) + .replace('nolink', nolink) + .getRegex(); + /** + * Normal Inline Grammar + */ + const inlineNormal = { + _backpedal: noopTest, // only used for GFM url + anyPunctuation, + autolink, + blockSkip, + br, + code: inlineCode, + del: noopTest, + emStrongLDelim, + emStrongRDelimAst, + emStrongRDelimUnd, + escape, + link, + nolink, + punctuation, + reflink, + reflinkSearch, + tag, + text: inlineText, + url: noopTest, + }; + /** + * Pedantic Inline Grammar + */ + const inlinePedantic = { + ...inlineNormal, + link: edit(/^!?\[(label)\]\((.*?)\)/) + .replace('label', _inlineLabel) + .getRegex(), + reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) + .replace('label', _inlineLabel) + .getRegex(), + }; + /** + * GFM Inline Grammar + */ + const inlineGfm = { + ...inlineNormal, + escape: edit(escape).replace('])', '~|])').getRegex(), + url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') + .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) + .getRegex(), + _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, + del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, + text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + // newline + if (token = this.tokenizer.space(src)) { + src = src.substring(token.raw.length); + if (token.raw.length === 1 && tokens.length > 0) { + // if there's a single \n as a spacer, it's terminating the last line, + // so move it there so that we don't get unnecessary paragraph tags + tokens[tokens.length - 1].raw += '\n'; + } + else { + tokens.push(token); + } + continue; + } + // code + if (token = this.tokenizer.code(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + // An indented code block cannot interrupt a paragraph. + if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + continue; + } + // fences + if (token = this.tokenizer.fences(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // heading + if (token = this.tokenizer.heading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // hr + if (token = this.tokenizer.hr(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // blockquote + if (token = this.tokenizer.blockquote(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // list + if (token = this.tokenizer.list(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // html + if (token = this.tokenizer.html(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // def + if (token = this.tokenizer.def(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.raw; + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else if (!this.tokens.links[token.tag]) { + this.tokens.links[token.tag] = { + href: token.href, + title: token.title, + }; + } + continue; + } + // table (gfm) + if (token = this.tokenizer.table(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // lheading + if (token = this.tokenizer.lheading(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // top-level paragraph + // prevent paragraph consuming extensions by clipping 'src' to extension start + cutSrc = src; + if (this.options.extensions && this.options.extensions.startBlock) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startBlock.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === 'number' && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { + lastToken = tokens[tokens.length - 1]; + if (lastParagraphClipped && lastToken?.type === 'paragraph') { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + lastParagraphClipped = (cutSrc.length !== src.length); + src = src.substring(token.raw.length); + continue; + } + // text + if (token = this.tokenizer.text(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === 'text') { + lastToken.raw += '\n' + token.raw; + lastToken.text += '\n' + token.text; + this.inlineQueue.pop(); + this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; + } + else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } + else { + throw new Error(errMsg); + } + } + } + this.state.top = true; + return tokens; + } + inline(src, tokens = []) { + this.inlineQueue.push({ src, tokens }); + return tokens; + } + /** + * Lexing/Compiling + */ + inlineTokens(src, tokens = []) { + let token, lastToken, cutSrc; + // String with links masked to avoid interference with em and strong + let maskedSrc = src; + let match; + let keepPrevChar, prevChar; + // Mask out reflinks + if (this.tokens.links) { + const links = Object.keys(this.tokens.links); + if (links.length > 0) { + while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { + if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { + maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); + } + } + } + } + // Mask out other blocks + while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); + } + // Mask out escaped characters + while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { + maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); + } + while (src) { + if (!keepPrevChar) { + prevChar = ''; + } + keepPrevChar = false; + // extensions + if (this.options.extensions + && this.options.extensions.inline + && this.options.extensions.inline.some((extTokenizer) => { + if (token = extTokenizer.call({ lexer: this }, src, tokens)) { + src = src.substring(token.raw.length); + tokens.push(token); + return true; + } + return false; + })) { + continue; + } + // escape + if (token = this.tokenizer.escape(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // tag + if (token = this.tokenizer.tag(src)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === 'text' && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + // link + if (token = this.tokenizer.link(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // reflink, nolink + if (token = this.tokenizer.reflink(src, this.tokens.links)) { + src = src.substring(token.raw.length); + lastToken = tokens[tokens.length - 1]; + if (lastToken && token.type === 'text' && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + // em & strong + if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // code + if (token = this.tokenizer.codespan(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // br + if (token = this.tokenizer.br(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // del (gfm) + if (token = this.tokenizer.del(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // autolink + if (token = this.tokenizer.autolink(src)) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // url (gfm) + if (!this.state.inLink && (token = this.tokenizer.url(src))) { + src = src.substring(token.raw.length); + tokens.push(token); + continue; + } + // text + // prevent inlineText consuming extensions by clipping 'src' to extension start + cutSrc = src; + if (this.options.extensions && this.options.extensions.startInline) { + let startIndex = Infinity; + const tempSrc = src.slice(1); + let tempStart; + this.options.extensions.startInline.forEach((getStartIndex) => { + tempStart = getStartIndex.call({ lexer: this }, tempSrc); + if (typeof tempStart === 'number' && tempStart >= 0) { + startIndex = Math.min(startIndex, tempStart); + } + }); + if (startIndex < Infinity && startIndex >= 0) { + cutSrc = src.substring(0, startIndex + 1); + } + } + if (token = this.tokenizer.inlineText(cutSrc)) { + src = src.substring(token.raw.length); + if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started + prevChar = token.raw.slice(-1); + } + keepPrevChar = true; + lastToken = tokens[tokens.length - 1]; + if (lastToken && lastToken.type === 'text') { + lastToken.raw += token.raw; + lastToken.text += token.text; + } + else { + tokens.push(token); + } + continue; + } + if (src) { + const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); + if (this.options.silent) { + console.error(errMsg); + break; + } + else { + throw new Error(errMsg); + } + } + } + return tokens; + } + } + + /** + * Renderer + */ + class _Renderer { + options; + parser; // set by the parser + constructor(options) { + this.options = options || exports.defaults; + } + space(token) { + return ''; + } + code({ text, lang, escaped }) { + const langString = (lang || '').match(/^\S*/)?.[0]; + const code = text.replace(/\n$/, '') + '\n'; + if (!langString) { + return '
    '
    +                    + (escaped ? code : escape$1(code, true))
    +                    + '
    \n'; + } + return '
    '
    +                + (escaped ? code : escape$1(code, true))
    +                + '
    \n'; + } + blockquote({ tokens }) { + const body = this.parser.parse(tokens); + return `
    \n${body}
    \n`; + } + html({ text }) { + return text; + } + heading({ tokens, depth }) { + return `${this.parser.parseInline(tokens)}\n`; + } + hr(token) { + return '
    \n'; + } + list(token) { + const ordered = token.ordered; + const start = token.start; + let body = ''; + for (let j = 0; j < token.items.length; j++) { + const item = token.items[j]; + body += this.listitem(item); + } + const type = ordered ? 'ol' : 'ul'; + const startAttr = (ordered && start !== 1) ? (' start="' + start + '"') : ''; + return '<' + type + startAttr + '>\n' + body + '\n'; + } + listitem(item) { + let itemBody = ''; + if (item.task) { + const checkbox = this.checkbox({ checked: !!item.checked }); + if (item.loose) { + if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') { + item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; + if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { + item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; + } + } + else { + item.tokens.unshift({ + type: 'text', + raw: checkbox + ' ', + text: checkbox + ' ', + }); + } + } + else { + itemBody += checkbox + ' '; + } + } + itemBody += this.parser.parse(item.tokens, !!item.loose); + return `
  • ${itemBody}
  • \n`; + } + checkbox({ checked }) { + return ''; + } + paragraph({ tokens }) { + return `

    ${this.parser.parseInline(tokens)}

    \n`; + } + table(token) { + let header = ''; + // header + let cell = ''; + for (let j = 0; j < token.header.length; j++) { + cell += this.tablecell(token.header[j]); + } + header += this.tablerow({ text: cell }); + let body = ''; + for (let j = 0; j < token.rows.length; j++) { + const row = token.rows[j]; + cell = ''; + for (let k = 0; k < row.length; k++) { + cell += this.tablecell(row[k]); + } + body += this.tablerow({ text: cell }); + } + if (body) + body = `${body}`; + return '\n' + + '\n' + + header + + '\n' + + body + + '
    \n'; + } + tablerow({ text }) { + return `\n${text}\n`; + } + tablecell(token) { + const content = this.parser.parseInline(token.tokens); + const type = token.header ? 'th' : 'td'; + const tag = token.align + ? `<${type} align="${token.align}">` + : `<${type}>`; + return tag + content + `\n`; + } + /** + * span level renderer + */ + strong({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + em({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + codespan({ text }) { + return `${text}`; + } + br(token) { + return '
    '; + } + del({ tokens }) { + return `${this.parser.parseInline(tokens)}`; + } + link({ href, title, tokens }) { + const text = this.parser.parseInline(tokens); + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = '
    '; + return out; + } + image({ href, title, text }) { + const cleanHref = cleanUrl(href); + if (cleanHref === null) { + return text; + } + href = cleanHref; + let out = `${text} { + const tokens = genericToken[childTokens].flat(Infinity); + values = values.concat(this.walkTokens(tokens, callback)); + }); + } + else if (genericToken.tokens) { + values = values.concat(this.walkTokens(genericToken.tokens, callback)); + } + } + } + } + return values; + } + use(...args) { + const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; + args.forEach((pack) => { + // copy options to new object + const opts = { ...pack }; + // set async to true if it was set to true before + opts.async = this.defaults.async || opts.async || false; + // ==-- Parse "addon" extensions --== // + if (pack.extensions) { + pack.extensions.forEach((ext) => { + if (!ext.name) { + throw new Error('extension name required'); + } + if ('renderer' in ext) { // Renderer extensions + const prevRenderer = extensions.renderers[ext.name]; + if (prevRenderer) { + // Replace extension with func to run new extension but fall back if false + extensions.renderers[ext.name] = function (...args) { + let ret = ext.renderer.apply(this, args); + if (ret === false) { + ret = prevRenderer.apply(this, args); + } + return ret; + }; + } + else { + extensions.renderers[ext.name] = ext.renderer; + } + } + if ('tokenizer' in ext) { // Tokenizer Extensions + if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { + throw new Error("extension level must be 'block' or 'inline'"); + } + const extLevel = extensions[ext.level]; + if (extLevel) { + extLevel.unshift(ext.tokenizer); + } + else { + extensions[ext.level] = [ext.tokenizer]; + } + if (ext.start) { // Function to check for start of token + if (ext.level === 'block') { + if (extensions.startBlock) { + extensions.startBlock.push(ext.start); + } + else { + extensions.startBlock = [ext.start]; + } + } + else if (ext.level === 'inline') { + if (extensions.startInline) { + extensions.startInline.push(ext.start); + } + else { + extensions.startInline = [ext.start]; + } + } + } + } + if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens + extensions.childTokens[ext.name] = ext.childTokens; + } + }); + opts.extensions = extensions; + } + // ==-- Parse "overwrite" extensions --== // + if (pack.renderer) { + const renderer = this.defaults.renderer || new _Renderer(this.defaults); + for (const prop in pack.renderer) { + if (!(prop in renderer)) { + throw new Error(`renderer '${prop}' does not exist`); + } + if (['options', 'parser'].includes(prop)) { + // ignore options property + continue; + } + const rendererProp = prop; + const rendererFunc = pack.renderer[rendererProp]; + const prevRenderer = renderer[rendererProp]; + // Replace renderer with func to run extension, but fall back if false + renderer[rendererProp] = (...args) => { + let ret = rendererFunc.apply(renderer, args); + if (ret === false) { + ret = prevRenderer.apply(renderer, args); + } + return ret || ''; + }; + } + opts.renderer = renderer; + } + if (pack.tokenizer) { + const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); + for (const prop in pack.tokenizer) { + if (!(prop in tokenizer)) { + throw new Error(`tokenizer '${prop}' does not exist`); + } + if (['options', 'rules', 'lexer'].includes(prop)) { + // ignore options, rules, and lexer properties + continue; + } + const tokenizerProp = prop; + const tokenizerFunc = pack.tokenizer[tokenizerProp]; + const prevTokenizer = tokenizer[tokenizerProp]; + // Replace tokenizer with func to run extension, but fall back if false + // @ts-expect-error cannot type tokenizer function dynamically + tokenizer[tokenizerProp] = (...args) => { + let ret = tokenizerFunc.apply(tokenizer, args); + if (ret === false) { + ret = prevTokenizer.apply(tokenizer, args); + } + return ret; + }; + } + opts.tokenizer = tokenizer; + } + // ==-- Parse Hooks extensions --== // + if (pack.hooks) { + const hooks = this.defaults.hooks || new _Hooks(); + for (const prop in pack.hooks) { + if (!(prop in hooks)) { + throw new Error(`hook '${prop}' does not exist`); + } + if (['options', 'block'].includes(prop)) { + // ignore options and block properties + continue; + } + const hooksProp = prop; + const hooksFunc = pack.hooks[hooksProp]; + const prevHook = hooks[hooksProp]; + if (_Hooks.passThroughHooks.has(prop)) { + // @ts-expect-error cannot type hook function dynamically + hooks[hooksProp] = (arg) => { + if (this.defaults.async) { + return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { + return prevHook.call(hooks, ret); + }); + } + const ret = hooksFunc.call(hooks, arg); + return prevHook.call(hooks, ret); + }; + } + else { + // @ts-expect-error cannot type hook function dynamically + hooks[hooksProp] = (...args) => { + let ret = hooksFunc.apply(hooks, args); + if (ret === false) { + ret = prevHook.apply(hooks, args); + } + return ret; + }; + } + } + opts.hooks = hooks; + } + // ==-- Parse WalkTokens extensions --== // + if (pack.walkTokens) { + const walkTokens = this.defaults.walkTokens; + const packWalktokens = pack.walkTokens; + opts.walkTokens = function (token) { + let values = []; + values.push(packWalktokens.call(this, token)); + if (walkTokens) { + values = values.concat(walkTokens.call(this, token)); + } + return values; + }; + } + this.defaults = { ...this.defaults, ...opts }; + }); + return this; + } + setOptions(opt) { + this.defaults = { ...this.defaults, ...opt }; + return this; + } + lexer(src, options) { + return _Lexer.lex(src, options ?? this.defaults); + } + parser(tokens, options) { + return _Parser.parse(tokens, options ?? this.defaults); + } + parseMarkdown(blockType) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const parse = (src, options) => { + const origOpt = { ...options }; + const opt = { ...this.defaults, ...origOpt }; + const throwError = this.onError(!!opt.silent, !!opt.async); + // throw error if an extension set async to true but parse was called with async: false + if (this.defaults.async === true && origOpt.async === false) { + return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.')); + } + // throw error in case of non string input + if (typeof src === 'undefined' || src === null) { + return throwError(new Error('marked(): input parameter is undefined or null')); + } + if (typeof src !== 'string') { + return throwError(new Error('marked(): input parameter is of type ' + + Object.prototype.toString.call(src) + ', string expected')); + } + if (opt.hooks) { + opt.hooks.options = opt; + opt.hooks.block = blockType; + } + const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline); + const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline); + if (opt.async) { + return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) + .then(src => lexer(src, opt)) + .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) + .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) + .then(tokens => parser(tokens, opt)) + .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) + .catch(throwError); + } + try { + if (opt.hooks) { + src = opt.hooks.preprocess(src); + } + let tokens = lexer(src, opt); + if (opt.hooks) { + tokens = opt.hooks.processAllTokens(tokens); + } + if (opt.walkTokens) { + this.walkTokens(tokens, opt.walkTokens); + } + let html = parser(tokens, opt); + if (opt.hooks) { + html = opt.hooks.postprocess(html); + } + return html; + } + catch (e) { + return throwError(e); + } + }; + return parse; + } + onError(silent, async) { + return (e) => { + e.message += '\nPlease report this to https://github.com/markedjs/marked.'; + if (silent) { + const msg = '

    An error occurred:

    '
    +                        + escape$1(e.message + '', true)
    +                        + '
    '; + if (async) { + return Promise.resolve(msg); + } + return msg; + } + if (async) { + return Promise.reject(e); + } + throw e; + }; + } + } + + const markedInstance = new Marked(); + function marked(src, opt) { + return markedInstance.parse(src, opt); + } + /** + * Sets the default options. + * + * @param options Hash of options + */ + marked.options = + marked.setOptions = function (options) { + markedInstance.setOptions(options); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; + }; + /** + * Gets the original marked default options. + */ + marked.getDefaults = _getDefaults; + marked.defaults = exports.defaults; + /** + * Use Extension + */ + marked.use = function (...args) { + markedInstance.use(...args); + marked.defaults = markedInstance.defaults; + changeDefaults(marked.defaults); + return marked; + }; + /** + * Run callback for every token + */ + marked.walkTokens = function (tokens, callback) { + return markedInstance.walkTokens(tokens, callback); + }; + /** + * Compiles markdown to HTML without enclosing `p` tag. + * + * @param src String of markdown source to be compiled + * @param options Hash of options + * @return String of compiled HTML + */ + marked.parseInline = markedInstance.parseInline; + /** + * Expose + */ + marked.Parser = _Parser; + marked.parser = _Parser.parse; + marked.Renderer = _Renderer; + marked.TextRenderer = _TextRenderer; + marked.Lexer = _Lexer; + marked.lexer = _Lexer.lex; + marked.Tokenizer = _Tokenizer; + marked.Hooks = _Hooks; + marked.parse = marked; + const options = marked.options; + const setOptions = marked.setOptions; + const use = marked.use; + const walkTokens = marked.walkTokens; + const parseInline = marked.parseInline; + const parse = marked; + const parser = _Parser.parse; + const lexer = _Lexer.lex; + + exports.Hooks = _Hooks; + exports.Lexer = _Lexer; + exports.Marked = Marked; + exports.Parser = _Parser; + exports.Renderer = _Renderer; + exports.TextRenderer = _TextRenderer; + exports.Tokenizer = _Tokenizer; + exports.getDefaults = _getDefaults; + exports.lexer = lexer; + exports.marked = marked; + exports.options = options; + exports.parse = parse; + exports.parseInline = parseInline; + exports.parser = parser; + exports.setOptions = setOptions; + exports.use = use; + exports.walkTokens = walkTokens; + +})); +//# sourceMappingURL=marked.umd.js.map diff --git a/node_modules/marked/lib/marked.umd.js.map b/node_modules/marked/lib/marked.umd.js.map new file mode 100644 index 0000000..ebd5196 --- /dev/null +++ b/node_modules/marked/lib/marked.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"marked.umd.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket, } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n","import { edit, noopTest, } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape, } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
    \\n${body}
    \\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
    \\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/marked/man/marked.1 b/node_modules/marked/man/marked.1 new file mode 100644 index 0000000..1a8a556 --- /dev/null +++ b/node_modules/marked/man/marked.1 @@ -0,0 +1,111 @@ +.TH "MARKED" "1" "October 2024" "14.1.2" +.SH "NAME" +\fBmarked\fR \- a javascript markdown parser +.SH SYNOPSIS +.P +\fBmarked\fP [\fB\-o\fP ] [\fB\-i\fP ] [\fB\-s\fP ] [\fB\-c\fP ] [\fB\-\-help\fP] [\fB\-\-version\fP] [\fB\-\-tokens\fP] [\fB\-\-no\-clobber\fP] [\fB\-\-pedantic\fP] [\fB\-\-gfm\fP] [\fB\-\-breaks\fP] [\fB\-\-no\-etc\.\.\.\fP] [\fB\-\-silent\fP] [filename] +.SH DESCRIPTION +.P +marked is a full\-featured javascript markdown parser, built for speed\. +.br +It also includes multiple GFM features\. +.SH EXAMPLES +.RS 2 +.nf +cat in\.md | marked > out\.html +.fi +.RE +.RS 2 +.nf +echo "hello *world*" | marked +.fi +.RE +.RS 2 +.nf +marked \-o out\.html \-i in\.md \-\-gfm +.fi +.RE +.RS 2 +.nf +marked \-\-output="hello world\.html" \-i in\.md \-\-no\-breaks +.fi +.RE +.SH OPTIONS + +.RS 1 +.IP \(bu 2 +\-o, \-\-output [output file] +.br +Specify file output\. If none is specified, write to stdout\. +.IP \(bu 2 +\-i, \-\-input [input file] +.br +Specify file input, otherwise use last argument as input file\. +.br +If no input file is specified, read from stdin\. +.IP \(bu 2 +\-s, \-\-string [markdown string] +.br +Specify string input instead of a file\. +.IP \(bu 2 +\-c, \-\-config [config file] +.br +Specify config file to use instead of the default \fB~/\.marked\.json\fP or \fB~/\.marked\.js\fP or \fB~/\.marked/index\.js\fP\|\. +.IP \(bu 2 +\-t, \-\-tokens +.br +Output a token list instead of html\. +.IP \(bu 2 +\-n, \-\-no\-clobber +.br +Do not overwrite \fBoutput\fP if it exists\. +.IP \(bu 2 +\-\-pedantic +.br +Conform to obscure parts of markdown\.pl as much as possible\. +.br +Don't fix original markdown bugs\. +.IP \(bu 2 +\-\-gfm +.br +Enable github flavored markdown\. +.IP \(bu 2 +\-\-breaks +.br +Enable GFM line breaks\. Only works with the gfm option\. +.IP \(bu 2 +\-\-no\-breaks, \-no\-etc\.\.\. +.br +The inverse of any of the marked options above\. +.IP \(bu 2 +\-\-silent +.br +Silence error output\. +.IP \(bu 2 +\-h, \-\-help +.br +Display help information\. + +.RE +.SH CONFIGURATION +.P +For configuring and running programmatically\. +.P +Example +.RS 2 +.nf +import { Marked } from 'marked'; +const marked = new Marked({ gfm: true }); +marked\.parse('*foo*'); +.fi +.RE +.SH BUGS +.P +Please report any bugs to https://github.com/markedjs/marked +.SH LICENSE +.P +Copyright (c) 2011\-2014, Christopher Jeffrey (MIT License)\. +.SH SEE ALSO +.P +markdown(1), nodejs(1) + diff --git a/node_modules/marked/man/marked.1.md b/node_modules/marked/man/marked.1.md new file mode 100644 index 0000000..d5b94a4 --- /dev/null +++ b/node_modules/marked/man/marked.1.md @@ -0,0 +1,92 @@ +# marked(1) -- a javascript markdown parser + +## SYNOPSIS + +`marked` [`-o` ] [`-i` ] [`-s` ] [`-c` ] [`--help`] [`--version`] [`--tokens`] [`--no-clobber`] [`--pedantic`] [`--gfm`] [`--breaks`] [`--no-etc...`] [`--silent`] [filename] + +## DESCRIPTION + +marked is a full-featured javascript markdown parser, built for speed. +It also includes multiple GFM features. + +## EXAMPLES + +```sh +cat in.md | marked > out.html +``` + +```sh +echo "hello *world*" | marked +``` + +```sh +marked -o out.html -i in.md --gfm +``` + +```sh +marked --output="hello world.html" -i in.md --no-breaks +``` + +## OPTIONS + +* -o, --output [output file] +Specify file output. If none is specified, write to stdout. + +* -i, --input [input file] +Specify file input, otherwise use last argument as input file. +If no input file is specified, read from stdin. + +* -s, --string [markdown string] +Specify string input instead of a file. + +* -c, --config [config file] +Specify config file to use instead of the default `~/.marked.json` or `~/.marked.js` or `~/.marked/index.js`. + +* -t, --tokens +Output a token list instead of html. + +* -n, --no-clobber +Do not overwrite `output` if it exists. + +* --pedantic +Conform to obscure parts of markdown.pl as much as possible. +Don't fix original markdown bugs. + +* --gfm +Enable github flavored markdown. + +* --breaks +Enable GFM line breaks. Only works with the gfm option. + +* --no-breaks, -no-etc... +The inverse of any of the marked options above. + +* --silent +Silence error output. + +* -h, --help +Display help information. + +## CONFIGURATION + +For configuring and running programmatically. + +Example + +```js +import { Marked } from 'marked'; +const marked = new Marked({ gfm: true }); +marked.parse('*foo*'); +``` + +## BUGS + +Please report any bugs to . + +## LICENSE + +Copyright (c) 2011-2014, Christopher Jeffrey (MIT License). + +## SEE ALSO + +markdown(1), nodejs(1) diff --git a/node_modules/marked/marked.min.js b/node_modules/marked/marked.min.js new file mode 100644 index 0000000..9869504 --- /dev/null +++ b/node_modules/marked/marked.min.js @@ -0,0 +1,6 @@ +/** + * marked v14.1.3 - a markdown parser + * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) + * https://github.com/markedjs/marked + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).marked={})}(this,(function(e){"use strict";function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function n(t){e.defaults=t}e.defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};const s=/[&<>"']/,r=new RegExp(s.source,"g"),i=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,l=new RegExp(i.source,"g"),o={"&":"&","<":"<",">":">",'"':""","'":"'"},a=e=>o[e];function c(e,t){if(t){if(s.test(e))return e.replace(r,a)}else if(i.test(e))return e.replace(l,a);return e}const h=/(^|[^\[])\^/g;function p(e,t){let n="string"==typeof e?e:e.source;t=t||"";const s={replace:(e,t)=>{let r="string"==typeof t?t:t.source;return r=r.replace(h,"$1"),n=n.replace(e,r),s},getRegex:()=>new RegExp(n,t)};return s}function u(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const k={exec:()=>null};function g(e,t){const n=e.replace(/\|/g,((e,t,n)=>{let s=!1,r=t;for(;--r>=0&&"\\"===n[r];)s=!s;return s?"|":" |"})).split(/ \|/);let s=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^(?: {1,4}| {0,3}\t)/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:f(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t){const n=e.match(/^(\s+)(?:```)/);if(null===n)return t;const s=n[1];return t.split("\n").map((e=>{const t=e.match(/^\s+/);if(null===t)return e;const[n]=t;return n.length>=s.length?e.slice(s.length):e})).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=f(e,"#");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:f(t[0],"\n")}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){let e=f(t[0],"\n").split("\n"),n="",s="";const r=[];for(;e.length>0;){let t=!1;const i=[];let l;for(l=0;l/.test(e[l]))i.push(e[l]),t=!0;else{if(t)break;i.push(e[l])}e=e.slice(l);const o=i.join("\n"),a=o.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,"\n $1").replace(/^ {0,3}>[ \t]?/gm,"");n=n?`${n}\n${o}`:o,s=s?`${s}\n${a}`:a;const c=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(a,r,!0),this.lexer.state.top=c,0===e.length)break;const h=r[r.length-1];if("code"===h?.type)break;if("blockquote"===h?.type){const t=h,i=t.raw+"\n"+e.join("\n"),l=this.blockquote(i);r[r.length-1]=l,n=n.substring(0,n.length-t.raw.length)+l.raw,s=s.substring(0,s.length-t.text.length)+l.text;break}if("list"!==h?.type);else{const t=h,i=t.raw+"\n"+e.join("\n"),l=this.list(i);r[r.length-1]=l,n=n.substring(0,n.length-h.raw.length)+l.raw,s=s.substring(0,s.length-t.raw.length)+l.raw,e=i.substring(r[r.length-1].raw.length).split("\n")}}return{type:"blockquote",raw:n,tokens:r,text:s}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const s=n.length>1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");const i=new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`);let l=!1;for(;e;){let n=!1,s="",o="";if(!(t=i.exec(e)))break;if(this.rules.block.hr.test(e))break;s=t[0],e=e.substring(s.length);let a=t[2].split("\n",1)[0].replace(/^\t+/,(e=>" ".repeat(3*e.length))),c=e.split("\n",1)[0],h=!a.trim(),p=0;if(this.options.pedantic?(p=2,o=a.trimStart()):h?p=t[1].length+1:(p=t[2].search(/[^ ]/),p=p>4?1:p,o=a.slice(p),p+=t[1].length),h&&/^[ \t]*$/.test(c)&&(s+=c+"\n",e=e.substring(c.length+1),n=!0),!n){const t=new RegExp(`^ {0,${Math.min(3,p-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),n=new RegExp(`^ {0,${Math.min(3,p-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),r=new RegExp(`^ {0,${Math.min(3,p-1)}}(?:\`\`\`|~~~)`),i=new RegExp(`^ {0,${Math.min(3,p-1)}}#`),l=new RegExp(`^ {0,${Math.min(3,p-1)}}<[a-z].*>`,"i");for(;e;){const u=e.split("\n",1)[0];let k;if(c=u,this.options.pedantic?(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," "),k=c):k=c.replace(/\t/g," "),r.test(c))break;if(i.test(c))break;if(l.test(c))break;if(t.test(c))break;if(n.test(c))break;if(k.search(/[^ ]/)>=p||!c.trim())o+="\n"+k.slice(p);else{if(h)break;if(a.replace(/\t/g," ").search(/[^ ]/)>=4)break;if(r.test(a))break;if(i.test(a))break;if(n.test(a))break;o+="\n"+c}h||c.trim()||(h=!0),s+=u+"\n",e=e.substring(u.length+1),a=k.slice(p)}}r.loose||(l?r.loose=!0:/\n[ \t]*\n[ \t]*$/.test(s)&&(l=!0));let u,k=null;this.options.gfm&&(k=/^\[[ xX]\] /.exec(o),k&&(u="[ ] "!==k[0],o=o.replace(/^\[[ xX]\] +/,""))),r.items.push({type:"list_item",raw:s,task:!!k,checked:u,loose:!1,text:o,tokens:[]}),r.raw+=s}r.items[r.items.length-1].raw=r.items[r.items.length-1].raw.trimEnd(),r.items[r.items.length-1].text=r.items[r.items.length-1].text.trimEnd(),r.raw=r.raw.trimEnd();for(let e=0;e"space"===e.type)),n=t.length>0&&t.some((e=>/\n.*\n/.test(e.raw)));r.loose=n}if(r.loose)for(let e=0;e$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:s}}}table(e){const t=this.rules.block.table.exec(e);if(!t)return;if(!/[:|]/.test(t[2]))return;const n=g(t[1]),s=t[2].replace(/^\||\| *$/g,"").split("|"),r=t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[],i={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===s.length){for(const e of s)/^ *-+: *$/.test(e)?i.align.push("right"):/^ *:-+: *$/.test(e)?i.align.push("center"):/^ *:-+ *$/.test(e)?i.align.push("left"):i.align.push(null);for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:i.align[t]}))));return i}}lheading(e){const t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){const t=this.rules.block.paragraph.exec(e);if(t){const e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){const t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){const t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:c(t[1])}}tag(e){const t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^
    /i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=f(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let s=0;s-1){const n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],s="";if(this.options.pedantic){const e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);e&&(n=e[1],s=e[3])}else s=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^$/.test(e)?n.slice(1):n.slice(1,-1)),d(t,{href:n?n.replace(this.rules.inline.anyPunctuation,"$1"):n,title:s?s.replace(this.rules.inline.anyPunctuation,"$1"):s},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){const e=t[(n[2]||n[1]).replace(/\s+/g," ").toLowerCase()];if(!e){const e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return d(n,e,n[0],this.lexer)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s)return;if(s[3]&&n.match(/[\p{L}\p{N}]/u))return;if(!(s[1]||s[2]||"")||!n||this.rules.inline.punctuation.exec(n)){const n=[...s[0]].length-1;let r,i,l=n,o=0;const a="*"===s[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(a.lastIndex=0,t=t.slice(-1*e.length+n);null!=(s=a.exec(t));){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(i=[...r].length,s[3]||s[4]){l+=i;continue}if((s[5]||s[6])&&n%3&&!((n+i)%3)){o+=i;continue}if(l-=i,l>0)continue;i=Math.min(i,i+l+o);const t=[...s[0]][0].length,a=e.slice(0,n+s.index+t+i);if(Math.min(n,i)%2){const e=a.slice(1,-1);return{type:"em",raw:a,text:e,tokens:this.lexer.inlineTokens(e)}}const c=a.slice(2,-2);return{type:"strong",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," ");const n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return n&&s&&(e=e.substring(1,e.length-1)),e=c(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){const t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=c(t[1]),n="mailto:"+e):(e=c(t[1]),n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=c(t[0]),n="mailto:"+e;else{let s;do{s=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(s!==t[0]);e=c(t[0]),n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){const t=this.rules.inline.text.exec(e);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:c(t[0]),{type:"text",raw:t[0],text:e}}}}const b=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,w=/(?:[*+-]|\d{1,9}[.)])/,m=p(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,w).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),y=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,$=/(?!\s*\])(?:\\.|[^\[\]\\])+/,z=p(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",$).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),T=p(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,w).getRegex(),R="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",_=/|$))/,A=p("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",_).replace("tag",R).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),S=p(y).replace("hr",b).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),I={blockquote:p(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",S).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:z,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:b,html:A,lheading:m,list:T,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:S,table:k,text:/^[^\n]+/},E=p("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",b).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),q={...I,table:E,paragraph:p(y).replace("hr",b).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",E).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex()},Z={...I,html:p("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",_).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:k,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:p(y).replace("hr",b).replace("heading"," *#{1,6} *[^\n]").replace("lheading",m).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},P=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,L=/^( {2,}|\\)\n(?!\s*$)/,v="\\p{P}\\p{S}",Q=p(/^((?![*_])[\spunctuation])/,"u").replace(/punctuation/g,v).getRegex(),B=p(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,v).getRegex(),M=p("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,v).getRegex(),O=p("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,v).getRegex(),j=p(/\\([punct])/,"gu").replace(/punct/g,v).getRegex(),D=p(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),C=p(_).replace("(?:--\x3e|$)","--\x3e").getRegex(),H=p("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",C).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),U=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,X=p(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",U).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),F=p(/^!?\[(label)\]\[(ref)\]/).replace("label",U).replace("ref",$).getRegex(),N=p(/^!?\[(ref)\](?:\[\])?/).replace("ref",$).getRegex(),G={_backpedal:k,anyPunctuation:j,autolink:D,blockSkip:/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,br:L,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:k,emStrongLDelim:B,emStrongRDelimAst:M,emStrongRDelimUnd:O,escape:P,link:X,nolink:N,punctuation:Q,reflink:F,reflinkSearch:p("reflink|nolink(?!\\()","g").replace("reflink",F).replace("nolink",N).getRegex(),tag:H,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\!!(s=n.call({lexer:this},e,t))&&(e=e.substring(s.raw.length),t.push(s),!0)))))if(s=this.tokenizer.space(e))e=e.substring(s.raw.length),1===s.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(s);else if(s=this.tokenizer.code(e))e=e.substring(s.raw.length),r=t[t.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?t.push(s):(r.raw+="\n"+s.raw,r.text+="\n"+s.text,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(s=this.tokenizer.fences(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.heading(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.hr(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.blockquote(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.list(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.html(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.def(e))e=e.substring(s.raw.length),r=t[t.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?this.tokens.links[s.tag]||(this.tokens.links[s.tag]={href:s.href,title:s.title}):(r.raw+="\n"+s.raw,r.text+="\n"+s.raw,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(s=this.tokenizer.table(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.lheading(e))e=e.substring(s.raw.length),t.push(s);else{if(i=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startBlock.forEach((e=>{s=e.call({lexer:this},n),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(this.state.top&&(s=this.tokenizer.paragraph(i)))r=t[t.length-1],n&&"paragraph"===r?.type?(r.raw+="\n"+s.raw,r.text+="\n"+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(s),n=i.length!==e.length,e=e.substring(s.raw.length);else if(s=this.tokenizer.text(e))e=e.substring(s.raw.length),r=t[t.length-1],r&&"text"===r.type?(r.raw+="\n"+s.raw,r.text+="\n"+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(s);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,s,r,i,l,o,a=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(a));)e.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.anyPunctuation.exec(a));)a=a.slice(0,i.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(l||(o=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((s=>!!(n=s.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.escape(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(e))e=e.substring(n.raw.length),s=t[t.length-1],s&&"text"===n.type&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.link(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(n.raw.length),s=t[t.length-1],s&&"text"===n.type&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(e,a,o))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(e))e=e.substring(n.raw.length),t.push(n);else if(this.state.inLink||!(n=this.tokenizer.url(e))){if(r=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startInline.forEach((e=>{s=e.call({lexer:this},n),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(n=this.tokenizer.inlineText(r))e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),l=!0,s=t[t.length-1],s&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(n.raw.length),t.push(n);return t}}class te{options;parser;constructor(t){this.options=t||e.defaults}space(e){return""}code({text:e,lang:t,escaped:n}){const s=(t||"").match(/^\S*/)?.[0],r=e.replace(/\n$/,"")+"\n";return s?'
    '+(n?r:c(r,!0))+"
    \n":"
    "+(n?r:c(r,!0))+"
    \n"}blockquote({tokens:e}){return`
    \n${this.parser.parse(e)}
    \n`}html({text:e}){return e}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)}\n`}hr(e){return"
    \n"}list(e){const t=e.ordered,n=e.start;let s="";for(let t=0;t\n"+s+"\n"}listitem(e){let t="";if(e.task){const n=this.checkbox({checked:!!e.checked});e.loose?e.tokens.length>0&&"paragraph"===e.tokens[0].type?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+e.tokens[0].tokens[0].text)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" "}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • \n`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    \n`}table(e){let t="",n="";for(let t=0;t${s}`),"\n\n"+t+"\n"+s+"
    \n"}tablerow({text:e}){return`\n${e}\n`}tablecell(e){const t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${e}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){const s=this.parser.parseInline(n),r=u(e);if(null===r)return s;let i='
    ",i}image({href:e,title:t,text:n}){const s=u(e);if(null===s)return n;let r=`${n}{const r=e[s].flat(1/0);n=n.concat(this.walkTokens(r,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{const n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){const n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let s=e.renderer.apply(this,t);return!1===s&&(s=n.apply(this,t)),s}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");const n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){const t=this.defaults.renderer||new te(this.defaults);for(const n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;const s=n,r=e.renderer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){const t=this.defaults.tokenizer||new x(this.defaults);for(const n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;const s=n,r=e.tokenizer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){const t=this.defaults.hooks||new re;for(const n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;const s=n,r=e.hooks[s],i=t[s];re.passThroughHooks.has(n)?t[s]=e=>{if(this.defaults.async)return Promise.resolve(r.call(t,e)).then((e=>i.call(t,e)));const n=r.call(t,e);return i.call(t,n)}:t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){const t=this.defaults.walkTokens,s=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(s.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ee.lex(e,t??this.defaults)}parser(e,t){return se.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{const s={...n},r={...this.defaults,...s},i=this.onError(!!r.silent,!!r.async);if(!0===this.defaults.async&&!1===s.async)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(null==t)return i(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));r.hooks&&(r.hooks.options=r,r.hooks.block=e);const l=r.hooks?r.hooks.provideLexer():e?ee.lex:ee.lexInline,o=r.hooks?r.hooks.provideParser():e?se.parse:se.parseInline;if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(t):t).then((e=>l(e,r))).then((e=>r.hooks?r.hooks.processAllTokens(e):e)).then((e=>r.walkTokens?Promise.all(this.walkTokens(e,r.walkTokens)).then((()=>e)):e)).then((e=>o(e,r))).then((e=>r.hooks?r.hooks.postprocess(e):e)).catch(i);try{r.hooks&&(t=r.hooks.preprocess(t));let e=l(t,r);r.hooks&&(e=r.hooks.processAllTokens(e)),r.walkTokens&&this.walkTokens(e,r.walkTokens);let n=o(e,r);return r.hooks&&(n=r.hooks.postprocess(n)),n}catch(e){return i(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){const e="

    An error occurred:

    "+c(n.message+"",!0)+"
    ";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}}const le=new ie;function oe(e,t){return le.parse(e,t)}oe.options=oe.setOptions=function(e){return le.setOptions(e),oe.defaults=le.defaults,n(oe.defaults),oe},oe.getDefaults=t,oe.defaults=e.defaults,oe.use=function(...e){return le.use(...e),oe.defaults=le.defaults,n(oe.defaults),oe},oe.walkTokens=function(e,t){return le.walkTokens(e,t)},oe.parseInline=le.parseInline,oe.Parser=se,oe.parser=se.parse,oe.Renderer=te,oe.TextRenderer=ne,oe.Lexer=ee,oe.lexer=ee.lex,oe.Tokenizer=x,oe.Hooks=re,oe.parse=oe;const ae=oe.options,ce=oe.setOptions,he=oe.use,pe=oe.walkTokens,ue=oe.parseInline,ke=oe,ge=se.parse,fe=ee.lex;e.Hooks=re,e.Lexer=ee,e.Marked=ie,e.Parser=se,e.Renderer=te,e.TextRenderer=ne,e.Tokenizer=x,e.getDefaults=t,e.lexer=fe,e.marked=oe,e.options=ae,e.parse=ke,e.parseInline=ue,e.parser=ge,e.setOptions=ce,e.use=he,e.walkTokens=pe})); diff --git a/node_modules/marked/package.json b/node_modules/marked/package.json new file mode 100644 index 0000000..4be4dcc --- /dev/null +++ b/node_modules/marked/package.json @@ -0,0 +1,110 @@ +{ + "name": "marked", + "description": "A markdown parser built for speed", + "author": "Christopher Jeffrey", + "version": "14.1.3", + "type": "module", + "main": "./lib/marked.cjs", + "module": "./lib/marked.esm.js", + "browser": "./lib/marked.umd.js", + "types": "./lib/marked.d.ts", + "bin": { + "marked": "bin/marked.js" + }, + "man": "./man/marked.1", + "files": [ + "bin/", + "lib/", + "man/", + "marked.min.js" + ], + "exports": { + ".": { + "import": { + "types": "./lib/marked.d.ts", + "default": "./lib/marked.esm.js" + }, + "default": { + "types": "./lib/marked.d.cts", + "default": "./lib/marked.cjs" + } + }, + "./bin/marked": "./bin/marked.js", + "./marked.min.js": "./marked.min.js", + "./package.json": "./package.json" + }, + "publishConfig": { + "provenance": true + }, + "repository": "git://github.com/markedjs/marked.git", + "homepage": "https://marked.js.org", + "bugs": { + "url": "http://github.com/markedjs/marked/issues" + }, + "license": "MIT", + "keywords": [ + "markdown", + "markup", + "html" + ], + "tags": [ + "markdown", + "markup", + "html" + ], + "devDependencies": { + "@arethetypeswrong/cli": "^0.16.4", + "@markedjs/eslint-config": "^1.0.5", + "@markedjs/testutils": "14.1.1-0", + "@rollup/plugin-terser": "^0.4.4", + "@rollup/plugin-typescript": "^12.1.0", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^11.0.0", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.1", + "cheerio": "1.0.0", + "commonmark": "0.31.2", + "cross-env": "^7.0.3", + "dts-bundle-generator": "^9.5.1", + "eslint": "^9.12.0", + "highlight.js": "^11.10.0", + "markdown-it": "14.1.0", + "marked-highlight": "^2.1.4", + "marked-man": "^2.1.0", + "node-fetch": "^3.3.2", + "recheck": "^4.4.5", + "rollup": "^4.24.0", + "semantic-release": "^24.1.2", + "titleize": "^4.0.0", + "ts-expect": "^1.3.0", + "tslib": "^2.7.0", + "typescript": "5.6.3" + }, + "scripts": { + "bench": "npm run build && node test/bench.js", + "build": "npm run rollup && npm run build:types && npm run build:man", + "build:docs": "npm run build && node docs/build.js", + "build:man": "marked-man man/marked.1.md > man/marked.1", + "build:reset": "git checkout upstream/master lib/marked.cjs lib/marked.umd.js lib/marked.esm.js marked.min.js", + "build:types": "tsc && dts-bundle-generator --export-referenced-types --project tsconfig.json -o lib/marked.d.ts src/marked.ts && dts-bundle-generator --export-referenced-types --project tsconfig.json -o lib/marked.d.cts src/marked.ts", + "lint": "eslint --fix", + "rollup": "rollup -c rollup.config.js", + "rules": "node test/rules.js", + "test": "npm run build && npm run test:specs && npm run test:unit", + "test:all": "npm test && npm run test:umd && npm run test:types && npm run test:lint", + "test:lint": "eslint", + "test:only": "npm run build && npm run test:specs:only && npm run test:unit:only", + "test:redos": "node test/recheck.js > vuln.js", + "test:specs:only": "node --test --test-only --test-reporter=spec test/run-spec-tests.js", + "test:specs": "node --test --test-reporter=spec test/run-spec-tests.js", + "test:types": "tsc --project tsconfig-type-test.json && attw -P --exclude-entrypoints ./bin/marked ./marked.min.js", + "test:umd": "node test/umd-test.js", + "test:unit:only": "node --test --test-only --test-reporter=spec test/unit/*.test.js", + "test:unit": "node --test --test-reporter=spec test/unit/*.test.js", + "test:update": "node test/update-specs.js" + }, + "engines": { + "node": ">= 18" + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5bfa3a0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,24 @@ +{ + "name": "network", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "marked": "^14.1.3" + } + }, + "node_modules/marked": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz", + "integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..52961b9 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "marked": "^14.1.3" + } +} diff --git a/script.js b/script.js index 82122eb..7b28eda 100644 --- a/script.js +++ b/script.js @@ -5,42 +5,58 @@ import { render, html } from "https://cdn.jsdelivr.net/npm/lit-html@3/+esm"; const fileInput = document.getElementById("fileInput"); const controls = document.getElementById("controls"); -const cards=document.querySelectorAll(".card"); -const DescriptionBox=document.getElementById("description-box"); - -const values={ - - "author":{ - title:'Co-authors', - description:'"Coauthors" presents a graph visualizing the collaborative relationships between authors and co-authors in Arxiv papers focused on Large Language Models (LLMs), highlighting key contributors and their research networks.' - }, - - "rbc":{ - title:'Religion by Country', - description:'"Religion by Country" displays a network graph that explores the distribution and relationships of religions practiced across different countries, offering insights into cultural and religious diversity worldwide.' - }, - - "flight":{ - - title:'Flights by Airport 2023', - description:'Analyze the network to gain insights into flights arriving at a specific airport.' +const $DescriptionBox=document.getElementById("description-box"); +const $demos = document.getElementById("demos"); + +let demosArray; +let clickedCardId=''; + +function handleCardClick(event) { + const target = event.currentTarget; // Get the clicked card element + const index = target.getAttribute('data-index'); // Get the index from the data attribute + clickedCardId=index; + // Retrieve the card details from demosArray using index + const demo = demosArray[index]; // Access the corresponding demo object + const title = demo.title; // Get the title + const description = demo.description; // Get the description + + // Log the title and description or perform any desired actions + console.log(`Card clicked: ${title}`); + console.log(`Description: ${description}`); + + $DescriptionBox.classList.remove('d-none'); + document.querySelector('#title').textContent=title; + document.querySelector('#description').textContent=description; } -} - -cards.forEach((card)=>{ - - card.addEventListener("click",()=>{ +fetch("config.json") + .then((res) => res.json()) + .then(data => { + demosArray = data.demos; + const demoHTML = demosArray.map((demo,index) => { + return html` +
    + `; + }); + + render(demoHTML, $demos); + + const demoCards = $demos.querySelectorAll('.demo'); // Select all card links + demoCards.forEach(card => { + card.addEventListener('click', handleCardClick); // Attach the event listener + }); + }) + .catch(error => { + console.error('Error fetching config.json:', error); // Handle any errors + }); - DescriptionBox.classList.remove("d-none"); - const val=card.getAttribute("data-card"); - const title=values[val].title; - const description=values[val].description; - // console.log(title," ",description); - document.getElementById("title").innerHTML=title; - document.getElementById("description").innerHTML=description; - }) -}) let data, nodeLinks; @@ -81,6 +97,8 @@ function processCSVData(csvContent) { const nodeColor = (d) => (d.key == "source" ? "rgba(255,0,0,0.5)" : "rgba(0,0,255,0.5)"); + + function renderControls(headers) { headers = headers.filter((d) => d.trim()); const controlsTemplate = html` @@ -104,7 +122,7 @@ function renderControls(headers) {
    @@ -121,14 +139,24 @@ function renderControls(headers) { render(controlsTemplate, controls); updateNetwork(); + // Add event listener for the range input const thresholdRange = document.getElementById("thresholdRange"); const thresholdValue = document.getElementById("thresholdValue"); thresholdRange.addEventListener("input", (e) => { thresholdValue.textContent = `${Math.round(e.target.value * 100)}%`; drawNetwork(); + updateURL(); // Call updateURL when threshold changes }); -} + + // Add event listeners for the dropdowns to update the URL when changed + const dropdowns = ['sourceSelect', 'targetSelect', 'metricSelect']; + dropdowns.forEach(id => { + document.getElementById(id).addEventListener('change', updateURL); + }); + + + // Function to update the URL based on the selected values and clicked card controls.addEventListener("change", (e) => { if (e.target.id == "sourceSelect" || e.target.id == "targetSelect" || e.target.id == "metricSelect") updateNetwork(); @@ -144,7 +172,7 @@ function updateNetwork() { nodeLinks.nodes.forEach((node) => (node.value = JSON.parse(node.id)[1])); nodeLinks.links.sort((a, b) => b.metric - a.metric); nodeLinks.links.forEach((link, index) => (link._rank = index)); - console.log(nodeLinks.links); + // console.log(nodeLinks.links); } drawNetwork(); } @@ -188,3 +216,10 @@ function brush(nodes) { `; render(listGroupTemplate, document.getElementById("selection")); } + +} + + + + + From ff4d3b9f4325de96fd728fe804ab601e87d35fa5 Mon Sep 17 00:00:00 2001 From: krishna-gramener Date: Thu, 24 Oct 2024 19:31:52 +0530 Subject: [PATCH 04/15] Delete node_modules directory --- node_modules/.bin/marked | 16 - node_modules/.bin/marked.cmd | 17 - node_modules/.bin/marked.ps1 | 28 - node_modules/.package-lock.json | 19 - node_modules/marked/LICENSE.md | 44 - node_modules/marked/README.md | 107 - node_modules/marked/bin/main.js | 282 --- node_modules/marked/bin/marked.js | 15 - node_modules/marked/lib/marked.cjs | 2521 -------------------- node_modules/marked/lib/marked.cjs.map | 1 - node_modules/marked/lib/marked.d.cts | 667 ------ node_modules/marked/lib/marked.d.ts | 667 ------ node_modules/marked/lib/marked.esm.js | 2503 -------------------- node_modules/marked/lib/marked.esm.js.map | 1 - node_modules/marked/lib/marked.umd.js | 2527 --------------------- node_modules/marked/lib/marked.umd.js.map | 1 - node_modules/marked/man/marked.1 | 111 - node_modules/marked/man/marked.1.md | 92 - node_modules/marked/marked.min.js | 6 - node_modules/marked/package.json | 110 - 20 files changed, 9735 deletions(-) delete mode 100644 node_modules/.bin/marked delete mode 100644 node_modules/.bin/marked.cmd delete mode 100644 node_modules/.bin/marked.ps1 delete mode 100644 node_modules/.package-lock.json delete mode 100644 node_modules/marked/LICENSE.md delete mode 100644 node_modules/marked/README.md delete mode 100644 node_modules/marked/bin/main.js delete mode 100644 node_modules/marked/bin/marked.js delete mode 100644 node_modules/marked/lib/marked.cjs delete mode 100644 node_modules/marked/lib/marked.cjs.map delete mode 100644 node_modules/marked/lib/marked.d.cts delete mode 100644 node_modules/marked/lib/marked.d.ts delete mode 100644 node_modules/marked/lib/marked.esm.js delete mode 100644 node_modules/marked/lib/marked.esm.js.map delete mode 100644 node_modules/marked/lib/marked.umd.js delete mode 100644 node_modules/marked/lib/marked.umd.js.map delete mode 100644 node_modules/marked/man/marked.1 delete mode 100644 node_modules/marked/man/marked.1.md delete mode 100644 node_modules/marked/marked.min.js delete mode 100644 node_modules/marked/package.json diff --git a/node_modules/.bin/marked b/node_modules/.bin/marked deleted file mode 100644 index 9ba4dfd..0000000 --- a/node_modules/.bin/marked +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") - -case `uname` in - *CYGWIN*|*MINGW*|*MSYS*) - if command -v cygpath > /dev/null 2>&1; then - basedir=`cygpath -w "$basedir"` - fi - ;; -esac - -if [ -x "$basedir/node" ]; then - exec "$basedir/node" "$basedir/../marked/bin/marked.js" "$@" -else - exec node "$basedir/../marked/bin/marked.js" "$@" -fi diff --git a/node_modules/.bin/marked.cmd b/node_modules/.bin/marked.cmd deleted file mode 100644 index a736455..0000000 --- a/node_modules/.bin/marked.cmd +++ /dev/null @@ -1,17 +0,0 @@ -@ECHO off -GOTO start -:find_dp0 -SET dp0=%~dp0 -EXIT /b -:start -SETLOCAL -CALL :find_dp0 - -IF EXIST "%dp0%\node.exe" ( - SET "_prog=%dp0%\node.exe" -) ELSE ( - SET "_prog=node" - SET PATHEXT=%PATHEXT:;.JS;=;% -) - -endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\marked\bin\marked.js" %* diff --git a/node_modules/.bin/marked.ps1 b/node_modules/.bin/marked.ps1 deleted file mode 100644 index c6b4c9f..0000000 --- a/node_modules/.bin/marked.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -} -$ret=0 -if (Test-Path "$basedir/node$exe") { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "$basedir/node$exe" "$basedir/../marked/bin/marked.js" $args - } else { - & "$basedir/node$exe" "$basedir/../marked/bin/marked.js" $args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & "node$exe" "$basedir/../marked/bin/marked.js" $args - } else { - & "node$exe" "$basedir/../marked/bin/marked.js" $args - } - $ret=$LASTEXITCODE -} -exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json deleted file mode 100644 index d2f5b2e..0000000 --- a/node_modules/.package-lock.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "network", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/marked": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz", - "integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - } - } -} diff --git a/node_modules/marked/LICENSE.md b/node_modules/marked/LICENSE.md deleted file mode 100644 index 4bd2d4a..0000000 --- a/node_modules/marked/LICENSE.md +++ /dev/null @@ -1,44 +0,0 @@ -# License information - -## Contribution License Agreement - -If you contribute code to this project, you are implicitly allowing your code -to be distributed under the MIT license. You are also implicitly verifying that -all code is your original work. `` - -## Marked - -Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/) -Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -## Markdown - -Copyright © 2004, John Gruber -http://daringfireball.net/ -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -* Neither the name “Markdown” nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. diff --git a/node_modules/marked/README.md b/node_modules/marked/README.md deleted file mode 100644 index d4ab251..0000000 --- a/node_modules/marked/README.md +++ /dev/null @@ -1,107 +0,0 @@ - - - - -# Marked - -[![npm](https://badgen.net/npm/v/marked)](https://www.npmjs.com/package/marked) -[![gzip size](https://badgen.net/badgesize/gzip/https://cdn.jsdelivr.net/npm/marked/marked.min.js)](https://cdn.jsdelivr.net/npm/marked/marked.min.js) -[![install size](https://badgen.net/packagephobia/install/marked)](https://packagephobia.now.sh/result?p=marked) -[![downloads](https://badgen.net/npm/dt/marked)](https://www.npmjs.com/package/marked) -[![github actions](https://github.com/markedjs/marked/workflows/Tests/badge.svg)](https://github.com/markedjs/marked/actions) -[![snyk](https://snyk.io/test/npm/marked/badge.svg)](https://snyk.io/test/npm/marked) - -- ⚡ built for speed -- ⬇️ low-level compiler for parsing markdown without caching or blocking for long periods of time -- ⚖️ light-weight while implementing all markdown features from the supported flavors & specifications -- 🌐 works in a browser, on a server, or from a command line interface (CLI) - -## Demo - -Checkout the [demo page](https://marked.js.org/demo/) to see marked in action ⛹️ - -## Docs - -Our [documentation pages](https://marked.js.org) are also rendered using marked 💯 - -Also read about: - -* [Options](https://marked.js.org/using_advanced) -* [Extensibility](https://marked.js.org/using_pro) - -## Compatibility - -**Node.js:** Only [current and LTS](https://nodejs.org/en/about/releases/) Node.js versions are supported. End of life Node.js versions may become incompatible with Marked at any point in time. - -**Browser:** Not IE11 :) - -## Installation - -**CLI:** - -```sh -npm install -g marked -``` - -**In-browser:** - -```sh -npm install marked -``` - -## Usage - -### Warning: 🚨 Marked does not [sanitize](https://marked.js.org/using_advanced#options) the output HTML. Please use a sanitize library, like [DOMPurify](https://github.com/cure53/DOMPurify) (recommended), [sanitize-html](https://github.com/apostrophecms/sanitize-html) or [insane](https://github.com/bevacqua/insane) on the *output* HTML! 🚨 - -``` -DOMPurify.sanitize(marked.parse(``)); -``` - -**CLI** - -``` bash -# Example with stdin input -$ marked -o hello.html -hello world -^D -$ cat hello.html -

    hello world

    -``` - -```bash -# Print all options -$ marked --help -``` - -**Browser** - -```html - - - - - Marked in the browser - - -
    - - - - -``` -or import esm module - -```html - -``` - -## License - -Copyright (c) 2011-2022, Christopher Jeffrey. (MIT License) diff --git a/node_modules/marked/bin/main.js b/node_modules/marked/bin/main.js deleted file mode 100644 index b20689b..0000000 --- a/node_modules/marked/bin/main.js +++ /dev/null @@ -1,282 +0,0 @@ -#!/usr/bin/env node - -/** - * Marked CLI - * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License) - */ - -import { promises } from 'node:fs'; -import { dirname, resolve } from 'node:path'; -import { homedir } from 'node:os'; -import { createRequire } from 'node:module'; -import { marked } from '../lib/marked.esm.js'; - -const { access, readFile, writeFile } = promises; -const require = createRequire(import.meta.url); - -/** - * @param {Process} nodeProcess inject process so it can be mocked in tests. - */ -export async function main(nodeProcess) { - /** - * Man Page - */ - async function help() { - const { spawn } = await import('child_process'); - const { fileURLToPath } = await import('url'); - - const options = { - cwd: nodeProcess.cwd(), - env: nodeProcess.env, - stdio: 'inherit', - }; - - const __dirname = dirname(fileURLToPath(import.meta.url)); - const helpText = await readFile(resolve(__dirname, '../man/marked.1.md'), 'utf8'); - - await new Promise(res => { - const manProcess = spawn('man', [resolve(__dirname, '../man/marked.1')], options); - nodeProcess.on('SIGINT', () => { - manProcess.kill('SIGINT'); - }); - - manProcess.on('error', () => { - console.log(helpText); - }) - .on('close', res); - }); - } - - async function version() { - const pkg = require('../package.json'); - console.log(pkg.version); - } - - /** - * Main - */ - async function start(argv) { - const files = []; - const options = {}; - let input; - let output; - let string; - let arg; - let tokens; - let config; - let opt; - let noclobber; - - function getArg() { - let arg = argv.shift(); - - if (arg.indexOf('--') === 0) { - // e.g. --opt - arg = arg.split('='); - if (arg.length > 1) { - // e.g. --opt=val - argv.unshift(arg.slice(1).join('=')); - } - arg = arg[0]; - } else if (arg[0] === '-') { - if (arg.length > 2) { - // e.g. -abc - argv = arg.substring(1).split('').map(function(ch) { - return '-' + ch; - }).concat(argv); - arg = argv.shift(); - } else { - // e.g. -a - } - } else { - // e.g. foo - } - - return arg; - } - - while (argv.length) { - arg = getArg(); - switch (arg) { - case '-o': - case '--output': - output = argv.shift(); - break; - case '-i': - case '--input': - input = argv.shift(); - break; - case '-s': - case '--string': - string = argv.shift(); - break; - case '-t': - case '--tokens': - tokens = true; - break; - case '-c': - case '--config': - config = argv.shift(); - break; - case '-n': - case '--no-clobber': - noclobber = true; - break; - case '-h': - case '--help': - return await help(); - case '-v': - case '--version': - return await version(); - default: - if (arg.indexOf('--') === 0) { - opt = camelize(arg.replace(/^--(no-)?/, '')); - if (!(opt in marked.defaults)) { - continue; - } - if (arg.indexOf('--no-') === 0) { - options[opt] = typeof marked.defaults[opt] !== 'boolean' - ? null - : false; - } else { - options[opt] = typeof marked.defaults[opt] !== 'boolean' - ? argv.shift() - : true; - } - } else { - files.push(arg); - } - break; - } - } - - async function getData() { - if (!input) { - if (files.length <= 2) { - if (string) { - return string; - } - return await getStdin(); - } - input = files.pop(); - } - return await readFile(input, 'utf8'); - } - - function resolveFile(file) { - return resolve(file.replace(/^~/, homedir)); - } - - function fileExists(file) { - return access(resolveFile(file)).then(() => true, () => false); - } - - async function runConfig(file) { - const configFile = resolveFile(file); - let markedConfig; - try { - // try require for json - markedConfig = require(configFile); - } catch (err) { - if (err.code !== 'ERR_REQUIRE_ESM') { - throw err; - } - // must import esm - markedConfig = await import('file:///' + configFile); - } - - if (markedConfig.default) { - markedConfig = markedConfig.default; - } - - if (typeof markedConfig === 'function') { - markedConfig(marked); - } else { - marked.use(markedConfig); - } - } - - const data = await getData(); - - if (config) { - if (!await fileExists(config)) { - throw Error(`Cannot load config file '${config}'`); - } - - await runConfig(config); - } else { - const defaultConfig = [ - '~/.marked.json', - '~/.marked.js', - '~/.marked/index.js', - ]; - - for (const configFile of defaultConfig) { - if (await fileExists(configFile)) { - await runConfig(configFile); - break; - } - } - } - - const html = tokens - ? JSON.stringify(marked.lexer(data, options), null, 2) - : await marked.parse(data, options); - - if (output) { - if (noclobber && await fileExists(output)) { - throw Error('marked: output file \'' + output + '\' already exists, disable the \'-n\' / \'--no-clobber\' flag to overwrite\n'); - } - return await writeFile(output, html); - } - - nodeProcess.stdout.write(html + '\n'); - } - - /** - * Helpers - */ - function getStdin() { - return new Promise((resolve, reject) => { - const stdin = nodeProcess.stdin; - let buff = ''; - - stdin.setEncoding('utf8'); - - stdin.on('data', function(data) { - buff += data; - }); - - stdin.on('error', function(err) { - reject(err); - }); - - stdin.on('end', function() { - resolve(buff); - }); - - stdin.resume(); - }); - } - - /** - * @param {string} text - */ - function camelize(text) { - return text.replace(/(\w)-(\w)/g, function(_, a, b) { - return a + b.toUpperCase(); - }); - } - - try { - await start(nodeProcess.argv.slice()); - nodeProcess.exit(0); - } catch (err) { - if (err.code === 'ENOENT') { - nodeProcess.stderr.write('marked: ' + err.path + ': No such file or directory'); - } else { - nodeProcess.stderr.write(err.message); - } - return nodeProcess.exit(1); - } -} diff --git a/node_modules/marked/bin/marked.js b/node_modules/marked/bin/marked.js deleted file mode 100644 index e2dd816..0000000 --- a/node_modules/marked/bin/marked.js +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env node - -/** - * Marked CLI - * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License) - */ - -import { main } from './main.js'; - -/** - * Expose / Entry Point - */ - -process.title = 'marked'; -main(process); diff --git a/node_modules/marked/lib/marked.cjs b/node_modules/marked/lib/marked.cjs deleted file mode 100644 index 89c6c46..0000000 --- a/node_modules/marked/lib/marked.cjs +++ /dev/null @@ -1,2521 +0,0 @@ -/** - * marked v14.1.3 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ - -/** - * DO NOT EDIT THIS FILE - * The code in this file is generated from files in ./src/ - */ - -'use strict'; - -/** - * Gets the original marked default options. - */ -function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null, - }; -} -exports.defaults = _getDefaults(); -function changeDefaults(newDefaults) { - exports.defaults = newDefaults; -} - -/** - * Helpers - */ -const escapeTest = /[&<>"']/; -const escapeReplace = new RegExp(escapeTest.source, 'g'); -const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; -const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); -const escapeReplacements = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', -}; -const getEscapeReplacement = (ch) => escapeReplacements[ch]; -function escape$1(html, encode) { - if (encode) { - if (escapeTest.test(html)) { - return html.replace(escapeReplace, getEscapeReplacement); - } - } - else { - if (escapeTestNoEncode.test(html)) { - return html.replace(escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html; -} -const caret = /(^|[^\[])\^/g; -function edit(regex, opt) { - let source = typeof regex === 'string' ? regex : regex.source; - opt = opt || ''; - const obj = { - replace: (name, val) => { - let valSource = typeof val === 'string' ? val : val.source; - valSource = valSource.replace(caret, '$1'); - source = source.replace(name, valSource); - return obj; - }, - getRegex: () => { - return new RegExp(source, opt); - }, - }; - return obj; -} -function cleanUrl(href) { - try { - href = encodeURI(href).replace(/%25/g, '%'); - } - catch { - return null; - } - return href; -} -const noopTest = { exec: () => null }; -function splitCells(tableRow, count) { - // ensure that every cell-delimiting pipe has a space - // before it to distinguish it from an escaped pipe - const row = tableRow.replace(/\|/g, (match, offset, str) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str[curr] === '\\') - escaped = !escaped; - if (escaped) { - // odd number of slashes means | is escaped - // so we leave it alone - return '|'; - } - else { - // add space before unescaped | - return ' |'; - } - }), cells = row.split(/ \|/); - let i = 0; - // First/last cell in a row cannot be empty if it has no leading/trailing pipe - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells[cells.length - 1].trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } - else { - while (cells.length < count) - cells.push(''); - } - } - for (; i < cells.length; i++) { - // leading or trailing whitespace is ignored per the gfm spec - cells[i] = cells[i].trim().replace(/\\\|/g, '|'); - } - return cells; -} -/** - * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). - * /c*$/ is vulnerable to REDOS. - * - * @param str - * @param c - * @param invert Remove suffix of non-c chars instead. Default falsey. - */ -function rtrim(str, c, invert) { - const l = str.length; - if (l === 0) { - return ''; - } - // Length of suffix matching the invert condition. - let suffLen = 0; - // Step left until we fail to match the invert condition. - while (suffLen < l) { - const currChar = str.charAt(l - suffLen - 1); - if (currChar === c && !invert) { - suffLen++; - } - else if (currChar !== c && invert) { - suffLen++; - } - else { - break; - } - } - return str.slice(0, l - suffLen); -} -function findClosingBracket(str, b) { - if (str.indexOf(b[1]) === -1) { - return -1; - } - let level = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === '\\') { - i++; - } - else if (str[i] === b[0]) { - level++; - } - else if (str[i] === b[1]) { - level--; - if (level < 0) { - return i; - } - } - } - return -1; -} - -function outputLink(cap, link, raw, lexer) { - const href = link.href; - const title = link.title ? escape$1(link.title) : null; - const text = cap[1].replace(/\\([\[\]])/g, '$1'); - if (cap[0].charAt(0) !== '!') { - lexer.state.inLink = true; - const token = { - type: 'link', - raw, - href, - title, - text, - tokens: lexer.inlineTokens(text), - }; - lexer.state.inLink = false; - return token; - } - return { - type: 'image', - raw, - href, - title, - text: escape$1(text), - }; -} -function indentCodeCompensation(raw, text) { - const matchIndentToCode = raw.match(/^(\s+)(?:```)/); - if (matchIndentToCode === null) { - return text; - } - const indentToCode = matchIndentToCode[1]; - return text - .split('\n') - .map(node => { - const matchIndentInNode = node.match(/^\s+/); - if (matchIndentInNode === null) { - return node; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node.slice(indentToCode.length); - } - return node; - }) - .join('\n'); -} -/** - * Tokenizer - */ -class _Tokenizer { - options; - rules; // set by the lexer - lexer; // set by the lexer - constructor(options) { - this.options = options || exports.defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: 'space', - raw: cap[0], - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text = cap[0].replace(/^(?: {1,4}| {0,3}\t)/gm, ''); - return { - type: 'code', - raw: cap[0], - codeBlockStyle: 'indented', - text: !this.options.pedantic - ? rtrim(text, '\n') - : text, - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text = indentCodeCompensation(raw, cap[3] || ''); - return { - type: 'code', - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], - text, - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text = cap[2].trim(); - // remove trailing #s - if (/#$/.test(text)) { - const trimmed = rtrim(text, '#'); - if (this.options.pedantic) { - text = trimmed.trim(); - } - else if (!trimmed || / $/.test(trimmed)) { - // CommonMark requires space before trailing #s - text = trimmed.trim(); - } - } - return { - type: 'heading', - raw: cap[0], - depth: cap[1].length, - text, - tokens: this.lexer.inline(text), - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: 'hr', - raw: rtrim(cap[0], '\n'), - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - let lines = rtrim(cap[0], '\n').split('\n'); - let raw = ''; - let text = ''; - const tokens = []; - while (lines.length > 0) { - let inBlockquote = false; - const currentLines = []; - let i; - for (i = 0; i < lines.length; i++) { - // get lines up to a continuation - if (/^ {0,3}>/.test(lines[i])) { - currentLines.push(lines[i]); - inBlockquote = true; - } - else if (!inBlockquote) { - currentLines.push(lines[i]); - } - else { - break; - } - } - lines = lines.slice(i); - const currentRaw = currentLines.join('\n'); - const currentText = currentRaw - // precede setext continuation with 4 spaces so it isn't a setext - .replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1') - .replace(/^ {0,3}>[ \t]?/gm, ''); - raw = raw ? `${raw}\n${currentRaw}` : currentRaw; - text = text ? `${text}\n${currentText}` : currentText; - // parse blockquote lines as top level tokens - // merge paragraphs if this is a continuation - const top = this.lexer.state.top; - this.lexer.state.top = true; - this.lexer.blockTokens(currentText, tokens, true); - this.lexer.state.top = top; - // if there is no continuation then we are done - if (lines.length === 0) { - break; - } - const lastToken = tokens[tokens.length - 1]; - if (lastToken?.type === 'code') { - // blockquote continuation cannot be preceded by a code block - break; - } - else if (lastToken?.type === 'blockquote') { - // include continuation in nested blockquote - const oldToken = lastToken; - const newText = oldToken.raw + '\n' + lines.join('\n'); - const newToken = this.blockquote(newText); - tokens[tokens.length - 1] = newToken; - raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; - text = text.substring(0, text.length - oldToken.text.length) + newToken.text; - break; - } - else if (lastToken?.type === 'list') { - // include continuation in nested list - const oldToken = lastToken; - const newText = oldToken.raw + '\n' + lines.join('\n'); - const newToken = this.list(newText); - tokens[tokens.length - 1] = newToken; - raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; - text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw; - lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\n'); - continue; - } - } - return { - type: 'blockquote', - raw, - tokens, - text, - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list = { - type: 'list', - raw: '', - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : '', - loose: false, - items: [], - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : '[*+-]'; - } - // Get next list item - const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let endsWithBlankLine = false; - // Check if current bullet point can start a new List Item - while (src) { - let endEarly = false; - let raw = ''; - let itemContents = ''; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); - let nextLine = src.split('\n', 1)[0]; - let blankLine = !line.trim(); - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line.trimStart(); - } - else if (blankLine) { - indent = cap[1].length + 1; - } - else { - indent = cap[2].search(/[^ ]/); // Find first non-space char - indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent - itemContents = line.slice(indent); - indent += cap[1].length; - } - if (blankLine && /^[ \t]*$/.test(nextLine)) { // Items begin with at most one blank line - raw += nextLine + '\n'; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); - const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); - const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); - const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); - const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'); - // Check if following lines should be included in List Item - while (src) { - const rawLine = src.split('\n', 1)[0]; - let nextLineWithoutTabs; - nextLine = rawLine; - // Re-align to follow commonmark nesting rules - if (this.options.pedantic) { - nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); - nextLineWithoutTabs = nextLine; - } - else { - nextLineWithoutTabs = nextLine.replace(/\t/g, ' '); - } - // End list item if found code fences - if (fencesBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new heading - if (headingBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of html block - if (htmlBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new bullet - if (nextBulletRegex.test(nextLine)) { - break; - } - // Horizontal rule found - if (hrRegex.test(nextLine)) { - break; - } - if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible - itemContents += '\n' + nextLineWithoutTabs.slice(indent); - } - else { - // not enough indentation - if (blankLine) { - break; - } - // paragraph continuation unless last line was a different block level element - if (line.replace(/\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block - break; - } - if (fencesBeginRegex.test(line)) { - break; - } - if (headingBeginRegex.test(line)) { - break; - } - if (hrRegex.test(line)) { - break; - } - itemContents += '\n' + nextLine; - } - if (!blankLine && !nextLine.trim()) { // Check if current line is blank - blankLine = true; - } - raw += rawLine + '\n'; - src = src.substring(rawLine.length + 1); - line = nextLineWithoutTabs.slice(indent); - } - } - if (!list.loose) { - // If the previous item ended with a blank line, the list is loose - if (endsWithBlankLine) { - list.loose = true; - } - else if (/\n[ \t]*\n[ \t]*$/.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - // Check for task list items - if (this.options.gfm) { - istask = /^\[[ xX]\] /.exec(itemContents); - if (istask) { - ischecked = istask[0] !== '[ ] '; - itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); - } - } - list.items.push({ - type: 'list_item', - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [], - }); - list.raw += raw; - } - // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic - list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd(); - list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd(); - list.raw = list.raw.trimEnd(); - // Item child tokens handled here at end because we needed to have the final item to trim it first - for (let i = 0; i < list.items.length; i++) { - this.lexer.state.top = false; - list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); - if (!list.loose) { - // Check if list should be loose - const spacers = list.items[i].tokens.filter(t => t.type === 'space'); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); - list.loose = hasMultipleLineBreaks; - } - } - // Set all items to loose if list is loose - if (list.loose) { - for (let i = 0; i < list.items.length; i++) { - list.items[i].loose = true; - } - } - return list; - } - } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token = { - type: 'html', - block: true, - raw: cap[0], - pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', - text: cap[0], - }; - return token; - } - } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); - const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; - const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; - return { - type: 'def', - tag, - raw: cap[0], - href, - title, - }; - } - } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!/[:|]/.test(cap[2])) { - // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); - const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; - const item = { - type: 'table', - raw: cap[0], - header: [], - align: [], - rows: [], - }; - if (headers.length !== aligns.length) { - // header and align columns must be equal, rows can be different. - return; - } - for (const align of aligns) { - if (/^ *-+: *$/.test(align)) { - item.align.push('right'); - } - else if (/^ *:-+: *$/.test(align)) { - item.align.push('center'); - } - else if (/^ *:-+ *$/.test(align)) { - item.align.push('left'); - } - else { - item.align.push(null); - } - } - for (let i = 0; i < headers.length; i++) { - item.header.push({ - text: headers[i], - tokens: this.lexer.inline(headers[i]), - header: true, - align: item.align[i], - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map((cell, i) => { - return { - text: cell, - tokens: this.lexer.inline(cell), - header: false, - align: item.align[i], - }; - })); - } - return item; - } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: 'heading', - raw: cap[0], - depth: cap[2].charAt(0) === '=' ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]), - }; - } - } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text = cap[1].charAt(cap[1].length - 1) === '\n' - ? cap[1].slice(0, -1) - : cap[1]; - return { - type: 'paragraph', - raw: cap[0], - text, - tokens: this.lexer.inline(text), - }; - } - } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: 'text', - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]), - }; - } - } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: 'escape', - raw: cap[0], - text: escape$1(cap[1]), - }; - } - } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && /^/i.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } - else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: 'html', - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0], - }; - } - } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && /^$/.test(trimmedUrl))) { - return; - } - // ending angle bracket cannot be escaped - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } - } - else { - // find closing parenthesis - const lastParenIndex = findClosingBracket(cap[2], '()'); - if (lastParenIndex > -1) { - const start = cap[0].indexOf('!') === 0 ? 5 : 4; - const linkLen = start + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ''; - } - } - let href = cap[2]; - let title = ''; - if (this.options.pedantic) { - // split pedantic href and title - const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); - if (link) { - href = link[1]; - title = link[3]; - } - } - else { - title = cap[3] ? cap[3].slice(1, -1) : ''; - } - href = href.trim(); - if (/^$/.test(trimmedUrl))) { - // pedantic allows starting angle bracket without ending angle bracket - href = href.slice(1); - } - else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, - title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title, - }, cap[0], this.lexer); - } - } - reflink(src, links) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) - || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); - const link = links[linkString.toLowerCase()]; - if (!link) { - const text = cap[0].charAt(0); - return { - type: 'text', - raw: text, - text, - }; - } - return outputLink(cap, link, cap[0], this.lexer); - } - } - emStrong(src, maskedSrc, prevChar = '') { - let match = this.rules.inline.emStrongLDelim.exec(src); - if (!match) - return; - // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well - if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) - return; - const nextChar = match[1] || match[2] || ''; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) - const lLength = [...match[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - // Clip maskedSrc to same section of string as src (move to lexer?) - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match = endReg.exec(maskedSrc)) != null) { - rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; - if (!rDelim) - continue; // skip single * in __abc*abc__ - rLength = [...rDelim].length; - if (match[3] || match[4]) { // found another Left Delim - delimTotal += rLength; - continue; - } - else if (match[5] || match[6]) { // either Left or Right Delim - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; // CommonMark Emphasis Rules 9-10 - } - } - delimTotal -= rLength; - if (delimTotal > 0) - continue; // Haven't found enough closing delimiters - // Remove extra characters. *a*** -> *a* - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - // char length can be >1 for unicode characters; - const lastCharLength = [...match[0]][0].length; - const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); - // Create `em` if smallest delimiter has odd char count. *a*** - if (Math.min(lLength, rLength) % 2) { - const text = raw.slice(1, -1); - return { - type: 'em', - raw, - text, - tokens: this.lexer.inlineTokens(text), - }; - } - // Create 'strong' if smallest delimiter has even char count. **a*** - const text = raw.slice(2, -2); - return { - type: 'strong', - raw, - text, - tokens: this.lexer.inlineTokens(text), - }; - } - } - } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text = cap[2].replace(/\n/g, ' '); - const hasNonSpaceChars = /[^ ]/.test(text); - const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text = text.substring(1, text.length - 1); - } - text = escape$1(text, true); - return { - type: 'codespan', - raw: cap[0], - text, - }; - } - } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: 'br', - raw: cap[0], - }; - } - } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: 'del', - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]), - }; - } - } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[1]); - href = 'mailto:' + text; - } - else { - text = escape$1(cap[1]); - href = text; - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text, - }, - ], - }; - } - } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[0]); - href = 'mailto:' + text; - } - else { - // do extended autolink path validation - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; - } while (prevCapZero !== cap[0]); - text = escape$1(cap[0]); - if (cap[1] === 'www.') { - href = 'http://' + cap[0]; - } - else { - href = cap[0]; - } - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text, - }, - ], - }; - } - } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - let text; - if (this.lexer.state.inRawBlock) { - text = cap[0]; - } - else { - text = escape$1(cap[0]); - } - return { - type: 'text', - raw: cap[0], - text, - }; - } - } -} - -/** - * Block-Level Grammar - */ -const newline = /^(?:[ \t]*(?:\n|$))+/; -const blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; -const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; -const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; -const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; -const bullet = /(?:[*+-]|\d{1,9}[.)])/; -const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) - .replace(/bull/g, bullet) // lists can interrupt - .replace(/blockCode/g, /(?: {4}| {0,3}\t)/) // indented code blocks can interrupt - .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt - .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt - .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt - .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt - .getRegex(); -const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; -const blockText = /^[^\n]+/; -const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; -const def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/) - .replace('label', _blockLabel) - .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) - .getRegex(); -const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) - .replace(/bull/g, bullet) - .getRegex(); -const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' - + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' - + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' - + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' - + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' - + '|tr|track|ul'; -const _comment = /|$))/; -const html = edit('^ {0,3}(?:' // optional indentation - + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) - + '|comment[^\\n]*(\\n+|$)' // (2) - + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) - + '|\\n*|$)' // (4) - + '|\\n*|$)' // (5) - + '|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (6) - + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) open tag - + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) closing tag - + ')', 'i') - .replace('comment', _comment) - .replace('tag', _tag) - .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) - .getRegex(); -const paragraph = edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(); -const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) - .replace('paragraph', paragraph) - .getRegex(); -/** - * Normal Block Grammar - */ -const blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText, -}; -/** - * GFM Block Grammar - */ -const gfmTable = edit('^ *([^\\n ].*)\\n' // Header - + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align - + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('blockquote', ' {0,3}>') - .replace('code', '(?: {4}| {0,3}\t)[^\\n]') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // tables can be interrupted by type (6) html blocks - .getRegex(); -const blockGfm = { - ...blockNormal, - table: gfmTable, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('table', gfmTable) // interrupt paragraphs with table - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(), -}; -/** - * Pedantic grammar (original John Gruber's loose markdown specification) - */ -const blockPedantic = { - ...blockNormal, - html: edit('^ *(?:comment *(?:\\n|\\s*$)' - + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag - + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') - .replace('comment', _comment) - .replace(/tag/g, '(?!(?:' - + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' - + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' - + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') - .getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: noopTest, // fences not supported - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' *#{1,6} *[^\n]') - .replace('lheading', lheading) - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('|fences', '') - .replace('|list', '') - .replace('|html', '') - .replace('|tag', '') - .getRegex(), -}; -/** - * Inline-Level Grammar - */ -const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; -const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; -const br = /^( {2,}|\\)\n(?!\s*$)/; -const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ -const blockSkip = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g; -const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') - .replace(/punct/g, _punctuation) - .getRegex(); -const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong - + '|[^*]+(?=[^*])' // Consume to delim - + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter - + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter - + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter - + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter - + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter - + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -// (6) Not allowed for _ -const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong - + '|[^_]+(?=[^_])' // Consume to delim - + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter - + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter - + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter - + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter - + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -const anyPunctuation = edit(/\\([punct])/, 'gu') - .replace(/punct/g, _punctuation) - .getRegex(); -const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) - .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) - .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) - .getRegex(); -const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); -const tag = edit('^comment' - + '|^' // self-closing tag - + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag - + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. - + '|^' // declaration, e.g. - + '|^') // CDATA section - .replace('comment', _inlineComment) - .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) - .getRegex(); -const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; -const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) - .replace('label', _inlineLabel) - .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) - .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) - .getRegex(); -const reflink = edit(/^!?\[(label)\]\[(ref)\]/) - .replace('label', _inlineLabel) - .replace('ref', _blockLabel) - .getRegex(); -const nolink = edit(/^!?\[(ref)\](?:\[\])?/) - .replace('ref', _blockLabel) - .getRegex(); -const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') - .replace('reflink', reflink) - .replace('nolink', nolink) - .getRegex(); -/** - * Normal Inline Grammar - */ -const inlineNormal = { - _backpedal: noopTest, // only used for GFM url - anyPunctuation, - autolink, - blockSkip, - br, - code: inlineCode, - del: noopTest, - emStrongLDelim, - emStrongRDelimAst, - emStrongRDelimUnd, - escape, - link, - nolink, - punctuation, - reflink, - reflinkSearch, - tag, - text: inlineText, - url: noopTest, -}; -/** - * Pedantic Inline Grammar - */ -const inlinePedantic = { - ...inlineNormal, - link: edit(/^!?\[(label)\]\((.*?)\)/) - .replace('label', _inlineLabel) - .getRegex(), - reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) - .replace('label', _inlineLabel) - .getRegex(), -}; -/** - * GFM Inline Grammar - */ -const inlineGfm = { - ...inlineNormal, - escape: edit(escape).replace('])', '~|])').getRegex(), - url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') - .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) - .getRegex(), - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // newline - if (token = this.tokenizer.space(src)) { - src = src.substring(token.raw.length); - if (token.raw.length === 1 && tokens.length > 0) { - // if there's a single \n as a spacer, it's terminating the last line, - // so move it there so that we don't get unnecessary paragraph tags - tokens[tokens.length - 1].raw += '\n'; - } - else { - tokens.push(token); - } - continue; - } - // code - if (token = this.tokenizer.code(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - // An indented code block cannot interrupt a paragraph. - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - // fences - if (token = this.tokenizer.fences(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // heading - if (token = this.tokenizer.heading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // hr - if (token = this.tokenizer.hr(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // blockquote - if (token = this.tokenizer.blockquote(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // list - if (token = this.tokenizer.list(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // html - if (token = this.tokenizer.html(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // def - if (token = this.tokenizer.def(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.raw; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else if (!this.tokens.links[token.tag]) { - this.tokens.links[token.tag] = { - href: token.href, - title: token.title, - }; - } - continue; - } - // table (gfm) - if (token = this.tokenizer.table(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // lheading - if (token = this.tokenizer.lheading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // top-level paragraph - // prevent paragraph consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startBlock) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startBlock.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { - lastToken = tokens[tokens.length - 1]; - if (lastParagraphClipped && lastToken?.type === 'paragraph') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - lastParagraphClipped = (cutSrc.length !== src.length); - src = src.substring(token.raw.length); - continue; - } - // text - if (token = this.tokenizer.text(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - this.state.top = true; - return tokens; - } - inline(src, tokens = []) { - this.inlineQueue.push({ src, tokens }); - return tokens; - } - /** - * Lexing/Compiling - */ - inlineTokens(src, tokens = []) { - let token, lastToken, cutSrc; - // String with links masked to avoid interference with em and strong - let maskedSrc = src; - let match; - let keepPrevChar, prevChar; - // Mask out reflinks - if (this.tokens.links) { - const links = Object.keys(this.tokens.links); - if (links.length > 0) { - while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { - if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); - } - } - } - } - // Mask out other blocks - while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - } - // Mask out escaped characters - while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - } - while (src) { - if (!keepPrevChar) { - prevChar = ''; - } - keepPrevChar = false; - // extensions - if (this.options.extensions - && this.options.extensions.inline - && this.options.extensions.inline.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // escape - if (token = this.tokenizer.escape(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // tag - if (token = this.tokenizer.tag(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // link - if (token = this.tokenizer.link(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // reflink, nolink - if (token = this.tokenizer.reflink(src, this.tokens.links)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // em & strong - if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // code - if (token = this.tokenizer.codespan(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // br - if (token = this.tokenizer.br(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // del (gfm) - if (token = this.tokenizer.del(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // autolink - if (token = this.tokenizer.autolink(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // url (gfm) - if (!this.state.inLink && (token = this.tokenizer.url(src))) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // text - // prevent inlineText consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startInline) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startInline.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (token = this.tokenizer.inlineText(cutSrc)) { - src = src.substring(token.raw.length); - if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started - prevChar = token.raw.slice(-1); - } - keepPrevChar = true; - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - return tokens; - } -} - -/** - * Renderer - */ -class _Renderer { - options; - parser; // set by the parser - constructor(options) { - this.options = options || exports.defaults; - } - space(token) { - return ''; - } - code({ text, lang, escaped }) { - const langString = (lang || '').match(/^\S*/)?.[0]; - const code = text.replace(/\n$/, '') + '\n'; - if (!langString) { - return '
    '
    -                + (escaped ? code : escape$1(code, true))
    -                + '
    \n'; - } - return '
    '
    -            + (escaped ? code : escape$1(code, true))
    -            + '
    \n'; - } - blockquote({ tokens }) { - const body = this.parser.parse(tokens); - return `
    \n${body}
    \n`; - } - html({ text }) { - return text; - } - heading({ tokens, depth }) { - return `${this.parser.parseInline(tokens)}\n`; - } - hr(token) { - return '
    \n'; - } - list(token) { - const ordered = token.ordered; - const start = token.start; - let body = ''; - for (let j = 0; j < token.items.length; j++) { - const item = token.items[j]; - body += this.listitem(item); - } - const type = ordered ? 'ol' : 'ul'; - const startAttr = (ordered && start !== 1) ? (' start="' + start + '"') : ''; - return '<' + type + startAttr + '>\n' + body + '\n'; - } - listitem(item) { - let itemBody = ''; - if (item.task) { - const checkbox = this.checkbox({ checked: !!item.checked }); - if (item.loose) { - if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') { - item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; - if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { - item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; - } - } - else { - item.tokens.unshift({ - type: 'text', - raw: checkbox + ' ', - text: checkbox + ' ', - }); - } - } - else { - itemBody += checkbox + ' '; - } - } - itemBody += this.parser.parse(item.tokens, !!item.loose); - return `
  • ${itemBody}
  • \n`; - } - checkbox({ checked }) { - return ''; - } - paragraph({ tokens }) { - return `

    ${this.parser.parseInline(tokens)}

    \n`; - } - table(token) { - let header = ''; - // header - let cell = ''; - for (let j = 0; j < token.header.length; j++) { - cell += this.tablecell(token.header[j]); - } - header += this.tablerow({ text: cell }); - let body = ''; - for (let j = 0; j < token.rows.length; j++) { - const row = token.rows[j]; - cell = ''; - for (let k = 0; k < row.length; k++) { - cell += this.tablecell(row[k]); - } - body += this.tablerow({ text: cell }); - } - if (body) - body = `${body}`; - return '\n' - + '\n' - + header - + '\n' - + body - + '
    \n'; - } - tablerow({ text }) { - return `\n${text}\n`; - } - tablecell(token) { - const content = this.parser.parseInline(token.tokens); - const type = token.header ? 'th' : 'td'; - const tag = token.align - ? `<${type} align="${token.align}">` - : `<${type}>`; - return tag + content + `\n`; - } - /** - * span level renderer - */ - strong({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - em({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - codespan({ text }) { - return `${text}`; - } - br(token) { - return '
    '; - } - del({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - link({ href, title, tokens }) { - const text = this.parser.parseInline(tokens); - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = '
    '; - return out; - } - image({ href, title, text }) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = `${text} { - const tokens = genericToken[childTokens].flat(Infinity); - values = values.concat(this.walkTokens(tokens, callback)); - }); - } - else if (genericToken.tokens) { - values = values.concat(this.walkTokens(genericToken.tokens, callback)); - } - } - } - } - return values; - } - use(...args) { - const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; - args.forEach((pack) => { - // copy options to new object - const opts = { ...pack }; - // set async to true if it was set to true before - opts.async = this.defaults.async || opts.async || false; - // ==-- Parse "addon" extensions --== // - if (pack.extensions) { - pack.extensions.forEach((ext) => { - if (!ext.name) { - throw new Error('extension name required'); - } - if ('renderer' in ext) { // Renderer extensions - const prevRenderer = extensions.renderers[ext.name]; - if (prevRenderer) { - // Replace extension with func to run new extension but fall back if false - extensions.renderers[ext.name] = function (...args) { - let ret = ext.renderer.apply(this, args); - if (ret === false) { - ret = prevRenderer.apply(this, args); - } - return ret; - }; - } - else { - extensions.renderers[ext.name] = ext.renderer; - } - } - if ('tokenizer' in ext) { // Tokenizer Extensions - if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { - throw new Error("extension level must be 'block' or 'inline'"); - } - const extLevel = extensions[ext.level]; - if (extLevel) { - extLevel.unshift(ext.tokenizer); - } - else { - extensions[ext.level] = [ext.tokenizer]; - } - if (ext.start) { // Function to check for start of token - if (ext.level === 'block') { - if (extensions.startBlock) { - extensions.startBlock.push(ext.start); - } - else { - extensions.startBlock = [ext.start]; - } - } - else if (ext.level === 'inline') { - if (extensions.startInline) { - extensions.startInline.push(ext.start); - } - else { - extensions.startInline = [ext.start]; - } - } - } - } - if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens - extensions.childTokens[ext.name] = ext.childTokens; - } - }); - opts.extensions = extensions; - } - // ==-- Parse "overwrite" extensions --== // - if (pack.renderer) { - const renderer = this.defaults.renderer || new _Renderer(this.defaults); - for (const prop in pack.renderer) { - if (!(prop in renderer)) { - throw new Error(`renderer '${prop}' does not exist`); - } - if (['options', 'parser'].includes(prop)) { - // ignore options property - continue; - } - const rendererProp = prop; - const rendererFunc = pack.renderer[rendererProp]; - const prevRenderer = renderer[rendererProp]; - // Replace renderer with func to run extension, but fall back if false - renderer[rendererProp] = (...args) => { - let ret = rendererFunc.apply(renderer, args); - if (ret === false) { - ret = prevRenderer.apply(renderer, args); - } - return ret || ''; - }; - } - opts.renderer = renderer; - } - if (pack.tokenizer) { - const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); - for (const prop in pack.tokenizer) { - if (!(prop in tokenizer)) { - throw new Error(`tokenizer '${prop}' does not exist`); - } - if (['options', 'rules', 'lexer'].includes(prop)) { - // ignore options, rules, and lexer properties - continue; - } - const tokenizerProp = prop; - const tokenizerFunc = pack.tokenizer[tokenizerProp]; - const prevTokenizer = tokenizer[tokenizerProp]; - // Replace tokenizer with func to run extension, but fall back if false - // @ts-expect-error cannot type tokenizer function dynamically - tokenizer[tokenizerProp] = (...args) => { - let ret = tokenizerFunc.apply(tokenizer, args); - if (ret === false) { - ret = prevTokenizer.apply(tokenizer, args); - } - return ret; - }; - } - opts.tokenizer = tokenizer; - } - // ==-- Parse Hooks extensions --== // - if (pack.hooks) { - const hooks = this.defaults.hooks || new _Hooks(); - for (const prop in pack.hooks) { - if (!(prop in hooks)) { - throw new Error(`hook '${prop}' does not exist`); - } - if (['options', 'block'].includes(prop)) { - // ignore options and block properties - continue; - } - const hooksProp = prop; - const hooksFunc = pack.hooks[hooksProp]; - const prevHook = hooks[hooksProp]; - if (_Hooks.passThroughHooks.has(prop)) { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (arg) => { - if (this.defaults.async) { - return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { - return prevHook.call(hooks, ret); - }); - } - const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); - }; - } - else { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (...args) => { - let ret = hooksFunc.apply(hooks, args); - if (ret === false) { - ret = prevHook.apply(hooks, args); - } - return ret; - }; - } - } - opts.hooks = hooks; - } - // ==-- Parse WalkTokens extensions --== // - if (pack.walkTokens) { - const walkTokens = this.defaults.walkTokens; - const packWalktokens = pack.walkTokens; - opts.walkTokens = function (token) { - let values = []; - values.push(packWalktokens.call(this, token)); - if (walkTokens) { - values = values.concat(walkTokens.call(this, token)); - } - return values; - }; - } - this.defaults = { ...this.defaults, ...opts }; - }); - return this; - } - setOptions(opt) { - this.defaults = { ...this.defaults, ...opt }; - return this; - } - lexer(src, options) { - return _Lexer.lex(src, options ?? this.defaults); - } - parser(tokens, options) { - return _Parser.parse(tokens, options ?? this.defaults); - } - parseMarkdown(blockType) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const parse = (src, options) => { - const origOpt = { ...options }; - const opt = { ...this.defaults, ...origOpt }; - const throwError = this.onError(!!opt.silent, !!opt.async); - // throw error if an extension set async to true but parse was called with async: false - if (this.defaults.async === true && origOpt.async === false) { - return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.')); - } - // throw error in case of non string input - if (typeof src === 'undefined' || src === null) { - return throwError(new Error('marked(): input parameter is undefined or null')); - } - if (typeof src !== 'string') { - return throwError(new Error('marked(): input parameter is of type ' - + Object.prototype.toString.call(src) + ', string expected')); - } - if (opt.hooks) { - opt.hooks.options = opt; - opt.hooks.block = blockType; - } - const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline); - const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline); - if (opt.async) { - return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) - .then(src => lexer(src, opt)) - .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) - .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) - .then(tokens => parser(tokens, opt)) - .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) - .catch(throwError); - } - try { - if (opt.hooks) { - src = opt.hooks.preprocess(src); - } - let tokens = lexer(src, opt); - if (opt.hooks) { - tokens = opt.hooks.processAllTokens(tokens); - } - if (opt.walkTokens) { - this.walkTokens(tokens, opt.walkTokens); - } - let html = parser(tokens, opt); - if (opt.hooks) { - html = opt.hooks.postprocess(html); - } - return html; - } - catch (e) { - return throwError(e); - } - }; - return parse; - } - onError(silent, async) { - return (e) => { - e.message += '\nPlease report this to https://github.com/markedjs/marked.'; - if (silent) { - const msg = '

    An error occurred:

    '
    -                    + escape$1(e.message + '', true)
    -                    + '
    '; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } -} - -const markedInstance = new Marked(); -function marked(src, opt) { - return markedInstance.parse(src, opt); -} -/** - * Sets the default options. - * - * @param options Hash of options - */ -marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; -/** - * Gets the original marked default options. - */ -marked.getDefaults = _getDefaults; -marked.defaults = exports.defaults; -/** - * Use Extension - */ -marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; -}; -/** - * Run callback for every token - */ -marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); -}; -/** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ -marked.parseInline = markedInstance.parseInline; -/** - * Expose - */ -marked.Parser = _Parser; -marked.parser = _Parser.parse; -marked.Renderer = _Renderer; -marked.TextRenderer = _TextRenderer; -marked.Lexer = _Lexer; -marked.lexer = _Lexer.lex; -marked.Tokenizer = _Tokenizer; -marked.Hooks = _Hooks; -marked.parse = marked; -const options = marked.options; -const setOptions = marked.setOptions; -const use = marked.use; -const walkTokens = marked.walkTokens; -const parseInline = marked.parseInline; -const parse = marked; -const parser = _Parser.parse; -const lexer = _Lexer.lex; - -exports.Hooks = _Hooks; -exports.Lexer = _Lexer; -exports.Marked = Marked; -exports.Parser = _Parser; -exports.Renderer = _Renderer; -exports.TextRenderer = _TextRenderer; -exports.Tokenizer = _Tokenizer; -exports.getDefaults = _getDefaults; -exports.lexer = lexer; -exports.marked = marked; -exports.options = options; -exports.parse = parse; -exports.parseInline = parseInline; -exports.parser = parser; -exports.setOptions = setOptions; -exports.use = use; -exports.walkTokens = walkTokens; -//# sourceMappingURL=marked.cjs.map diff --git a/node_modules/marked/lib/marked.cjs.map b/node_modules/marked/lib/marked.cjs.map deleted file mode 100644 index 8200dc8..0000000 --- a/node_modules/marked/lib/marked.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.cjs","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket, } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n","import { edit, noopTest, } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape, } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
    \\n${body}
    \\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
    \\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/marked/lib/marked.d.cts b/node_modules/marked/lib/marked.d.cts deleted file mode 100644 index 5404b07..0000000 --- a/node_modules/marked/lib/marked.d.cts +++ /dev/null @@ -1,667 +0,0 @@ -// Generated by dts-bundle-generator v9.5.1 - -export type MarkedToken = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del); -export type Token = (MarkedToken | Tokens.Generic); -export declare namespace Tokens { - interface Space { - type: "space"; - raw: string; - } - interface Code { - type: "code"; - raw: string; - codeBlockStyle?: "indented" | undefined; - lang?: string | undefined; - text: string; - escaped?: boolean; - } - interface Heading { - type: "heading"; - raw: string; - depth: number; - text: string; - tokens: Token[]; - } - interface Table { - type: "table"; - raw: string; - align: Array<"center" | "left" | "right" | null>; - header: TableCell[]; - rows: TableCell[][]; - } - interface TableRow { - text: string; - } - interface TableCell { - text: string; - tokens: Token[]; - header: boolean; - align: "center" | "left" | "right" | null; - } - interface Hr { - type: "hr"; - raw: string; - } - interface Blockquote { - type: "blockquote"; - raw: string; - text: string; - tokens: Token[]; - } - interface List { - type: "list"; - raw: string; - ordered: boolean; - start: number | ""; - loose: boolean; - items: ListItem[]; - } - interface ListItem { - type: "list_item"; - raw: string; - task: boolean; - checked?: boolean | undefined; - loose: boolean; - text: string; - tokens: Token[]; - } - interface Checkbox { - checked: boolean; - } - interface Paragraph { - type: "paragraph"; - raw: string; - pre?: boolean | undefined; - text: string; - tokens: Token[]; - } - interface HTML { - type: "html"; - raw: string; - pre: boolean; - text: string; - block: boolean; - } - interface Text { - type: "text"; - raw: string; - text: string; - tokens?: Token[]; - } - interface Def { - type: "def"; - raw: string; - tag: string; - href: string; - title: string; - } - interface Escape { - type: "escape"; - raw: string; - text: string; - } - interface Tag { - type: "text" | "html"; - raw: string; - inLink: boolean; - inRawBlock: boolean; - text: string; - block: boolean; - } - interface Link { - type: "link"; - raw: string; - href: string; - title?: string | null; - text: string; - tokens: Token[]; - } - interface Image { - type: "image"; - raw: string; - href: string; - title: string | null; - text: string; - } - interface Strong { - type: "strong"; - raw: string; - text: string; - tokens: Token[]; - } - interface Em { - type: "em"; - raw: string; - text: string; - tokens: Token[]; - } - interface Codespan { - type: "codespan"; - raw: string; - text: string; - } - interface Br { - type: "br"; - raw: string; - } - interface Del { - type: "del"; - raw: string; - text: string; - tokens: Token[]; - } - interface Generic { - [index: string]: any; - type: string; - raw: string; - tokens?: Token[] | undefined; - } -} -export type Links = Record>; -export type TokensList = Token[] & { - links: Links; -}; -/** - * Renderer - */ -declare class _Renderer { - options: MarkedOptions; - parser: _Parser; - constructor(options?: MarkedOptions); - space(token: Tokens.Space): string; - code({ text, lang, escaped }: Tokens.Code): string; - blockquote({ tokens }: Tokens.Blockquote): string; - html({ text }: Tokens.HTML | Tokens.Tag): string; - heading({ tokens, depth }: Tokens.Heading): string; - hr(token: Tokens.Hr): string; - list(token: Tokens.List): string; - listitem(item: Tokens.ListItem): string; - checkbox({ checked }: Tokens.Checkbox): string; - paragraph({ tokens }: Tokens.Paragraph): string; - table(token: Tokens.Table): string; - tablerow({ text }: Tokens.TableRow): string; - tablecell(token: Tokens.TableCell): string; - /** - * span level renderer - */ - strong({ tokens }: Tokens.Strong): string; - em({ tokens }: Tokens.Em): string; - codespan({ text }: Tokens.Codespan): string; - br(token: Tokens.Br): string; - del({ tokens }: Tokens.Del): string; - link({ href, title, tokens }: Tokens.Link): string; - image({ href, title, text }: Tokens.Image): string; - text(token: Tokens.Text | Tokens.Escape | Tokens.Tag): string; -} -/** - * TextRenderer - * returns only the textual part of the token - */ -declare class _TextRenderer { - strong({ text }: Tokens.Strong): string; - em({ text }: Tokens.Em): string; - codespan({ text }: Tokens.Codespan): string; - del({ text }: Tokens.Del): string; - html({ text }: Tokens.HTML | Tokens.Tag): string; - text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): string; - link({ text }: Tokens.Link): string; - image({ text }: Tokens.Image): string; - br(): string; -} -/** - * Parsing & Compiling - */ -declare class _Parser { - options: MarkedOptions; - renderer: _Renderer; - textRenderer: _TextRenderer; - constructor(options?: MarkedOptions); - /** - * Static Parse Method - */ - static parse(tokens: Token[], options?: MarkedOptions): string; - /** - * Static Parse Inline Method - */ - static parseInline(tokens: Token[], options?: MarkedOptions): string; - /** - * Parse Loop - */ - parse(tokens: Token[], top?: boolean): string; - /** - * Parse Inline Tokens - */ - parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string; -} -declare const blockNormal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; -}; -export type BlockKeys = keyof typeof blockNormal; -declare const inlineNormal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; -}; -export type InlineKeys = keyof typeof inlineNormal; -export interface Rules { - block: Record; - inline: Record; -} -/** - * Tokenizer - */ -declare class _Tokenizer { - options: MarkedOptions; - rules: Rules; - lexer: _Lexer; - constructor(options?: MarkedOptions); - space(src: string): Tokens.Space | undefined; - code(src: string): Tokens.Code | undefined; - fences(src: string): Tokens.Code | undefined; - heading(src: string): Tokens.Heading | undefined; - hr(src: string): Tokens.Hr | undefined; - blockquote(src: string): Tokens.Blockquote | undefined; - list(src: string): Tokens.List | undefined; - html(src: string): Tokens.HTML | undefined; - def(src: string): Tokens.Def | undefined; - table(src: string): Tokens.Table | undefined; - lheading(src: string): Tokens.Heading | undefined; - paragraph(src: string): Tokens.Paragraph | undefined; - text(src: string): Tokens.Text | undefined; - escape(src: string): Tokens.Escape | undefined; - tag(src: string): Tokens.Tag | undefined; - link(src: string): Tokens.Link | Tokens.Image | undefined; - reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined; - emStrong(src: string, maskedSrc: string, prevChar?: string): Tokens.Em | Tokens.Strong | undefined; - codespan(src: string): Tokens.Codespan | undefined; - br(src: string): Tokens.Br | undefined; - del(src: string): Tokens.Del | undefined; - autolink(src: string): Tokens.Link | undefined; - url(src: string): Tokens.Link | undefined; - inlineText(src: string): Tokens.Text | undefined; -} -declare class _Hooks { - options: MarkedOptions; - block: boolean | undefined; - constructor(options?: MarkedOptions); - static passThroughHooks: Set; - /** - * Process markdown before marked - */ - preprocess(markdown: string): string; - /** - * Process HTML after marked is finished - */ - postprocess(html: string): string; - /** - * Process all tokens before walk tokens - */ - processAllTokens(tokens: Token[] | TokensList): Token[] | TokensList; - /** - * Provide function to tokenize markdown - */ - provideLexer(): typeof _Lexer.lexInline; - /** - * Provide function to parse tokens - */ - provideParser(): typeof _Parser.parse; -} -export interface TokenizerThis { - lexer: _Lexer; -} -export type TokenizerExtensionFunction = (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; -export type TokenizerStartFunction = (this: TokenizerThis, src: string) => number | void; -export interface TokenizerExtension { - name: string; - level: "block" | "inline"; - start?: TokenizerStartFunction | undefined; - tokenizer: TokenizerExtensionFunction; - childTokens?: string[] | undefined; -} -export interface RendererThis { - parser: _Parser; -} -export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; -export interface RendererExtension { - name: string; - renderer: RendererExtensionFunction; -} -export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); -export type HooksApi = Omit<_Hooks, "constructor" | "options" | "block">; -export type HooksObject = { - [K in keyof HooksApi]?: (this: _Hooks, ...args: Parameters) => ReturnType | Promise>; -}; -export type RendererApi = Omit<_Renderer, "constructor" | "options" | "parser">; -export type RendererObject = { - [K in keyof RendererApi]?: (this: _Renderer, ...args: Parameters) => ReturnType | false; -}; -export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">; -export type TokenizerObject = { - [K in keyof TokenizerApi]?: (this: _Tokenizer, ...args: Parameters) => ReturnType | false; -}; -export interface MarkedExtension { - /** - * True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string. - */ - async?: boolean; - /** - * Enable GFM line breaks. This option requires the gfm option to be true. - */ - breaks?: boolean | undefined; - /** - * Add tokenizers and renderers to marked - */ - extensions?: TokenizerAndRendererExtension[] | undefined | null; - /** - * Enable GitHub flavored markdown. - */ - gfm?: boolean | undefined; - /** - * Hooks are methods that hook into some part of marked. - * preprocess is called to process markdown before sending it to marked. - * processAllTokens is called with the TokensList before walkTokens. - * postprocess is called to process html after marked has finished parsing. - * provideLexer is called to provide a function to tokenize markdown. - * provideParser is called to provide a function to parse tokens. - */ - hooks?: HooksObject | undefined | null; - /** - * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior. - */ - pedantic?: boolean | undefined; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: RendererObject | undefined | null; - /** - * Shows an HTML error message when rendering fails. - */ - silent?: boolean | undefined; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: TokenizerObject | undefined | null; - /** - * The walkTokens function gets called with every token. - * Child tokens are called before moving on to sibling tokens. - * Each token is passed by reference so updates are persisted when passed to the parser. - * The return value of the function is ignored. - */ - walkTokens?: ((token: Token) => void | Promise) | undefined | null; -} -export interface MarkedOptions extends Omit { - /** - * Hooks are methods that hook into some part of marked. - */ - hooks?: _Hooks | undefined | null; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: _Renderer | undefined | null; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: _Tokenizer | undefined | null; - /** - * Custom extensions - */ - extensions?: null | { - renderers: { - [name: string]: RendererExtensionFunction; - }; - childTokens: { - [name: string]: string[]; - }; - inline?: TokenizerExtensionFunction[]; - block?: TokenizerExtensionFunction[]; - startInline?: TokenizerStartFunction[]; - startBlock?: TokenizerStartFunction[]; - }; - /** - * walkTokens function returns array of values for Promise.all - */ - walkTokens?: null | ((token: Token) => void | Promise | (void | Promise)[]); -} -/** - * Block Lexer - */ -declare class _Lexer { - tokens: TokensList; - options: MarkedOptions; - state: { - inLink: boolean; - inRawBlock: boolean; - top: boolean; - }; - private tokenizer; - private inlineQueue; - constructor(options?: MarkedOptions); - /** - * Expose Rules - */ - static get rules(): { - block: { - normal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; - }; - gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - }; - inline: { - normal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; - }; - gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - }; - }; - /** - * Static Lex Method - */ - static lex(src: string, options?: MarkedOptions): TokensList; - /** - * Static Lex Inline Method - */ - static lexInline(src: string, options?: MarkedOptions): Token[]; - /** - * Preprocessing - */ - lex(src: string): TokensList; - /** - * Lexing - */ - blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[]; - blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList; - inline(src: string, tokens?: Token[]): Token[]; - /** - * Lexing/Compiling - */ - inlineTokens(src: string, tokens?: Token[]): Token[]; -} -/** - * Gets the original marked default options. - */ -declare function _getDefaults(): MarkedOptions; -declare let _defaults: MarkedOptions; -export type MaybePromise = void | Promise; -export declare class Marked { - defaults: MarkedOptions; - options: (opt: MarkedOptions) => this; - parse: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; - }; - parseInline: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; - }; - Parser: typeof _Parser; - Renderer: typeof _Renderer; - TextRenderer: typeof _TextRenderer; - Lexer: typeof _Lexer; - Tokenizer: typeof _Tokenizer; - Hooks: typeof _Hooks; - constructor(...args: MarkedExtension[]); - /** - * Run callback for every token - */ - walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]): MaybePromise[]; - use(...args: MarkedExtension[]): this; - setOptions(opt: MarkedOptions): this; - lexer(src: string, options?: MarkedOptions): TokensList; - parser(tokens: Token[], options?: MarkedOptions): string; - private parseMarkdown; - private onError; -} -/** - * Compiles markdown to HTML asynchronously. - * - * @param src String of markdown source to be compiled - * @param options Hash of options, having async: true - * @return Promise of string of compiled HTML - */ -export declare function marked(src: string, options: MarkedOptions & { - async: true; -}): Promise; -/** - * Compiles markdown to HTML. - * - * @param src String of markdown source to be compiled - * @param options Optional hash of options - * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions. - */ -export declare function marked(src: string, options: MarkedOptions & { - async: false; -}): string; -export declare function marked(src: string, options: MarkedOptions & { - async: true; -}): Promise; -export declare function marked(src: string, options?: MarkedOptions | undefined | null): string | Promise; -export declare namespace marked { - var options: (options: MarkedOptions) => typeof marked; - var setOptions: (options: MarkedOptions) => typeof marked; - var getDefaults: typeof _getDefaults; - var defaults: MarkedOptions; - var use: (...args: MarkedExtension[]) => typeof marked; - var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; - var parseInline: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; - }; - var Parser: typeof _Parser; - var parser: typeof _Parser.parse; - var Renderer: typeof _Renderer; - var TextRenderer: typeof _TextRenderer; - var Lexer: typeof _Lexer; - var lexer: typeof _Lexer.lex; - var Tokenizer: typeof _Tokenizer; - var Hooks: typeof _Hooks; - var parse: typeof marked; -} -export declare const options: (options: MarkedOptions) => typeof marked; -export declare const setOptions: (options: MarkedOptions) => typeof marked; -export declare const use: (...args: MarkedExtension[]) => typeof marked; -export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; -export declare const parseInline: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; -}; -export declare const parse: typeof marked; -export declare const parser: typeof _Parser.parse; -export declare const lexer: typeof _Lexer.lex; - -export { - _Hooks as Hooks, - _Lexer as Lexer, - _Parser as Parser, - _Renderer as Renderer, - _TextRenderer as TextRenderer, - _Tokenizer as Tokenizer, - _defaults as defaults, - _getDefaults as getDefaults, -}; - -export {}; diff --git a/node_modules/marked/lib/marked.d.ts b/node_modules/marked/lib/marked.d.ts deleted file mode 100644 index 5404b07..0000000 --- a/node_modules/marked/lib/marked.d.ts +++ /dev/null @@ -1,667 +0,0 @@ -// Generated by dts-bundle-generator v9.5.1 - -export type MarkedToken = (Tokens.Space | Tokens.Code | Tokens.Heading | Tokens.Table | Tokens.Hr | Tokens.Blockquote | Tokens.List | Tokens.ListItem | Tokens.Paragraph | Tokens.HTML | Tokens.Text | Tokens.Def | Tokens.Escape | Tokens.Tag | Tokens.Image | Tokens.Link | Tokens.Strong | Tokens.Em | Tokens.Codespan | Tokens.Br | Tokens.Del); -export type Token = (MarkedToken | Tokens.Generic); -export declare namespace Tokens { - interface Space { - type: "space"; - raw: string; - } - interface Code { - type: "code"; - raw: string; - codeBlockStyle?: "indented" | undefined; - lang?: string | undefined; - text: string; - escaped?: boolean; - } - interface Heading { - type: "heading"; - raw: string; - depth: number; - text: string; - tokens: Token[]; - } - interface Table { - type: "table"; - raw: string; - align: Array<"center" | "left" | "right" | null>; - header: TableCell[]; - rows: TableCell[][]; - } - interface TableRow { - text: string; - } - interface TableCell { - text: string; - tokens: Token[]; - header: boolean; - align: "center" | "left" | "right" | null; - } - interface Hr { - type: "hr"; - raw: string; - } - interface Blockquote { - type: "blockquote"; - raw: string; - text: string; - tokens: Token[]; - } - interface List { - type: "list"; - raw: string; - ordered: boolean; - start: number | ""; - loose: boolean; - items: ListItem[]; - } - interface ListItem { - type: "list_item"; - raw: string; - task: boolean; - checked?: boolean | undefined; - loose: boolean; - text: string; - tokens: Token[]; - } - interface Checkbox { - checked: boolean; - } - interface Paragraph { - type: "paragraph"; - raw: string; - pre?: boolean | undefined; - text: string; - tokens: Token[]; - } - interface HTML { - type: "html"; - raw: string; - pre: boolean; - text: string; - block: boolean; - } - interface Text { - type: "text"; - raw: string; - text: string; - tokens?: Token[]; - } - interface Def { - type: "def"; - raw: string; - tag: string; - href: string; - title: string; - } - interface Escape { - type: "escape"; - raw: string; - text: string; - } - interface Tag { - type: "text" | "html"; - raw: string; - inLink: boolean; - inRawBlock: boolean; - text: string; - block: boolean; - } - interface Link { - type: "link"; - raw: string; - href: string; - title?: string | null; - text: string; - tokens: Token[]; - } - interface Image { - type: "image"; - raw: string; - href: string; - title: string | null; - text: string; - } - interface Strong { - type: "strong"; - raw: string; - text: string; - tokens: Token[]; - } - interface Em { - type: "em"; - raw: string; - text: string; - tokens: Token[]; - } - interface Codespan { - type: "codespan"; - raw: string; - text: string; - } - interface Br { - type: "br"; - raw: string; - } - interface Del { - type: "del"; - raw: string; - text: string; - tokens: Token[]; - } - interface Generic { - [index: string]: any; - type: string; - raw: string; - tokens?: Token[] | undefined; - } -} -export type Links = Record>; -export type TokensList = Token[] & { - links: Links; -}; -/** - * Renderer - */ -declare class _Renderer { - options: MarkedOptions; - parser: _Parser; - constructor(options?: MarkedOptions); - space(token: Tokens.Space): string; - code({ text, lang, escaped }: Tokens.Code): string; - blockquote({ tokens }: Tokens.Blockquote): string; - html({ text }: Tokens.HTML | Tokens.Tag): string; - heading({ tokens, depth }: Tokens.Heading): string; - hr(token: Tokens.Hr): string; - list(token: Tokens.List): string; - listitem(item: Tokens.ListItem): string; - checkbox({ checked }: Tokens.Checkbox): string; - paragraph({ tokens }: Tokens.Paragraph): string; - table(token: Tokens.Table): string; - tablerow({ text }: Tokens.TableRow): string; - tablecell(token: Tokens.TableCell): string; - /** - * span level renderer - */ - strong({ tokens }: Tokens.Strong): string; - em({ tokens }: Tokens.Em): string; - codespan({ text }: Tokens.Codespan): string; - br(token: Tokens.Br): string; - del({ tokens }: Tokens.Del): string; - link({ href, title, tokens }: Tokens.Link): string; - image({ href, title, text }: Tokens.Image): string; - text(token: Tokens.Text | Tokens.Escape | Tokens.Tag): string; -} -/** - * TextRenderer - * returns only the textual part of the token - */ -declare class _TextRenderer { - strong({ text }: Tokens.Strong): string; - em({ text }: Tokens.Em): string; - codespan({ text }: Tokens.Codespan): string; - del({ text }: Tokens.Del): string; - html({ text }: Tokens.HTML | Tokens.Tag): string; - text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): string; - link({ text }: Tokens.Link): string; - image({ text }: Tokens.Image): string; - br(): string; -} -/** - * Parsing & Compiling - */ -declare class _Parser { - options: MarkedOptions; - renderer: _Renderer; - textRenderer: _TextRenderer; - constructor(options?: MarkedOptions); - /** - * Static Parse Method - */ - static parse(tokens: Token[], options?: MarkedOptions): string; - /** - * Static Parse Inline Method - */ - static parseInline(tokens: Token[], options?: MarkedOptions): string; - /** - * Parse Loop - */ - parse(tokens: Token[], top?: boolean): string; - /** - * Parse Inline Tokens - */ - parseInline(tokens: Token[], renderer?: _Renderer | _TextRenderer): string; -} -declare const blockNormal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; -}; -export type BlockKeys = keyof typeof blockNormal; -declare const inlineNormal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; -}; -export type InlineKeys = keyof typeof inlineNormal; -export interface Rules { - block: Record; - inline: Record; -} -/** - * Tokenizer - */ -declare class _Tokenizer { - options: MarkedOptions; - rules: Rules; - lexer: _Lexer; - constructor(options?: MarkedOptions); - space(src: string): Tokens.Space | undefined; - code(src: string): Tokens.Code | undefined; - fences(src: string): Tokens.Code | undefined; - heading(src: string): Tokens.Heading | undefined; - hr(src: string): Tokens.Hr | undefined; - blockquote(src: string): Tokens.Blockquote | undefined; - list(src: string): Tokens.List | undefined; - html(src: string): Tokens.HTML | undefined; - def(src: string): Tokens.Def | undefined; - table(src: string): Tokens.Table | undefined; - lheading(src: string): Tokens.Heading | undefined; - paragraph(src: string): Tokens.Paragraph | undefined; - text(src: string): Tokens.Text | undefined; - escape(src: string): Tokens.Escape | undefined; - tag(src: string): Tokens.Tag | undefined; - link(src: string): Tokens.Link | Tokens.Image | undefined; - reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined; - emStrong(src: string, maskedSrc: string, prevChar?: string): Tokens.Em | Tokens.Strong | undefined; - codespan(src: string): Tokens.Codespan | undefined; - br(src: string): Tokens.Br | undefined; - del(src: string): Tokens.Del | undefined; - autolink(src: string): Tokens.Link | undefined; - url(src: string): Tokens.Link | undefined; - inlineText(src: string): Tokens.Text | undefined; -} -declare class _Hooks { - options: MarkedOptions; - block: boolean | undefined; - constructor(options?: MarkedOptions); - static passThroughHooks: Set; - /** - * Process markdown before marked - */ - preprocess(markdown: string): string; - /** - * Process HTML after marked is finished - */ - postprocess(html: string): string; - /** - * Process all tokens before walk tokens - */ - processAllTokens(tokens: Token[] | TokensList): Token[] | TokensList; - /** - * Provide function to tokenize markdown - */ - provideLexer(): typeof _Lexer.lexInline; - /** - * Provide function to parse tokens - */ - provideParser(): typeof _Parser.parse; -} -export interface TokenizerThis { - lexer: _Lexer; -} -export type TokenizerExtensionFunction = (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; -export type TokenizerStartFunction = (this: TokenizerThis, src: string) => number | void; -export interface TokenizerExtension { - name: string; - level: "block" | "inline"; - start?: TokenizerStartFunction | undefined; - tokenizer: TokenizerExtensionFunction; - childTokens?: string[] | undefined; -} -export interface RendererThis { - parser: _Parser; -} -export type RendererExtensionFunction = (this: RendererThis, token: Tokens.Generic) => string | false | undefined; -export interface RendererExtension { - name: string; - renderer: RendererExtensionFunction; -} -export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension); -export type HooksApi = Omit<_Hooks, "constructor" | "options" | "block">; -export type HooksObject = { - [K in keyof HooksApi]?: (this: _Hooks, ...args: Parameters) => ReturnType | Promise>; -}; -export type RendererApi = Omit<_Renderer, "constructor" | "options" | "parser">; -export type RendererObject = { - [K in keyof RendererApi]?: (this: _Renderer, ...args: Parameters) => ReturnType | false; -}; -export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">; -export type TokenizerObject = { - [K in keyof TokenizerApi]?: (this: _Tokenizer, ...args: Parameters) => ReturnType | false; -}; -export interface MarkedExtension { - /** - * True will tell marked to await any walkTokens functions before parsing the tokens and returning an HTML string. - */ - async?: boolean; - /** - * Enable GFM line breaks. This option requires the gfm option to be true. - */ - breaks?: boolean | undefined; - /** - * Add tokenizers and renderers to marked - */ - extensions?: TokenizerAndRendererExtension[] | undefined | null; - /** - * Enable GitHub flavored markdown. - */ - gfm?: boolean | undefined; - /** - * Hooks are methods that hook into some part of marked. - * preprocess is called to process markdown before sending it to marked. - * processAllTokens is called with the TokensList before walkTokens. - * postprocess is called to process html after marked has finished parsing. - * provideLexer is called to provide a function to tokenize markdown. - * provideParser is called to provide a function to parse tokens. - */ - hooks?: HooksObject | undefined | null; - /** - * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior. - */ - pedantic?: boolean | undefined; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: RendererObject | undefined | null; - /** - * Shows an HTML error message when rendering fails. - */ - silent?: boolean | undefined; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: TokenizerObject | undefined | null; - /** - * The walkTokens function gets called with every token. - * Child tokens are called before moving on to sibling tokens. - * Each token is passed by reference so updates are persisted when passed to the parser. - * The return value of the function is ignored. - */ - walkTokens?: ((token: Token) => void | Promise) | undefined | null; -} -export interface MarkedOptions extends Omit { - /** - * Hooks are methods that hook into some part of marked. - */ - hooks?: _Hooks | undefined | null; - /** - * Type: object Default: new Renderer() - * - * An object containing functions to render tokens to HTML. - */ - renderer?: _Renderer | undefined | null; - /** - * The tokenizer defines how to turn markdown text into tokens. - */ - tokenizer?: _Tokenizer | undefined | null; - /** - * Custom extensions - */ - extensions?: null | { - renderers: { - [name: string]: RendererExtensionFunction; - }; - childTokens: { - [name: string]: string[]; - }; - inline?: TokenizerExtensionFunction[]; - block?: TokenizerExtensionFunction[]; - startInline?: TokenizerStartFunction[]; - startBlock?: TokenizerStartFunction[]; - }; - /** - * walkTokens function returns array of values for Promise.all - */ - walkTokens?: null | ((token: Token) => void | Promise | (void | Promise)[]); -} -/** - * Block Lexer - */ -declare class _Lexer { - tokens: TokensList; - options: MarkedOptions; - state: { - inLink: boolean; - inRawBlock: boolean; - top: boolean; - }; - private tokenizer; - private inlineQueue; - constructor(options?: MarkedOptions); - /** - * Expose Rules - */ - static get rules(): { - block: { - normal: { - blockquote: RegExp; - code: RegExp; - def: RegExp; - fences: RegExp; - heading: RegExp; - hr: RegExp; - html: RegExp; - lheading: RegExp; - list: RegExp; - newline: RegExp; - paragraph: RegExp; - table: RegExp; - text: RegExp; - }; - gfm: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - pedantic: Record<"code" | "blockquote" | "hr" | "html" | "table" | "text" | "heading" | "list" | "paragraph" | "def" | "fences" | "lheading" | "newline", RegExp>; - }; - inline: { - normal: { - _backpedal: RegExp; - anyPunctuation: RegExp; - autolink: RegExp; - blockSkip: RegExp; - br: RegExp; - code: RegExp; - del: RegExp; - emStrongLDelim: RegExp; - emStrongRDelimAst: RegExp; - emStrongRDelimUnd: RegExp; - escape: RegExp; - link: RegExp; - nolink: RegExp; - punctuation: RegExp; - reflink: RegExp; - reflinkSearch: RegExp; - tag: RegExp; - text: RegExp; - url: RegExp; - }; - gfm: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - breaks: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - pedantic: Record<"link" | "code" | "url" | "br" | "del" | "text" | "escape" | "tag" | "reflink" | "autolink" | "nolink" | "_backpedal" | "anyPunctuation" | "blockSkip" | "emStrongLDelim" | "emStrongRDelimAst" | "emStrongRDelimUnd" | "punctuation" | "reflinkSearch", RegExp>; - }; - }; - /** - * Static Lex Method - */ - static lex(src: string, options?: MarkedOptions): TokensList; - /** - * Static Lex Inline Method - */ - static lexInline(src: string, options?: MarkedOptions): Token[]; - /** - * Preprocessing - */ - lex(src: string): TokensList; - /** - * Lexing - */ - blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[]; - blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList; - inline(src: string, tokens?: Token[]): Token[]; - /** - * Lexing/Compiling - */ - inlineTokens(src: string, tokens?: Token[]): Token[]; -} -/** - * Gets the original marked default options. - */ -declare function _getDefaults(): MarkedOptions; -declare let _defaults: MarkedOptions; -export type MaybePromise = void | Promise; -export declare class Marked { - defaults: MarkedOptions; - options: (opt: MarkedOptions) => this; - parse: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; - }; - parseInline: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; - }; - Parser: typeof _Parser; - Renderer: typeof _Renderer; - TextRenderer: typeof _TextRenderer; - Lexer: typeof _Lexer; - Tokenizer: typeof _Tokenizer; - Hooks: typeof _Hooks; - constructor(...args: MarkedExtension[]); - /** - * Run callback for every token - */ - walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]): MaybePromise[]; - use(...args: MarkedExtension[]): this; - setOptions(opt: MarkedOptions): this; - lexer(src: string, options?: MarkedOptions): TokensList; - parser(tokens: Token[], options?: MarkedOptions): string; - private parseMarkdown; - private onError; -} -/** - * Compiles markdown to HTML asynchronously. - * - * @param src String of markdown source to be compiled - * @param options Hash of options, having async: true - * @return Promise of string of compiled HTML - */ -export declare function marked(src: string, options: MarkedOptions & { - async: true; -}): Promise; -/** - * Compiles markdown to HTML. - * - * @param src String of markdown source to be compiled - * @param options Optional hash of options - * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions. - */ -export declare function marked(src: string, options: MarkedOptions & { - async: false; -}): string; -export declare function marked(src: string, options: MarkedOptions & { - async: true; -}): Promise; -export declare function marked(src: string, options?: MarkedOptions | undefined | null): string | Promise; -export declare namespace marked { - var options: (options: MarkedOptions) => typeof marked; - var setOptions: (options: MarkedOptions) => typeof marked; - var getDefaults: typeof _getDefaults; - var defaults: MarkedOptions; - var use: (...args: MarkedExtension[]) => typeof marked; - var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; - var parseInline: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; - }; - var Parser: typeof _Parser; - var parser: typeof _Parser.parse; - var Renderer: typeof _Renderer; - var TextRenderer: typeof _TextRenderer; - var Lexer: typeof _Lexer; - var lexer: typeof _Lexer.lex; - var Tokenizer: typeof _Tokenizer; - var Hooks: typeof _Hooks; - var parse: typeof marked; -} -export declare const options: (options: MarkedOptions) => typeof marked; -export declare const setOptions: (options: MarkedOptions) => typeof marked; -export declare const use: (...args: MarkedExtension[]) => typeof marked; -export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[]; -export declare const parseInline: { - (src: string, options: MarkedOptions & { - async: true; - }): Promise; - (src: string, options: MarkedOptions & { - async: false; - }): string; - (src: string, options?: MarkedOptions | undefined | null): string | Promise; -}; -export declare const parse: typeof marked; -export declare const parser: typeof _Parser.parse; -export declare const lexer: typeof _Lexer.lex; - -export { - _Hooks as Hooks, - _Lexer as Lexer, - _Parser as Parser, - _Renderer as Renderer, - _TextRenderer as TextRenderer, - _Tokenizer as Tokenizer, - _defaults as defaults, - _getDefaults as getDefaults, -}; - -export {}; diff --git a/node_modules/marked/lib/marked.esm.js b/node_modules/marked/lib/marked.esm.js deleted file mode 100644 index 90d6522..0000000 --- a/node_modules/marked/lib/marked.esm.js +++ /dev/null @@ -1,2503 +0,0 @@ -/** - * marked v14.1.3 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ - -/** - * DO NOT EDIT THIS FILE - * The code in this file is generated from files in ./src/ - */ - -/** - * Gets the original marked default options. - */ -function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null, - }; -} -let _defaults = _getDefaults(); -function changeDefaults(newDefaults) { - _defaults = newDefaults; -} - -/** - * Helpers - */ -const escapeTest = /[&<>"']/; -const escapeReplace = new RegExp(escapeTest.source, 'g'); -const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; -const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); -const escapeReplacements = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', -}; -const getEscapeReplacement = (ch) => escapeReplacements[ch]; -function escape$1(html, encode) { - if (encode) { - if (escapeTest.test(html)) { - return html.replace(escapeReplace, getEscapeReplacement); - } - } - else { - if (escapeTestNoEncode.test(html)) { - return html.replace(escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html; -} -const caret = /(^|[^\[])\^/g; -function edit(regex, opt) { - let source = typeof regex === 'string' ? regex : regex.source; - opt = opt || ''; - const obj = { - replace: (name, val) => { - let valSource = typeof val === 'string' ? val : val.source; - valSource = valSource.replace(caret, '$1'); - source = source.replace(name, valSource); - return obj; - }, - getRegex: () => { - return new RegExp(source, opt); - }, - }; - return obj; -} -function cleanUrl(href) { - try { - href = encodeURI(href).replace(/%25/g, '%'); - } - catch { - return null; - } - return href; -} -const noopTest = { exec: () => null }; -function splitCells(tableRow, count) { - // ensure that every cell-delimiting pipe has a space - // before it to distinguish it from an escaped pipe - const row = tableRow.replace(/\|/g, (match, offset, str) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str[curr] === '\\') - escaped = !escaped; - if (escaped) { - // odd number of slashes means | is escaped - // so we leave it alone - return '|'; - } - else { - // add space before unescaped | - return ' |'; - } - }), cells = row.split(/ \|/); - let i = 0; - // First/last cell in a row cannot be empty if it has no leading/trailing pipe - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells[cells.length - 1].trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } - else { - while (cells.length < count) - cells.push(''); - } - } - for (; i < cells.length; i++) { - // leading or trailing whitespace is ignored per the gfm spec - cells[i] = cells[i].trim().replace(/\\\|/g, '|'); - } - return cells; -} -/** - * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). - * /c*$/ is vulnerable to REDOS. - * - * @param str - * @param c - * @param invert Remove suffix of non-c chars instead. Default falsey. - */ -function rtrim(str, c, invert) { - const l = str.length; - if (l === 0) { - return ''; - } - // Length of suffix matching the invert condition. - let suffLen = 0; - // Step left until we fail to match the invert condition. - while (suffLen < l) { - const currChar = str.charAt(l - suffLen - 1); - if (currChar === c && !invert) { - suffLen++; - } - else if (currChar !== c && invert) { - suffLen++; - } - else { - break; - } - } - return str.slice(0, l - suffLen); -} -function findClosingBracket(str, b) { - if (str.indexOf(b[1]) === -1) { - return -1; - } - let level = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === '\\') { - i++; - } - else if (str[i] === b[0]) { - level++; - } - else if (str[i] === b[1]) { - level--; - if (level < 0) { - return i; - } - } - } - return -1; -} - -function outputLink(cap, link, raw, lexer) { - const href = link.href; - const title = link.title ? escape$1(link.title) : null; - const text = cap[1].replace(/\\([\[\]])/g, '$1'); - if (cap[0].charAt(0) !== '!') { - lexer.state.inLink = true; - const token = { - type: 'link', - raw, - href, - title, - text, - tokens: lexer.inlineTokens(text), - }; - lexer.state.inLink = false; - return token; - } - return { - type: 'image', - raw, - href, - title, - text: escape$1(text), - }; -} -function indentCodeCompensation(raw, text) { - const matchIndentToCode = raw.match(/^(\s+)(?:```)/); - if (matchIndentToCode === null) { - return text; - } - const indentToCode = matchIndentToCode[1]; - return text - .split('\n') - .map(node => { - const matchIndentInNode = node.match(/^\s+/); - if (matchIndentInNode === null) { - return node; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node.slice(indentToCode.length); - } - return node; - }) - .join('\n'); -} -/** - * Tokenizer - */ -class _Tokenizer { - options; - rules; // set by the lexer - lexer; // set by the lexer - constructor(options) { - this.options = options || _defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: 'space', - raw: cap[0], - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text = cap[0].replace(/^(?: {1,4}| {0,3}\t)/gm, ''); - return { - type: 'code', - raw: cap[0], - codeBlockStyle: 'indented', - text: !this.options.pedantic - ? rtrim(text, '\n') - : text, - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text = indentCodeCompensation(raw, cap[3] || ''); - return { - type: 'code', - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], - text, - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text = cap[2].trim(); - // remove trailing #s - if (/#$/.test(text)) { - const trimmed = rtrim(text, '#'); - if (this.options.pedantic) { - text = trimmed.trim(); - } - else if (!trimmed || / $/.test(trimmed)) { - // CommonMark requires space before trailing #s - text = trimmed.trim(); - } - } - return { - type: 'heading', - raw: cap[0], - depth: cap[1].length, - text, - tokens: this.lexer.inline(text), - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: 'hr', - raw: rtrim(cap[0], '\n'), - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - let lines = rtrim(cap[0], '\n').split('\n'); - let raw = ''; - let text = ''; - const tokens = []; - while (lines.length > 0) { - let inBlockquote = false; - const currentLines = []; - let i; - for (i = 0; i < lines.length; i++) { - // get lines up to a continuation - if (/^ {0,3}>/.test(lines[i])) { - currentLines.push(lines[i]); - inBlockquote = true; - } - else if (!inBlockquote) { - currentLines.push(lines[i]); - } - else { - break; - } - } - lines = lines.slice(i); - const currentRaw = currentLines.join('\n'); - const currentText = currentRaw - // precede setext continuation with 4 spaces so it isn't a setext - .replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1') - .replace(/^ {0,3}>[ \t]?/gm, ''); - raw = raw ? `${raw}\n${currentRaw}` : currentRaw; - text = text ? `${text}\n${currentText}` : currentText; - // parse blockquote lines as top level tokens - // merge paragraphs if this is a continuation - const top = this.lexer.state.top; - this.lexer.state.top = true; - this.lexer.blockTokens(currentText, tokens, true); - this.lexer.state.top = top; - // if there is no continuation then we are done - if (lines.length === 0) { - break; - } - const lastToken = tokens[tokens.length - 1]; - if (lastToken?.type === 'code') { - // blockquote continuation cannot be preceded by a code block - break; - } - else if (lastToken?.type === 'blockquote') { - // include continuation in nested blockquote - const oldToken = lastToken; - const newText = oldToken.raw + '\n' + lines.join('\n'); - const newToken = this.blockquote(newText); - tokens[tokens.length - 1] = newToken; - raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; - text = text.substring(0, text.length - oldToken.text.length) + newToken.text; - break; - } - else if (lastToken?.type === 'list') { - // include continuation in nested list - const oldToken = lastToken; - const newText = oldToken.raw + '\n' + lines.join('\n'); - const newToken = this.list(newText); - tokens[tokens.length - 1] = newToken; - raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; - text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw; - lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\n'); - continue; - } - } - return { - type: 'blockquote', - raw, - tokens, - text, - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list = { - type: 'list', - raw: '', - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : '', - loose: false, - items: [], - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : '[*+-]'; - } - // Get next list item - const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let endsWithBlankLine = false; - // Check if current bullet point can start a new List Item - while (src) { - let endEarly = false; - let raw = ''; - let itemContents = ''; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); - let nextLine = src.split('\n', 1)[0]; - let blankLine = !line.trim(); - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line.trimStart(); - } - else if (blankLine) { - indent = cap[1].length + 1; - } - else { - indent = cap[2].search(/[^ ]/); // Find first non-space char - indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent - itemContents = line.slice(indent); - indent += cap[1].length; - } - if (blankLine && /^[ \t]*$/.test(nextLine)) { // Items begin with at most one blank line - raw += nextLine + '\n'; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); - const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); - const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); - const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); - const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'); - // Check if following lines should be included in List Item - while (src) { - const rawLine = src.split('\n', 1)[0]; - let nextLineWithoutTabs; - nextLine = rawLine; - // Re-align to follow commonmark nesting rules - if (this.options.pedantic) { - nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); - nextLineWithoutTabs = nextLine; - } - else { - nextLineWithoutTabs = nextLine.replace(/\t/g, ' '); - } - // End list item if found code fences - if (fencesBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new heading - if (headingBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of html block - if (htmlBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new bullet - if (nextBulletRegex.test(nextLine)) { - break; - } - // Horizontal rule found - if (hrRegex.test(nextLine)) { - break; - } - if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible - itemContents += '\n' + nextLineWithoutTabs.slice(indent); - } - else { - // not enough indentation - if (blankLine) { - break; - } - // paragraph continuation unless last line was a different block level element - if (line.replace(/\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block - break; - } - if (fencesBeginRegex.test(line)) { - break; - } - if (headingBeginRegex.test(line)) { - break; - } - if (hrRegex.test(line)) { - break; - } - itemContents += '\n' + nextLine; - } - if (!blankLine && !nextLine.trim()) { // Check if current line is blank - blankLine = true; - } - raw += rawLine + '\n'; - src = src.substring(rawLine.length + 1); - line = nextLineWithoutTabs.slice(indent); - } - } - if (!list.loose) { - // If the previous item ended with a blank line, the list is loose - if (endsWithBlankLine) { - list.loose = true; - } - else if (/\n[ \t]*\n[ \t]*$/.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - // Check for task list items - if (this.options.gfm) { - istask = /^\[[ xX]\] /.exec(itemContents); - if (istask) { - ischecked = istask[0] !== '[ ] '; - itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); - } - } - list.items.push({ - type: 'list_item', - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [], - }); - list.raw += raw; - } - // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic - list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd(); - list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd(); - list.raw = list.raw.trimEnd(); - // Item child tokens handled here at end because we needed to have the final item to trim it first - for (let i = 0; i < list.items.length; i++) { - this.lexer.state.top = false; - list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); - if (!list.loose) { - // Check if list should be loose - const spacers = list.items[i].tokens.filter(t => t.type === 'space'); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); - list.loose = hasMultipleLineBreaks; - } - } - // Set all items to loose if list is loose - if (list.loose) { - for (let i = 0; i < list.items.length; i++) { - list.items[i].loose = true; - } - } - return list; - } - } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token = { - type: 'html', - block: true, - raw: cap[0], - pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', - text: cap[0], - }; - return token; - } - } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); - const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; - const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; - return { - type: 'def', - tag, - raw: cap[0], - href, - title, - }; - } - } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!/[:|]/.test(cap[2])) { - // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); - const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; - const item = { - type: 'table', - raw: cap[0], - header: [], - align: [], - rows: [], - }; - if (headers.length !== aligns.length) { - // header and align columns must be equal, rows can be different. - return; - } - for (const align of aligns) { - if (/^ *-+: *$/.test(align)) { - item.align.push('right'); - } - else if (/^ *:-+: *$/.test(align)) { - item.align.push('center'); - } - else if (/^ *:-+ *$/.test(align)) { - item.align.push('left'); - } - else { - item.align.push(null); - } - } - for (let i = 0; i < headers.length; i++) { - item.header.push({ - text: headers[i], - tokens: this.lexer.inline(headers[i]), - header: true, - align: item.align[i], - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map((cell, i) => { - return { - text: cell, - tokens: this.lexer.inline(cell), - header: false, - align: item.align[i], - }; - })); - } - return item; - } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: 'heading', - raw: cap[0], - depth: cap[2].charAt(0) === '=' ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]), - }; - } - } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text = cap[1].charAt(cap[1].length - 1) === '\n' - ? cap[1].slice(0, -1) - : cap[1]; - return { - type: 'paragraph', - raw: cap[0], - text, - tokens: this.lexer.inline(text), - }; - } - } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: 'text', - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]), - }; - } - } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: 'escape', - raw: cap[0], - text: escape$1(cap[1]), - }; - } - } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } - else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: 'html', - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0], - }; - } - } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && /^$/.test(trimmedUrl))) { - return; - } - // ending angle bracket cannot be escaped - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } - } - else { - // find closing parenthesis - const lastParenIndex = findClosingBracket(cap[2], '()'); - if (lastParenIndex > -1) { - const start = cap[0].indexOf('!') === 0 ? 5 : 4; - const linkLen = start + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ''; - } - } - let href = cap[2]; - let title = ''; - if (this.options.pedantic) { - // split pedantic href and title - const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); - if (link) { - href = link[1]; - title = link[3]; - } - } - else { - title = cap[3] ? cap[3].slice(1, -1) : ''; - } - href = href.trim(); - if (/^$/.test(trimmedUrl))) { - // pedantic allows starting angle bracket without ending angle bracket - href = href.slice(1); - } - else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, - title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title, - }, cap[0], this.lexer); - } - } - reflink(src, links) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) - || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); - const link = links[linkString.toLowerCase()]; - if (!link) { - const text = cap[0].charAt(0); - return { - type: 'text', - raw: text, - text, - }; - } - return outputLink(cap, link, cap[0], this.lexer); - } - } - emStrong(src, maskedSrc, prevChar = '') { - let match = this.rules.inline.emStrongLDelim.exec(src); - if (!match) - return; - // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well - if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) - return; - const nextChar = match[1] || match[2] || ''; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) - const lLength = [...match[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - // Clip maskedSrc to same section of string as src (move to lexer?) - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match = endReg.exec(maskedSrc)) != null) { - rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; - if (!rDelim) - continue; // skip single * in __abc*abc__ - rLength = [...rDelim].length; - if (match[3] || match[4]) { // found another Left Delim - delimTotal += rLength; - continue; - } - else if (match[5] || match[6]) { // either Left or Right Delim - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; // CommonMark Emphasis Rules 9-10 - } - } - delimTotal -= rLength; - if (delimTotal > 0) - continue; // Haven't found enough closing delimiters - // Remove extra characters. *a*** -> *a* - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - // char length can be >1 for unicode characters; - const lastCharLength = [...match[0]][0].length; - const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); - // Create `em` if smallest delimiter has odd char count. *a*** - if (Math.min(lLength, rLength) % 2) { - const text = raw.slice(1, -1); - return { - type: 'em', - raw, - text, - tokens: this.lexer.inlineTokens(text), - }; - } - // Create 'strong' if smallest delimiter has even char count. **a*** - const text = raw.slice(2, -2); - return { - type: 'strong', - raw, - text, - tokens: this.lexer.inlineTokens(text), - }; - } - } - } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text = cap[2].replace(/\n/g, ' '); - const hasNonSpaceChars = /[^ ]/.test(text); - const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text = text.substring(1, text.length - 1); - } - text = escape$1(text, true); - return { - type: 'codespan', - raw: cap[0], - text, - }; - } - } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: 'br', - raw: cap[0], - }; - } - } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: 'del', - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]), - }; - } - } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[1]); - href = 'mailto:' + text; - } - else { - text = escape$1(cap[1]); - href = text; - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text, - }, - ], - }; - } - } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[0]); - href = 'mailto:' + text; - } - else { - // do extended autolink path validation - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; - } while (prevCapZero !== cap[0]); - text = escape$1(cap[0]); - if (cap[1] === 'www.') { - href = 'http://' + cap[0]; - } - else { - href = cap[0]; - } - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text, - }, - ], - }; - } - } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - let text; - if (this.lexer.state.inRawBlock) { - text = cap[0]; - } - else { - text = escape$1(cap[0]); - } - return { - type: 'text', - raw: cap[0], - text, - }; - } - } -} - -/** - * Block-Level Grammar - */ -const newline = /^(?:[ \t]*(?:\n|$))+/; -const blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; -const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; -const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; -const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; -const bullet = /(?:[*+-]|\d{1,9}[.)])/; -const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) - .replace(/bull/g, bullet) // lists can interrupt - .replace(/blockCode/g, /(?: {4}| {0,3}\t)/) // indented code blocks can interrupt - .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt - .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt - .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt - .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt - .getRegex(); -const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; -const blockText = /^[^\n]+/; -const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; -const def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/) - .replace('label', _blockLabel) - .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) - .getRegex(); -const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) - .replace(/bull/g, bullet) - .getRegex(); -const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' - + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' - + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' - + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' - + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' - + '|tr|track|ul'; -const _comment = /|$))/; -const html = edit('^ {0,3}(?:' // optional indentation - + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) - + '|comment[^\\n]*(\\n+|$)' // (2) - + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) - + '|\\n*|$)' // (4) - + '|\\n*|$)' // (5) - + '|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (6) - + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) open tag - + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) closing tag - + ')', 'i') - .replace('comment', _comment) - .replace('tag', _tag) - .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) - .getRegex(); -const paragraph = edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(); -const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) - .replace('paragraph', paragraph) - .getRegex(); -/** - * Normal Block Grammar - */ -const blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText, -}; -/** - * GFM Block Grammar - */ -const gfmTable = edit('^ *([^\\n ].*)\\n' // Header - + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align - + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('blockquote', ' {0,3}>') - .replace('code', '(?: {4}| {0,3}\t)[^\\n]') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // tables can be interrupted by type (6) html blocks - .getRegex(); -const blockGfm = { - ...blockNormal, - table: gfmTable, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('table', gfmTable) // interrupt paragraphs with table - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(), -}; -/** - * Pedantic grammar (original John Gruber's loose markdown specification) - */ -const blockPedantic = { - ...blockNormal, - html: edit('^ *(?:comment *(?:\\n|\\s*$)' - + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag - + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') - .replace('comment', _comment) - .replace(/tag/g, '(?!(?:' - + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' - + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' - + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') - .getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: noopTest, // fences not supported - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' *#{1,6} *[^\n]') - .replace('lheading', lheading) - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('|fences', '') - .replace('|list', '') - .replace('|html', '') - .replace('|tag', '') - .getRegex(), -}; -/** - * Inline-Level Grammar - */ -const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; -const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; -const br = /^( {2,}|\\)\n(?!\s*$)/; -const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ -const blockSkip = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g; -const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') - .replace(/punct/g, _punctuation) - .getRegex(); -const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong - + '|[^*]+(?=[^*])' // Consume to delim - + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter - + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter - + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter - + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter - + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter - + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -// (6) Not allowed for _ -const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong - + '|[^_]+(?=[^_])' // Consume to delim - + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter - + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter - + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter - + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter - + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); -const anyPunctuation = edit(/\\([punct])/, 'gu') - .replace(/punct/g, _punctuation) - .getRegex(); -const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) - .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) - .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) - .getRegex(); -const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); -const tag = edit('^comment' - + '|^' // self-closing tag - + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag - + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. - + '|^' // declaration, e.g. - + '|^') // CDATA section - .replace('comment', _inlineComment) - .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) - .getRegex(); -const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; -const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) - .replace('label', _inlineLabel) - .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) - .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) - .getRegex(); -const reflink = edit(/^!?\[(label)\]\[(ref)\]/) - .replace('label', _inlineLabel) - .replace('ref', _blockLabel) - .getRegex(); -const nolink = edit(/^!?\[(ref)\](?:\[\])?/) - .replace('ref', _blockLabel) - .getRegex(); -const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') - .replace('reflink', reflink) - .replace('nolink', nolink) - .getRegex(); -/** - * Normal Inline Grammar - */ -const inlineNormal = { - _backpedal: noopTest, // only used for GFM url - anyPunctuation, - autolink, - blockSkip, - br, - code: inlineCode, - del: noopTest, - emStrongLDelim, - emStrongRDelimAst, - emStrongRDelimUnd, - escape, - link, - nolink, - punctuation, - reflink, - reflinkSearch, - tag, - text: inlineText, - url: noopTest, -}; -/** - * Pedantic Inline Grammar - */ -const inlinePedantic = { - ...inlineNormal, - link: edit(/^!?\[(label)\]\((.*?)\)/) - .replace('label', _inlineLabel) - .getRegex(), - reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) - .replace('label', _inlineLabel) - .getRegex(), -}; -/** - * GFM Inline Grammar - */ -const inlineGfm = { - ...inlineNormal, - escape: edit(escape).replace('])', '~|])').getRegex(), - url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') - .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) - .getRegex(), - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // newline - if (token = this.tokenizer.space(src)) { - src = src.substring(token.raw.length); - if (token.raw.length === 1 && tokens.length > 0) { - // if there's a single \n as a spacer, it's terminating the last line, - // so move it there so that we don't get unnecessary paragraph tags - tokens[tokens.length - 1].raw += '\n'; - } - else { - tokens.push(token); - } - continue; - } - // code - if (token = this.tokenizer.code(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - // An indented code block cannot interrupt a paragraph. - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - // fences - if (token = this.tokenizer.fences(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // heading - if (token = this.tokenizer.heading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // hr - if (token = this.tokenizer.hr(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // blockquote - if (token = this.tokenizer.blockquote(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // list - if (token = this.tokenizer.list(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // html - if (token = this.tokenizer.html(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // def - if (token = this.tokenizer.def(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.raw; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else if (!this.tokens.links[token.tag]) { - this.tokens.links[token.tag] = { - href: token.href, - title: token.title, - }; - } - continue; - } - // table (gfm) - if (token = this.tokenizer.table(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // lheading - if (token = this.tokenizer.lheading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // top-level paragraph - // prevent paragraph consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startBlock) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startBlock.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { - lastToken = tokens[tokens.length - 1]; - if (lastParagraphClipped && lastToken?.type === 'paragraph') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - lastParagraphClipped = (cutSrc.length !== src.length); - src = src.substring(token.raw.length); - continue; - } - // text - if (token = this.tokenizer.text(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - this.state.top = true; - return tokens; - } - inline(src, tokens = []) { - this.inlineQueue.push({ src, tokens }); - return tokens; - } - /** - * Lexing/Compiling - */ - inlineTokens(src, tokens = []) { - let token, lastToken, cutSrc; - // String with links masked to avoid interference with em and strong - let maskedSrc = src; - let match; - let keepPrevChar, prevChar; - // Mask out reflinks - if (this.tokens.links) { - const links = Object.keys(this.tokens.links); - if (links.length > 0) { - while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { - if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); - } - } - } - } - // Mask out other blocks - while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - } - // Mask out escaped characters - while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - } - while (src) { - if (!keepPrevChar) { - prevChar = ''; - } - keepPrevChar = false; - // extensions - if (this.options.extensions - && this.options.extensions.inline - && this.options.extensions.inline.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // escape - if (token = this.tokenizer.escape(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // tag - if (token = this.tokenizer.tag(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // link - if (token = this.tokenizer.link(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // reflink, nolink - if (token = this.tokenizer.reflink(src, this.tokens.links)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // em & strong - if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // code - if (token = this.tokenizer.codespan(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // br - if (token = this.tokenizer.br(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // del (gfm) - if (token = this.tokenizer.del(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // autolink - if (token = this.tokenizer.autolink(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // url (gfm) - if (!this.state.inLink && (token = this.tokenizer.url(src))) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // text - // prevent inlineText consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startInline) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startInline.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (token = this.tokenizer.inlineText(cutSrc)) { - src = src.substring(token.raw.length); - if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started - prevChar = token.raw.slice(-1); - } - keepPrevChar = true; - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - return tokens; - } -} - -/** - * Renderer - */ -class _Renderer { - options; - parser; // set by the parser - constructor(options) { - this.options = options || _defaults; - } - space(token) { - return ''; - } - code({ text, lang, escaped }) { - const langString = (lang || '').match(/^\S*/)?.[0]; - const code = text.replace(/\n$/, '') + '\n'; - if (!langString) { - return '
    '
    -                + (escaped ? code : escape$1(code, true))
    -                + '
    \n'; - } - return '
    '
    -            + (escaped ? code : escape$1(code, true))
    -            + '
    \n'; - } - blockquote({ tokens }) { - const body = this.parser.parse(tokens); - return `
    \n${body}
    \n`; - } - html({ text }) { - return text; - } - heading({ tokens, depth }) { - return `${this.parser.parseInline(tokens)}\n`; - } - hr(token) { - return '
    \n'; - } - list(token) { - const ordered = token.ordered; - const start = token.start; - let body = ''; - for (let j = 0; j < token.items.length; j++) { - const item = token.items[j]; - body += this.listitem(item); - } - const type = ordered ? 'ol' : 'ul'; - const startAttr = (ordered && start !== 1) ? (' start="' + start + '"') : ''; - return '<' + type + startAttr + '>\n' + body + '\n'; - } - listitem(item) { - let itemBody = ''; - if (item.task) { - const checkbox = this.checkbox({ checked: !!item.checked }); - if (item.loose) { - if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') { - item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; - if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { - item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; - } - } - else { - item.tokens.unshift({ - type: 'text', - raw: checkbox + ' ', - text: checkbox + ' ', - }); - } - } - else { - itemBody += checkbox + ' '; - } - } - itemBody += this.parser.parse(item.tokens, !!item.loose); - return `
  • ${itemBody}
  • \n`; - } - checkbox({ checked }) { - return ''; - } - paragraph({ tokens }) { - return `

    ${this.parser.parseInline(tokens)}

    \n`; - } - table(token) { - let header = ''; - // header - let cell = ''; - for (let j = 0; j < token.header.length; j++) { - cell += this.tablecell(token.header[j]); - } - header += this.tablerow({ text: cell }); - let body = ''; - for (let j = 0; j < token.rows.length; j++) { - const row = token.rows[j]; - cell = ''; - for (let k = 0; k < row.length; k++) { - cell += this.tablecell(row[k]); - } - body += this.tablerow({ text: cell }); - } - if (body) - body = `${body}`; - return '\n' - + '\n' - + header - + '\n' - + body - + '
    \n'; - } - tablerow({ text }) { - return `\n${text}\n`; - } - tablecell(token) { - const content = this.parser.parseInline(token.tokens); - const type = token.header ? 'th' : 'td'; - const tag = token.align - ? `<${type} align="${token.align}">` - : `<${type}>`; - return tag + content + `\n`; - } - /** - * span level renderer - */ - strong({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - em({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - codespan({ text }) { - return `${text}`; - } - br(token) { - return '
    '; - } - del({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - link({ href, title, tokens }) { - const text = this.parser.parseInline(tokens); - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = '
    '; - return out; - } - image({ href, title, text }) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = `${text} { - const tokens = genericToken[childTokens].flat(Infinity); - values = values.concat(this.walkTokens(tokens, callback)); - }); - } - else if (genericToken.tokens) { - values = values.concat(this.walkTokens(genericToken.tokens, callback)); - } - } - } - } - return values; - } - use(...args) { - const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; - args.forEach((pack) => { - // copy options to new object - const opts = { ...pack }; - // set async to true if it was set to true before - opts.async = this.defaults.async || opts.async || false; - // ==-- Parse "addon" extensions --== // - if (pack.extensions) { - pack.extensions.forEach((ext) => { - if (!ext.name) { - throw new Error('extension name required'); - } - if ('renderer' in ext) { // Renderer extensions - const prevRenderer = extensions.renderers[ext.name]; - if (prevRenderer) { - // Replace extension with func to run new extension but fall back if false - extensions.renderers[ext.name] = function (...args) { - let ret = ext.renderer.apply(this, args); - if (ret === false) { - ret = prevRenderer.apply(this, args); - } - return ret; - }; - } - else { - extensions.renderers[ext.name] = ext.renderer; - } - } - if ('tokenizer' in ext) { // Tokenizer Extensions - if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { - throw new Error("extension level must be 'block' or 'inline'"); - } - const extLevel = extensions[ext.level]; - if (extLevel) { - extLevel.unshift(ext.tokenizer); - } - else { - extensions[ext.level] = [ext.tokenizer]; - } - if (ext.start) { // Function to check for start of token - if (ext.level === 'block') { - if (extensions.startBlock) { - extensions.startBlock.push(ext.start); - } - else { - extensions.startBlock = [ext.start]; - } - } - else if (ext.level === 'inline') { - if (extensions.startInline) { - extensions.startInline.push(ext.start); - } - else { - extensions.startInline = [ext.start]; - } - } - } - } - if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens - extensions.childTokens[ext.name] = ext.childTokens; - } - }); - opts.extensions = extensions; - } - // ==-- Parse "overwrite" extensions --== // - if (pack.renderer) { - const renderer = this.defaults.renderer || new _Renderer(this.defaults); - for (const prop in pack.renderer) { - if (!(prop in renderer)) { - throw new Error(`renderer '${prop}' does not exist`); - } - if (['options', 'parser'].includes(prop)) { - // ignore options property - continue; - } - const rendererProp = prop; - const rendererFunc = pack.renderer[rendererProp]; - const prevRenderer = renderer[rendererProp]; - // Replace renderer with func to run extension, but fall back if false - renderer[rendererProp] = (...args) => { - let ret = rendererFunc.apply(renderer, args); - if (ret === false) { - ret = prevRenderer.apply(renderer, args); - } - return ret || ''; - }; - } - opts.renderer = renderer; - } - if (pack.tokenizer) { - const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); - for (const prop in pack.tokenizer) { - if (!(prop in tokenizer)) { - throw new Error(`tokenizer '${prop}' does not exist`); - } - if (['options', 'rules', 'lexer'].includes(prop)) { - // ignore options, rules, and lexer properties - continue; - } - const tokenizerProp = prop; - const tokenizerFunc = pack.tokenizer[tokenizerProp]; - const prevTokenizer = tokenizer[tokenizerProp]; - // Replace tokenizer with func to run extension, but fall back if false - // @ts-expect-error cannot type tokenizer function dynamically - tokenizer[tokenizerProp] = (...args) => { - let ret = tokenizerFunc.apply(tokenizer, args); - if (ret === false) { - ret = prevTokenizer.apply(tokenizer, args); - } - return ret; - }; - } - opts.tokenizer = tokenizer; - } - // ==-- Parse Hooks extensions --== // - if (pack.hooks) { - const hooks = this.defaults.hooks || new _Hooks(); - for (const prop in pack.hooks) { - if (!(prop in hooks)) { - throw new Error(`hook '${prop}' does not exist`); - } - if (['options', 'block'].includes(prop)) { - // ignore options and block properties - continue; - } - const hooksProp = prop; - const hooksFunc = pack.hooks[hooksProp]; - const prevHook = hooks[hooksProp]; - if (_Hooks.passThroughHooks.has(prop)) { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (arg) => { - if (this.defaults.async) { - return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { - return prevHook.call(hooks, ret); - }); - } - const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); - }; - } - else { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (...args) => { - let ret = hooksFunc.apply(hooks, args); - if (ret === false) { - ret = prevHook.apply(hooks, args); - } - return ret; - }; - } - } - opts.hooks = hooks; - } - // ==-- Parse WalkTokens extensions --== // - if (pack.walkTokens) { - const walkTokens = this.defaults.walkTokens; - const packWalktokens = pack.walkTokens; - opts.walkTokens = function (token) { - let values = []; - values.push(packWalktokens.call(this, token)); - if (walkTokens) { - values = values.concat(walkTokens.call(this, token)); - } - return values; - }; - } - this.defaults = { ...this.defaults, ...opts }; - }); - return this; - } - setOptions(opt) { - this.defaults = { ...this.defaults, ...opt }; - return this; - } - lexer(src, options) { - return _Lexer.lex(src, options ?? this.defaults); - } - parser(tokens, options) { - return _Parser.parse(tokens, options ?? this.defaults); - } - parseMarkdown(blockType) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const parse = (src, options) => { - const origOpt = { ...options }; - const opt = { ...this.defaults, ...origOpt }; - const throwError = this.onError(!!opt.silent, !!opt.async); - // throw error if an extension set async to true but parse was called with async: false - if (this.defaults.async === true && origOpt.async === false) { - return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.')); - } - // throw error in case of non string input - if (typeof src === 'undefined' || src === null) { - return throwError(new Error('marked(): input parameter is undefined or null')); - } - if (typeof src !== 'string') { - return throwError(new Error('marked(): input parameter is of type ' - + Object.prototype.toString.call(src) + ', string expected')); - } - if (opt.hooks) { - opt.hooks.options = opt; - opt.hooks.block = blockType; - } - const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline); - const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline); - if (opt.async) { - return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) - .then(src => lexer(src, opt)) - .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) - .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) - .then(tokens => parser(tokens, opt)) - .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) - .catch(throwError); - } - try { - if (opt.hooks) { - src = opt.hooks.preprocess(src); - } - let tokens = lexer(src, opt); - if (opt.hooks) { - tokens = opt.hooks.processAllTokens(tokens); - } - if (opt.walkTokens) { - this.walkTokens(tokens, opt.walkTokens); - } - let html = parser(tokens, opt); - if (opt.hooks) { - html = opt.hooks.postprocess(html); - } - return html; - } - catch (e) { - return throwError(e); - } - }; - return parse; - } - onError(silent, async) { - return (e) => { - e.message += '\nPlease report this to https://github.com/markedjs/marked.'; - if (silent) { - const msg = '

    An error occurred:

    '
    -                    + escape$1(e.message + '', true)
    -                    + '
    '; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } -} - -const markedInstance = new Marked(); -function marked(src, opt) { - return markedInstance.parse(src, opt); -} -/** - * Sets the default options. - * - * @param options Hash of options - */ -marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; -/** - * Gets the original marked default options. - */ -marked.getDefaults = _getDefaults; -marked.defaults = _defaults; -/** - * Use Extension - */ -marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; -}; -/** - * Run callback for every token - */ -marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); -}; -/** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ -marked.parseInline = markedInstance.parseInline; -/** - * Expose - */ -marked.Parser = _Parser; -marked.parser = _Parser.parse; -marked.Renderer = _Renderer; -marked.TextRenderer = _TextRenderer; -marked.Lexer = _Lexer; -marked.lexer = _Lexer.lex; -marked.Tokenizer = _Tokenizer; -marked.Hooks = _Hooks; -marked.parse = marked; -const options = marked.options; -const setOptions = marked.setOptions; -const use = marked.use; -const walkTokens = marked.walkTokens; -const parseInline = marked.parseInline; -const parse = marked; -const parser = _Parser.parse; -const lexer = _Lexer.lex; - -export { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens }; -//# sourceMappingURL=marked.esm.js.map diff --git a/node_modules/marked/lib/marked.esm.js.map b/node_modules/marked/lib/marked.esm.js.map deleted file mode 100644 index 4265d28..0000000 --- a/node_modules/marked/lib/marked.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.esm.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket, } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n","import { edit, noopTest, } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape, } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
    \\n${body}
    \\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
    \\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["escape"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/marked/lib/marked.umd.js b/node_modules/marked/lib/marked.umd.js deleted file mode 100644 index f76d7d4..0000000 --- a/node_modules/marked/lib/marked.umd.js +++ /dev/null @@ -1,2527 +0,0 @@ -/** - * marked v14.1.3 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ - -/** - * DO NOT EDIT THIS FILE - * The code in this file is generated from files in ./src/ - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {})); -})(this, (function (exports) { 'use strict'; - - /** - * Gets the original marked default options. - */ - function _getDefaults() { - return { - async: false, - breaks: false, - extensions: null, - gfm: true, - hooks: null, - pedantic: false, - renderer: null, - silent: false, - tokenizer: null, - walkTokens: null, - }; - } - exports.defaults = _getDefaults(); - function changeDefaults(newDefaults) { - exports.defaults = newDefaults; - } - - /** - * Helpers - */ - const escapeTest = /[&<>"']/; - const escapeReplace = new RegExp(escapeTest.source, 'g'); - const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/; - const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g'); - const escapeReplacements = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - }; - const getEscapeReplacement = (ch) => escapeReplacements[ch]; - function escape$1(html, encode) { - if (encode) { - if (escapeTest.test(html)) { - return html.replace(escapeReplace, getEscapeReplacement); - } - } - else { - if (escapeTestNoEncode.test(html)) { - return html.replace(escapeReplaceNoEncode, getEscapeReplacement); - } - } - return html; - } - const caret = /(^|[^\[])\^/g; - function edit(regex, opt) { - let source = typeof regex === 'string' ? regex : regex.source; - opt = opt || ''; - const obj = { - replace: (name, val) => { - let valSource = typeof val === 'string' ? val : val.source; - valSource = valSource.replace(caret, '$1'); - source = source.replace(name, valSource); - return obj; - }, - getRegex: () => { - return new RegExp(source, opt); - }, - }; - return obj; - } - function cleanUrl(href) { - try { - href = encodeURI(href).replace(/%25/g, '%'); - } - catch { - return null; - } - return href; - } - const noopTest = { exec: () => null }; - function splitCells(tableRow, count) { - // ensure that every cell-delimiting pipe has a space - // before it to distinguish it from an escaped pipe - const row = tableRow.replace(/\|/g, (match, offset, str) => { - let escaped = false; - let curr = offset; - while (--curr >= 0 && str[curr] === '\\') - escaped = !escaped; - if (escaped) { - // odd number of slashes means | is escaped - // so we leave it alone - return '|'; - } - else { - // add space before unescaped | - return ' |'; - } - }), cells = row.split(/ \|/); - let i = 0; - // First/last cell in a row cannot be empty if it has no leading/trailing pipe - if (!cells[0].trim()) { - cells.shift(); - } - if (cells.length > 0 && !cells[cells.length - 1].trim()) { - cells.pop(); - } - if (count) { - if (cells.length > count) { - cells.splice(count); - } - else { - while (cells.length < count) - cells.push(''); - } - } - for (; i < cells.length; i++) { - // leading or trailing whitespace is ignored per the gfm spec - cells[i] = cells[i].trim().replace(/\\\|/g, '|'); - } - return cells; - } - /** - * Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). - * /c*$/ is vulnerable to REDOS. - * - * @param str - * @param c - * @param invert Remove suffix of non-c chars instead. Default falsey. - */ - function rtrim(str, c, invert) { - const l = str.length; - if (l === 0) { - return ''; - } - // Length of suffix matching the invert condition. - let suffLen = 0; - // Step left until we fail to match the invert condition. - while (suffLen < l) { - const currChar = str.charAt(l - suffLen - 1); - if (currChar === c && !invert) { - suffLen++; - } - else if (currChar !== c && invert) { - suffLen++; - } - else { - break; - } - } - return str.slice(0, l - suffLen); - } - function findClosingBracket(str, b) { - if (str.indexOf(b[1]) === -1) { - return -1; - } - let level = 0; - for (let i = 0; i < str.length; i++) { - if (str[i] === '\\') { - i++; - } - else if (str[i] === b[0]) { - level++; - } - else if (str[i] === b[1]) { - level--; - if (level < 0) { - return i; - } - } - } - return -1; - } - - function outputLink(cap, link, raw, lexer) { - const href = link.href; - const title = link.title ? escape$1(link.title) : null; - const text = cap[1].replace(/\\([\[\]])/g, '$1'); - if (cap[0].charAt(0) !== '!') { - lexer.state.inLink = true; - const token = { - type: 'link', - raw, - href, - title, - text, - tokens: lexer.inlineTokens(text), - }; - lexer.state.inLink = false; - return token; - } - return { - type: 'image', - raw, - href, - title, - text: escape$1(text), - }; - } - function indentCodeCompensation(raw, text) { - const matchIndentToCode = raw.match(/^(\s+)(?:```)/); - if (matchIndentToCode === null) { - return text; - } - const indentToCode = matchIndentToCode[1]; - return text - .split('\n') - .map(node => { - const matchIndentInNode = node.match(/^\s+/); - if (matchIndentInNode === null) { - return node; - } - const [indentInNode] = matchIndentInNode; - if (indentInNode.length >= indentToCode.length) { - return node.slice(indentToCode.length); - } - return node; - }) - .join('\n'); - } - /** - * Tokenizer - */ - class _Tokenizer { - options; - rules; // set by the lexer - lexer; // set by the lexer - constructor(options) { - this.options = options || exports.defaults; - } - space(src) { - const cap = this.rules.block.newline.exec(src); - if (cap && cap[0].length > 0) { - return { - type: 'space', - raw: cap[0], - }; - } - } - code(src) { - const cap = this.rules.block.code.exec(src); - if (cap) { - const text = cap[0].replace(/^(?: {1,4}| {0,3}\t)/gm, ''); - return { - type: 'code', - raw: cap[0], - codeBlockStyle: 'indented', - text: !this.options.pedantic - ? rtrim(text, '\n') - : text, - }; - } - } - fences(src) { - const cap = this.rules.block.fences.exec(src); - if (cap) { - const raw = cap[0]; - const text = indentCodeCompensation(raw, cap[3] || ''); - return { - type: 'code', - raw, - lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2], - text, - }; - } - } - heading(src) { - const cap = this.rules.block.heading.exec(src); - if (cap) { - let text = cap[2].trim(); - // remove trailing #s - if (/#$/.test(text)) { - const trimmed = rtrim(text, '#'); - if (this.options.pedantic) { - text = trimmed.trim(); - } - else if (!trimmed || / $/.test(trimmed)) { - // CommonMark requires space before trailing #s - text = trimmed.trim(); - } - } - return { - type: 'heading', - raw: cap[0], - depth: cap[1].length, - text, - tokens: this.lexer.inline(text), - }; - } - } - hr(src) { - const cap = this.rules.block.hr.exec(src); - if (cap) { - return { - type: 'hr', - raw: rtrim(cap[0], '\n'), - }; - } - } - blockquote(src) { - const cap = this.rules.block.blockquote.exec(src); - if (cap) { - let lines = rtrim(cap[0], '\n').split('\n'); - let raw = ''; - let text = ''; - const tokens = []; - while (lines.length > 0) { - let inBlockquote = false; - const currentLines = []; - let i; - for (i = 0; i < lines.length; i++) { - // get lines up to a continuation - if (/^ {0,3}>/.test(lines[i])) { - currentLines.push(lines[i]); - inBlockquote = true; - } - else if (!inBlockquote) { - currentLines.push(lines[i]); - } - else { - break; - } - } - lines = lines.slice(i); - const currentRaw = currentLines.join('\n'); - const currentText = currentRaw - // precede setext continuation with 4 spaces so it isn't a setext - .replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, '\n $1') - .replace(/^ {0,3}>[ \t]?/gm, ''); - raw = raw ? `${raw}\n${currentRaw}` : currentRaw; - text = text ? `${text}\n${currentText}` : currentText; - // parse blockquote lines as top level tokens - // merge paragraphs if this is a continuation - const top = this.lexer.state.top; - this.lexer.state.top = true; - this.lexer.blockTokens(currentText, tokens, true); - this.lexer.state.top = top; - // if there is no continuation then we are done - if (lines.length === 0) { - break; - } - const lastToken = tokens[tokens.length - 1]; - if (lastToken?.type === 'code') { - // blockquote continuation cannot be preceded by a code block - break; - } - else if (lastToken?.type === 'blockquote') { - // include continuation in nested blockquote - const oldToken = lastToken; - const newText = oldToken.raw + '\n' + lines.join('\n'); - const newToken = this.blockquote(newText); - tokens[tokens.length - 1] = newToken; - raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw; - text = text.substring(0, text.length - oldToken.text.length) + newToken.text; - break; - } - else if (lastToken?.type === 'list') { - // include continuation in nested list - const oldToken = lastToken; - const newText = oldToken.raw + '\n' + lines.join('\n'); - const newToken = this.list(newText); - tokens[tokens.length - 1] = newToken; - raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw; - text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw; - lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\n'); - continue; - } - } - return { - type: 'blockquote', - raw, - tokens, - text, - }; - } - } - list(src) { - let cap = this.rules.block.list.exec(src); - if (cap) { - let bull = cap[1].trim(); - const isordered = bull.length > 1; - const list = { - type: 'list', - raw: '', - ordered: isordered, - start: isordered ? +bull.slice(0, -1) : '', - loose: false, - items: [], - }; - bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`; - if (this.options.pedantic) { - bull = isordered ? bull : '[*+-]'; - } - // Get next list item - const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`); - let endsWithBlankLine = false; - // Check if current bullet point can start a new List Item - while (src) { - let endEarly = false; - let raw = ''; - let itemContents = ''; - if (!(cap = itemRegex.exec(src))) { - break; - } - if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?) - break; - } - raw = cap[0]; - src = src.substring(raw.length); - let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length)); - let nextLine = src.split('\n', 1)[0]; - let blankLine = !line.trim(); - let indent = 0; - if (this.options.pedantic) { - indent = 2; - itemContents = line.trimStart(); - } - else if (blankLine) { - indent = cap[1].length + 1; - } - else { - indent = cap[2].search(/[^ ]/); // Find first non-space char - indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent - itemContents = line.slice(indent); - indent += cap[1].length; - } - if (blankLine && /^[ \t]*$/.test(nextLine)) { // Items begin with at most one blank line - raw += nextLine + '\n'; - src = src.substring(nextLine.length + 1); - endEarly = true; - } - if (!endEarly) { - const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`); - const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`); - const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`); - const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`); - const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i'); - // Check if following lines should be included in List Item - while (src) { - const rawLine = src.split('\n', 1)[0]; - let nextLineWithoutTabs; - nextLine = rawLine; - // Re-align to follow commonmark nesting rules - if (this.options.pedantic) { - nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' '); - nextLineWithoutTabs = nextLine; - } - else { - nextLineWithoutTabs = nextLine.replace(/\t/g, ' '); - } - // End list item if found code fences - if (fencesBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new heading - if (headingBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of html block - if (htmlBeginRegex.test(nextLine)) { - break; - } - // End list item if found start of new bullet - if (nextBulletRegex.test(nextLine)) { - break; - } - // Horizontal rule found - if (hrRegex.test(nextLine)) { - break; - } - if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible - itemContents += '\n' + nextLineWithoutTabs.slice(indent); - } - else { - // not enough indentation - if (blankLine) { - break; - } - // paragraph continuation unless last line was a different block level element - if (line.replace(/\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block - break; - } - if (fencesBeginRegex.test(line)) { - break; - } - if (headingBeginRegex.test(line)) { - break; - } - if (hrRegex.test(line)) { - break; - } - itemContents += '\n' + nextLine; - } - if (!blankLine && !nextLine.trim()) { // Check if current line is blank - blankLine = true; - } - raw += rawLine + '\n'; - src = src.substring(rawLine.length + 1); - line = nextLineWithoutTabs.slice(indent); - } - } - if (!list.loose) { - // If the previous item ended with a blank line, the list is loose - if (endsWithBlankLine) { - list.loose = true; - } - else if (/\n[ \t]*\n[ \t]*$/.test(raw)) { - endsWithBlankLine = true; - } - } - let istask = null; - let ischecked; - // Check for task list items - if (this.options.gfm) { - istask = /^\[[ xX]\] /.exec(itemContents); - if (istask) { - ischecked = istask[0] !== '[ ] '; - itemContents = itemContents.replace(/^\[[ xX]\] +/, ''); - } - } - list.items.push({ - type: 'list_item', - raw, - task: !!istask, - checked: ischecked, - loose: false, - text: itemContents, - tokens: [], - }); - list.raw += raw; - } - // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic - list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd(); - list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd(); - list.raw = list.raw.trimEnd(); - // Item child tokens handled here at end because we needed to have the final item to trim it first - for (let i = 0; i < list.items.length; i++) { - this.lexer.state.top = false; - list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []); - if (!list.loose) { - // Check if list should be loose - const spacers = list.items[i].tokens.filter(t => t.type === 'space'); - const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw)); - list.loose = hasMultipleLineBreaks; - } - } - // Set all items to loose if list is loose - if (list.loose) { - for (let i = 0; i < list.items.length; i++) { - list.items[i].loose = true; - } - } - return list; - } - } - html(src) { - const cap = this.rules.block.html.exec(src); - if (cap) { - const token = { - type: 'html', - block: true, - raw: cap[0], - pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style', - text: cap[0], - }; - return token; - } - } - def(src) { - const cap = this.rules.block.def.exec(src); - if (cap) { - const tag = cap[1].toLowerCase().replace(/\s+/g, ' '); - const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : ''; - const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3]; - return { - type: 'def', - tag, - raw: cap[0], - href, - title, - }; - } - } - table(src) { - const cap = this.rules.block.table.exec(src); - if (!cap) { - return; - } - if (!/[:|]/.test(cap[2])) { - // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading - return; - } - const headers = splitCells(cap[1]); - const aligns = cap[2].replace(/^\||\| *$/g, '').split('|'); - const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []; - const item = { - type: 'table', - raw: cap[0], - header: [], - align: [], - rows: [], - }; - if (headers.length !== aligns.length) { - // header and align columns must be equal, rows can be different. - return; - } - for (const align of aligns) { - if (/^ *-+: *$/.test(align)) { - item.align.push('right'); - } - else if (/^ *:-+: *$/.test(align)) { - item.align.push('center'); - } - else if (/^ *:-+ *$/.test(align)) { - item.align.push('left'); - } - else { - item.align.push(null); - } - } - for (let i = 0; i < headers.length; i++) { - item.header.push({ - text: headers[i], - tokens: this.lexer.inline(headers[i]), - header: true, - align: item.align[i], - }); - } - for (const row of rows) { - item.rows.push(splitCells(row, item.header.length).map((cell, i) => { - return { - text: cell, - tokens: this.lexer.inline(cell), - header: false, - align: item.align[i], - }; - })); - } - return item; - } - lheading(src) { - const cap = this.rules.block.lheading.exec(src); - if (cap) { - return { - type: 'heading', - raw: cap[0], - depth: cap[2].charAt(0) === '=' ? 1 : 2, - text: cap[1], - tokens: this.lexer.inline(cap[1]), - }; - } - } - paragraph(src) { - const cap = this.rules.block.paragraph.exec(src); - if (cap) { - const text = cap[1].charAt(cap[1].length - 1) === '\n' - ? cap[1].slice(0, -1) - : cap[1]; - return { - type: 'paragraph', - raw: cap[0], - text, - tokens: this.lexer.inline(text), - }; - } - } - text(src) { - const cap = this.rules.block.text.exec(src); - if (cap) { - return { - type: 'text', - raw: cap[0], - text: cap[0], - tokens: this.lexer.inline(cap[0]), - }; - } - } - escape(src) { - const cap = this.rules.inline.escape.exec(src); - if (cap) { - return { - type: 'escape', - raw: cap[0], - text: escape$1(cap[1]), - }; - } - } - tag(src) { - const cap = this.rules.inline.tag.exec(src); - if (cap) { - if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) { - this.lexer.state.inLink = false; - } - if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = true; - } - else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) { - this.lexer.state.inRawBlock = false; - } - return { - type: 'html', - raw: cap[0], - inLink: this.lexer.state.inLink, - inRawBlock: this.lexer.state.inRawBlock, - block: false, - text: cap[0], - }; - } - } - link(src) { - const cap = this.rules.inline.link.exec(src); - if (cap) { - const trimmedUrl = cap[2].trim(); - if (!this.options.pedantic && /^$/.test(trimmedUrl))) { - return; - } - // ending angle bracket cannot be escaped - const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\'); - if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) { - return; - } - } - else { - // find closing parenthesis - const lastParenIndex = findClosingBracket(cap[2], '()'); - if (lastParenIndex > -1) { - const start = cap[0].indexOf('!') === 0 ? 5 : 4; - const linkLen = start + cap[1].length + lastParenIndex; - cap[2] = cap[2].substring(0, lastParenIndex); - cap[0] = cap[0].substring(0, linkLen).trim(); - cap[3] = ''; - } - } - let href = cap[2]; - let title = ''; - if (this.options.pedantic) { - // split pedantic href and title - const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); - if (link) { - href = link[1]; - title = link[3]; - } - } - else { - title = cap[3] ? cap[3].slice(1, -1) : ''; - } - href = href.trim(); - if (/^$/.test(trimmedUrl))) { - // pedantic allows starting angle bracket without ending angle bracket - href = href.slice(1); - } - else { - href = href.slice(1, -1); - } - } - return outputLink(cap, { - href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href, - title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title, - }, cap[0], this.lexer); - } - } - reflink(src, links) { - let cap; - if ((cap = this.rules.inline.reflink.exec(src)) - || (cap = this.rules.inline.nolink.exec(src))) { - const linkString = (cap[2] || cap[1]).replace(/\s+/g, ' '); - const link = links[linkString.toLowerCase()]; - if (!link) { - const text = cap[0].charAt(0); - return { - type: 'text', - raw: text, - text, - }; - } - return outputLink(cap, link, cap[0], this.lexer); - } - } - emStrong(src, maskedSrc, prevChar = '') { - let match = this.rules.inline.emStrongLDelim.exec(src); - if (!match) - return; - // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well - if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) - return; - const nextChar = match[1] || match[2] || ''; - if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) { - // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below) - const lLength = [...match[0]].length - 1; - let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0; - const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; - endReg.lastIndex = 0; - // Clip maskedSrc to same section of string as src (move to lexer?) - maskedSrc = maskedSrc.slice(-1 * src.length + lLength); - while ((match = endReg.exec(maskedSrc)) != null) { - rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6]; - if (!rDelim) - continue; // skip single * in __abc*abc__ - rLength = [...rDelim].length; - if (match[3] || match[4]) { // found another Left Delim - delimTotal += rLength; - continue; - } - else if (match[5] || match[6]) { // either Left or Right Delim - if (lLength % 3 && !((lLength + rLength) % 3)) { - midDelimTotal += rLength; - continue; // CommonMark Emphasis Rules 9-10 - } - } - delimTotal -= rLength; - if (delimTotal > 0) - continue; // Haven't found enough closing delimiters - // Remove extra characters. *a*** -> *a* - rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); - // char length can be >1 for unicode characters; - const lastCharLength = [...match[0]][0].length; - const raw = src.slice(0, lLength + match.index + lastCharLength + rLength); - // Create `em` if smallest delimiter has odd char count. *a*** - if (Math.min(lLength, rLength) % 2) { - const text = raw.slice(1, -1); - return { - type: 'em', - raw, - text, - tokens: this.lexer.inlineTokens(text), - }; - } - // Create 'strong' if smallest delimiter has even char count. **a*** - const text = raw.slice(2, -2); - return { - type: 'strong', - raw, - text, - tokens: this.lexer.inlineTokens(text), - }; - } - } - } - codespan(src) { - const cap = this.rules.inline.code.exec(src); - if (cap) { - let text = cap[2].replace(/\n/g, ' '); - const hasNonSpaceChars = /[^ ]/.test(text); - const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text); - if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) { - text = text.substring(1, text.length - 1); - } - text = escape$1(text, true); - return { - type: 'codespan', - raw: cap[0], - text, - }; - } - } - br(src) { - const cap = this.rules.inline.br.exec(src); - if (cap) { - return { - type: 'br', - raw: cap[0], - }; - } - } - del(src) { - const cap = this.rules.inline.del.exec(src); - if (cap) { - return { - type: 'del', - raw: cap[0], - text: cap[2], - tokens: this.lexer.inlineTokens(cap[2]), - }; - } - } - autolink(src) { - const cap = this.rules.inline.autolink.exec(src); - if (cap) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[1]); - href = 'mailto:' + text; - } - else { - text = escape$1(cap[1]); - href = text; - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text, - }, - ], - }; - } - } - url(src) { - let cap; - if (cap = this.rules.inline.url.exec(src)) { - let text, href; - if (cap[2] === '@') { - text = escape$1(cap[0]); - href = 'mailto:' + text; - } - else { - // do extended autolink path validation - let prevCapZero; - do { - prevCapZero = cap[0]; - cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? ''; - } while (prevCapZero !== cap[0]); - text = escape$1(cap[0]); - if (cap[1] === 'www.') { - href = 'http://' + cap[0]; - } - else { - href = cap[0]; - } - } - return { - type: 'link', - raw: cap[0], - text, - href, - tokens: [ - { - type: 'text', - raw: text, - text, - }, - ], - }; - } - } - inlineText(src) { - const cap = this.rules.inline.text.exec(src); - if (cap) { - let text; - if (this.lexer.state.inRawBlock) { - text = cap[0]; - } - else { - text = escape$1(cap[0]); - } - return { - type: 'text', - raw: cap[0], - text, - }; - } - } - } - - /** - * Block-Level Grammar - */ - const newline = /^(?:[ \t]*(?:\n|$))+/; - const blockCode = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/; - const fences = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/; - const hr = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/; - const heading = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/; - const bullet = /(?:[*+-]|\d{1,9}[.)])/; - const lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/) - .replace(/bull/g, bullet) // lists can interrupt - .replace(/blockCode/g, /(?: {4}| {0,3}\t)/) // indented code blocks can interrupt - .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt - .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt - .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt - .replace(/html/g, / {0,3}<[^\n>]+>\n/) // block html can interrupt - .getRegex(); - const _paragraph = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/; - const blockText = /^[^\n]+/; - const _blockLabel = /(?!\s*\])(?:\\.|[^\[\]\\])+/; - const def = edit(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/) - .replace('label', _blockLabel) - .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/) - .getRegex(); - const list = edit(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/) - .replace(/bull/g, bullet) - .getRegex(); - const _tag = 'address|article|aside|base|basefont|blockquote|body|caption' - + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' - + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' - + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' - + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title' - + '|tr|track|ul'; - const _comment = /|$))/; - const html = edit('^ {0,3}(?:' // optional indentation - + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) - + '|comment[^\\n]*(\\n+|$)' // (2) - + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3) - + '|\\n*|$)' // (4) - + '|\\n*|$)' // (5) - + '|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (6) - + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) open tag - + '|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)' // (7) closing tag - + ')', 'i') - .replace('comment', _comment) - .replace('tag', _tag) - .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) - .getRegex(); - const paragraph = edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(); - const blockquote = edit(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/) - .replace('paragraph', paragraph) - .getRegex(); - /** - * Normal Block Grammar - */ - const blockNormal = { - blockquote, - code: blockCode, - def, - fences, - heading, - hr, - html, - lheading, - list, - newline, - paragraph, - table: noopTest, - text: blockText, - }; - /** - * GFM Block Grammar - */ - const gfmTable = edit('^ *([^\\n ].*)\\n' // Header - + ' {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)' // Align - + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)') // Cells - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('blockquote', ' {0,3}>') - .replace('code', '(?: {4}| {0,3}\t)[^\\n]') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // tables can be interrupted by type (6) html blocks - .getRegex(); - const blockGfm = { - ...blockNormal, - table: gfmTable, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' {0,3}#{1,6}(?:\\s|$)') - .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs - .replace('table', gfmTable) // interrupt paragraphs with table - .replace('blockquote', ' {0,3}>') - .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n') - .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt - .replace('html', ')|<(?:script|pre|style|textarea|!--)') - .replace('tag', _tag) // pars can be interrupted by type (6) html blocks - .getRegex(), - }; - /** - * Pedantic grammar (original John Gruber's loose markdown specification) - */ - const blockPedantic = { - ...blockNormal, - html: edit('^ *(?:comment *(?:\\n|\\s*$)' - + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag - + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') - .replace('comment', _comment) - .replace(/tag/g, '(?!(?:' - + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' - + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' - + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') - .getRegex(), - def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, - heading: /^(#{1,6})(.*)(?:\n+|$)/, - fences: noopTest, // fences not supported - lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, - paragraph: edit(_paragraph) - .replace('hr', hr) - .replace('heading', ' *#{1,6} *[^\n]') - .replace('lheading', lheading) - .replace('|table', '') - .replace('blockquote', ' {0,3}>') - .replace('|fences', '') - .replace('|list', '') - .replace('|html', '') - .replace('|tag', '') - .getRegex(), - }; - /** - * Inline-Level Grammar - */ - const escape = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/; - const inlineCode = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/; - const br = /^( {2,}|\\)\n(?!\s*$)/; - const inlineText = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\ - const blockSkip = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g; - const emStrongLDelim = edit(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, 'u') - .replace(/punct/g, _punctuation) - .getRegex(); - const emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)' // Skip orphan inside strong - + '|[^*]+(?=[^*])' // Consume to delim - + '|(?!\\*)[punct](\\*+)(?=[\\s]|$)' // (1) #*** can only be a Right Delimiter - + '|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter - + '|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])' // (3) #***a, ***a can only be Left Delimiter - + '|[\\s](\\*+)(?!\\*)(?=[punct])' // (4) ***# can only be Left Delimiter - + '|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter - + '|[^punct\\s](\\*+)(?=[^punct\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); - // (6) Not allowed for _ - const emStrongRDelimUnd = edit('^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)' // Skip orphan inside strong - + '|[^_]+(?=[^_])' // Consume to delim - + '|(?!_)[punct](_+)(?=[\\s]|$)' // (1) #___ can only be a Right Delimiter - + '|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter - + '|(?!_)[punct\\s](_+)(?=[^punct\\s])' // (3) #___a, ___a can only be Left Delimiter - + '|[\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter - + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter - .replace(/punct/g, _punctuation) - .getRegex(); - const anyPunctuation = edit(/\\([punct])/, 'gu') - .replace(/punct/g, _punctuation) - .getRegex(); - const autolink = edit(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/) - .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/) - .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/) - .getRegex(); - const _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex(); - const tag = edit('^comment' - + '|^' // self-closing tag - + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag - + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. - + '|^' // declaration, e.g. - + '|^') // CDATA section - .replace('comment', _inlineComment) - .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/) - .getRegex(); - const _inlineLabel = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/; - const link = edit(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/) - .replace('label', _inlineLabel) - .replace('href', /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/) - .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/) - .getRegex(); - const reflink = edit(/^!?\[(label)\]\[(ref)\]/) - .replace('label', _inlineLabel) - .replace('ref', _blockLabel) - .getRegex(); - const nolink = edit(/^!?\[(ref)\](?:\[\])?/) - .replace('ref', _blockLabel) - .getRegex(); - const reflinkSearch = edit('reflink|nolink(?!\\()', 'g') - .replace('reflink', reflink) - .replace('nolink', nolink) - .getRegex(); - /** - * Normal Inline Grammar - */ - const inlineNormal = { - _backpedal: noopTest, // only used for GFM url - anyPunctuation, - autolink, - blockSkip, - br, - code: inlineCode, - del: noopTest, - emStrongLDelim, - emStrongRDelimAst, - emStrongRDelimUnd, - escape, - link, - nolink, - punctuation, - reflink, - reflinkSearch, - tag, - text: inlineText, - url: noopTest, - }; - /** - * Pedantic Inline Grammar - */ - const inlinePedantic = { - ...inlineNormal, - link: edit(/^!?\[(label)\]\((.*?)\)/) - .replace('label', _inlineLabel) - .getRegex(), - reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) - .replace('label', _inlineLabel) - .getRegex(), - }; - /** - * GFM Inline Grammar - */ - const inlineGfm = { - ...inlineNormal, - escape: edit(escape).replace('])', '~|])').getRegex(), - url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i') - .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/) - .getRegex(), - _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, - del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/, - text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\ { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // newline - if (token = this.tokenizer.space(src)) { - src = src.substring(token.raw.length); - if (token.raw.length === 1 && tokens.length > 0) { - // if there's a single \n as a spacer, it's terminating the last line, - // so move it there so that we don't get unnecessary paragraph tags - tokens[tokens.length - 1].raw += '\n'; - } - else { - tokens.push(token); - } - continue; - } - // code - if (token = this.tokenizer.code(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - // An indented code block cannot interrupt a paragraph. - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - // fences - if (token = this.tokenizer.fences(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // heading - if (token = this.tokenizer.heading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // hr - if (token = this.tokenizer.hr(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // blockquote - if (token = this.tokenizer.blockquote(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // list - if (token = this.tokenizer.list(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // html - if (token = this.tokenizer.html(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // def - if (token = this.tokenizer.def(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.raw; - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else if (!this.tokens.links[token.tag]) { - this.tokens.links[token.tag] = { - href: token.href, - title: token.title, - }; - } - continue; - } - // table (gfm) - if (token = this.tokenizer.table(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // lheading - if (token = this.tokenizer.lheading(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // top-level paragraph - // prevent paragraph consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startBlock) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startBlock.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) { - lastToken = tokens[tokens.length - 1]; - if (lastParagraphClipped && lastToken?.type === 'paragraph') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - lastParagraphClipped = (cutSrc.length !== src.length); - src = src.substring(token.raw.length); - continue; - } - // text - if (token = this.tokenizer.text(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += '\n' + token.raw; - lastToken.text += '\n' + token.text; - this.inlineQueue.pop(); - this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - this.state.top = true; - return tokens; - } - inline(src, tokens = []) { - this.inlineQueue.push({ src, tokens }); - return tokens; - } - /** - * Lexing/Compiling - */ - inlineTokens(src, tokens = []) { - let token, lastToken, cutSrc; - // String with links masked to avoid interference with em and strong - let maskedSrc = src; - let match; - let keepPrevChar, prevChar; - // Mask out reflinks - if (this.tokens.links) { - const links = Object.keys(this.tokens.links); - if (links.length > 0) { - while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) { - if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex); - } - } - } - } - // Mask out other blocks - while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); - } - // Mask out escaped characters - while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) { - maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); - } - while (src) { - if (!keepPrevChar) { - prevChar = ''; - } - keepPrevChar = false; - // extensions - if (this.options.extensions - && this.options.extensions.inline - && this.options.extensions.inline.some((extTokenizer) => { - if (token = extTokenizer.call({ lexer: this }, src, tokens)) { - src = src.substring(token.raw.length); - tokens.push(token); - return true; - } - return false; - })) { - continue; - } - // escape - if (token = this.tokenizer.escape(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // tag - if (token = this.tokenizer.tag(src)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // link - if (token = this.tokenizer.link(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // reflink, nolink - if (token = this.tokenizer.reflink(src, this.tokens.links)) { - src = src.substring(token.raw.length); - lastToken = tokens[tokens.length - 1]; - if (lastToken && token.type === 'text' && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - // em & strong - if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // code - if (token = this.tokenizer.codespan(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // br - if (token = this.tokenizer.br(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // del (gfm) - if (token = this.tokenizer.del(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // autolink - if (token = this.tokenizer.autolink(src)) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // url (gfm) - if (!this.state.inLink && (token = this.tokenizer.url(src))) { - src = src.substring(token.raw.length); - tokens.push(token); - continue; - } - // text - // prevent inlineText consuming extensions by clipping 'src' to extension start - cutSrc = src; - if (this.options.extensions && this.options.extensions.startInline) { - let startIndex = Infinity; - const tempSrc = src.slice(1); - let tempStart; - this.options.extensions.startInline.forEach((getStartIndex) => { - tempStart = getStartIndex.call({ lexer: this }, tempSrc); - if (typeof tempStart === 'number' && tempStart >= 0) { - startIndex = Math.min(startIndex, tempStart); - } - }); - if (startIndex < Infinity && startIndex >= 0) { - cutSrc = src.substring(0, startIndex + 1); - } - } - if (token = this.tokenizer.inlineText(cutSrc)) { - src = src.substring(token.raw.length); - if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started - prevChar = token.raw.slice(-1); - } - keepPrevChar = true; - lastToken = tokens[tokens.length - 1]; - if (lastToken && lastToken.type === 'text') { - lastToken.raw += token.raw; - lastToken.text += token.text; - } - else { - tokens.push(token); - } - continue; - } - if (src) { - const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0); - if (this.options.silent) { - console.error(errMsg); - break; - } - else { - throw new Error(errMsg); - } - } - } - return tokens; - } - } - - /** - * Renderer - */ - class _Renderer { - options; - parser; // set by the parser - constructor(options) { - this.options = options || exports.defaults; - } - space(token) { - return ''; - } - code({ text, lang, escaped }) { - const langString = (lang || '').match(/^\S*/)?.[0]; - const code = text.replace(/\n$/, '') + '\n'; - if (!langString) { - return '
    '
    -                    + (escaped ? code : escape$1(code, true))
    -                    + '
    \n'; - } - return '
    '
    -                + (escaped ? code : escape$1(code, true))
    -                + '
    \n'; - } - blockquote({ tokens }) { - const body = this.parser.parse(tokens); - return `
    \n${body}
    \n`; - } - html({ text }) { - return text; - } - heading({ tokens, depth }) { - return `${this.parser.parseInline(tokens)}\n`; - } - hr(token) { - return '
    \n'; - } - list(token) { - const ordered = token.ordered; - const start = token.start; - let body = ''; - for (let j = 0; j < token.items.length; j++) { - const item = token.items[j]; - body += this.listitem(item); - } - const type = ordered ? 'ol' : 'ul'; - const startAttr = (ordered && start !== 1) ? (' start="' + start + '"') : ''; - return '<' + type + startAttr + '>\n' + body + '\n'; - } - listitem(item) { - let itemBody = ''; - if (item.task) { - const checkbox = this.checkbox({ checked: !!item.checked }); - if (item.loose) { - if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') { - item.tokens[0].text = checkbox + ' ' + item.tokens[0].text; - if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') { - item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text; - } - } - else { - item.tokens.unshift({ - type: 'text', - raw: checkbox + ' ', - text: checkbox + ' ', - }); - } - } - else { - itemBody += checkbox + ' '; - } - } - itemBody += this.parser.parse(item.tokens, !!item.loose); - return `
  • ${itemBody}
  • \n`; - } - checkbox({ checked }) { - return ''; - } - paragraph({ tokens }) { - return `

    ${this.parser.parseInline(tokens)}

    \n`; - } - table(token) { - let header = ''; - // header - let cell = ''; - for (let j = 0; j < token.header.length; j++) { - cell += this.tablecell(token.header[j]); - } - header += this.tablerow({ text: cell }); - let body = ''; - for (let j = 0; j < token.rows.length; j++) { - const row = token.rows[j]; - cell = ''; - for (let k = 0; k < row.length; k++) { - cell += this.tablecell(row[k]); - } - body += this.tablerow({ text: cell }); - } - if (body) - body = `${body}`; - return '\n' - + '\n' - + header - + '\n' - + body - + '
    \n'; - } - tablerow({ text }) { - return `\n${text}\n`; - } - tablecell(token) { - const content = this.parser.parseInline(token.tokens); - const type = token.header ? 'th' : 'td'; - const tag = token.align - ? `<${type} align="${token.align}">` - : `<${type}>`; - return tag + content + `\n`; - } - /** - * span level renderer - */ - strong({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - em({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - codespan({ text }) { - return `${text}`; - } - br(token) { - return '
    '; - } - del({ tokens }) { - return `${this.parser.parseInline(tokens)}`; - } - link({ href, title, tokens }) { - const text = this.parser.parseInline(tokens); - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = '
    '; - return out; - } - image({ href, title, text }) { - const cleanHref = cleanUrl(href); - if (cleanHref === null) { - return text; - } - href = cleanHref; - let out = `${text} { - const tokens = genericToken[childTokens].flat(Infinity); - values = values.concat(this.walkTokens(tokens, callback)); - }); - } - else if (genericToken.tokens) { - values = values.concat(this.walkTokens(genericToken.tokens, callback)); - } - } - } - } - return values; - } - use(...args) { - const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} }; - args.forEach((pack) => { - // copy options to new object - const opts = { ...pack }; - // set async to true if it was set to true before - opts.async = this.defaults.async || opts.async || false; - // ==-- Parse "addon" extensions --== // - if (pack.extensions) { - pack.extensions.forEach((ext) => { - if (!ext.name) { - throw new Error('extension name required'); - } - if ('renderer' in ext) { // Renderer extensions - const prevRenderer = extensions.renderers[ext.name]; - if (prevRenderer) { - // Replace extension with func to run new extension but fall back if false - extensions.renderers[ext.name] = function (...args) { - let ret = ext.renderer.apply(this, args); - if (ret === false) { - ret = prevRenderer.apply(this, args); - } - return ret; - }; - } - else { - extensions.renderers[ext.name] = ext.renderer; - } - } - if ('tokenizer' in ext) { // Tokenizer Extensions - if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) { - throw new Error("extension level must be 'block' or 'inline'"); - } - const extLevel = extensions[ext.level]; - if (extLevel) { - extLevel.unshift(ext.tokenizer); - } - else { - extensions[ext.level] = [ext.tokenizer]; - } - if (ext.start) { // Function to check for start of token - if (ext.level === 'block') { - if (extensions.startBlock) { - extensions.startBlock.push(ext.start); - } - else { - extensions.startBlock = [ext.start]; - } - } - else if (ext.level === 'inline') { - if (extensions.startInline) { - extensions.startInline.push(ext.start); - } - else { - extensions.startInline = [ext.start]; - } - } - } - } - if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens - extensions.childTokens[ext.name] = ext.childTokens; - } - }); - opts.extensions = extensions; - } - // ==-- Parse "overwrite" extensions --== // - if (pack.renderer) { - const renderer = this.defaults.renderer || new _Renderer(this.defaults); - for (const prop in pack.renderer) { - if (!(prop in renderer)) { - throw new Error(`renderer '${prop}' does not exist`); - } - if (['options', 'parser'].includes(prop)) { - // ignore options property - continue; - } - const rendererProp = prop; - const rendererFunc = pack.renderer[rendererProp]; - const prevRenderer = renderer[rendererProp]; - // Replace renderer with func to run extension, but fall back if false - renderer[rendererProp] = (...args) => { - let ret = rendererFunc.apply(renderer, args); - if (ret === false) { - ret = prevRenderer.apply(renderer, args); - } - return ret || ''; - }; - } - opts.renderer = renderer; - } - if (pack.tokenizer) { - const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults); - for (const prop in pack.tokenizer) { - if (!(prop in tokenizer)) { - throw new Error(`tokenizer '${prop}' does not exist`); - } - if (['options', 'rules', 'lexer'].includes(prop)) { - // ignore options, rules, and lexer properties - continue; - } - const tokenizerProp = prop; - const tokenizerFunc = pack.tokenizer[tokenizerProp]; - const prevTokenizer = tokenizer[tokenizerProp]; - // Replace tokenizer with func to run extension, but fall back if false - // @ts-expect-error cannot type tokenizer function dynamically - tokenizer[tokenizerProp] = (...args) => { - let ret = tokenizerFunc.apply(tokenizer, args); - if (ret === false) { - ret = prevTokenizer.apply(tokenizer, args); - } - return ret; - }; - } - opts.tokenizer = tokenizer; - } - // ==-- Parse Hooks extensions --== // - if (pack.hooks) { - const hooks = this.defaults.hooks || new _Hooks(); - for (const prop in pack.hooks) { - if (!(prop in hooks)) { - throw new Error(`hook '${prop}' does not exist`); - } - if (['options', 'block'].includes(prop)) { - // ignore options and block properties - continue; - } - const hooksProp = prop; - const hooksFunc = pack.hooks[hooksProp]; - const prevHook = hooks[hooksProp]; - if (_Hooks.passThroughHooks.has(prop)) { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (arg) => { - if (this.defaults.async) { - return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => { - return prevHook.call(hooks, ret); - }); - } - const ret = hooksFunc.call(hooks, arg); - return prevHook.call(hooks, ret); - }; - } - else { - // @ts-expect-error cannot type hook function dynamically - hooks[hooksProp] = (...args) => { - let ret = hooksFunc.apply(hooks, args); - if (ret === false) { - ret = prevHook.apply(hooks, args); - } - return ret; - }; - } - } - opts.hooks = hooks; - } - // ==-- Parse WalkTokens extensions --== // - if (pack.walkTokens) { - const walkTokens = this.defaults.walkTokens; - const packWalktokens = pack.walkTokens; - opts.walkTokens = function (token) { - let values = []; - values.push(packWalktokens.call(this, token)); - if (walkTokens) { - values = values.concat(walkTokens.call(this, token)); - } - return values; - }; - } - this.defaults = { ...this.defaults, ...opts }; - }); - return this; - } - setOptions(opt) { - this.defaults = { ...this.defaults, ...opt }; - return this; - } - lexer(src, options) { - return _Lexer.lex(src, options ?? this.defaults); - } - parser(tokens, options) { - return _Parser.parse(tokens, options ?? this.defaults); - } - parseMarkdown(blockType) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const parse = (src, options) => { - const origOpt = { ...options }; - const opt = { ...this.defaults, ...origOpt }; - const throwError = this.onError(!!opt.silent, !!opt.async); - // throw error if an extension set async to true but parse was called with async: false - if (this.defaults.async === true && origOpt.async === false) { - return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.')); - } - // throw error in case of non string input - if (typeof src === 'undefined' || src === null) { - return throwError(new Error('marked(): input parameter is undefined or null')); - } - if (typeof src !== 'string') { - return throwError(new Error('marked(): input parameter is of type ' - + Object.prototype.toString.call(src) + ', string expected')); - } - if (opt.hooks) { - opt.hooks.options = opt; - opt.hooks.block = blockType; - } - const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline); - const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline); - if (opt.async) { - return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src) - .then(src => lexer(src, opt)) - .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens) - .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens) - .then(tokens => parser(tokens, opt)) - .then(html => opt.hooks ? opt.hooks.postprocess(html) : html) - .catch(throwError); - } - try { - if (opt.hooks) { - src = opt.hooks.preprocess(src); - } - let tokens = lexer(src, opt); - if (opt.hooks) { - tokens = opt.hooks.processAllTokens(tokens); - } - if (opt.walkTokens) { - this.walkTokens(tokens, opt.walkTokens); - } - let html = parser(tokens, opt); - if (opt.hooks) { - html = opt.hooks.postprocess(html); - } - return html; - } - catch (e) { - return throwError(e); - } - }; - return parse; - } - onError(silent, async) { - return (e) => { - e.message += '\nPlease report this to https://github.com/markedjs/marked.'; - if (silent) { - const msg = '

    An error occurred:

    '
    -                        + escape$1(e.message + '', true)
    -                        + '
    '; - if (async) { - return Promise.resolve(msg); - } - return msg; - } - if (async) { - return Promise.reject(e); - } - throw e; - }; - } - } - - const markedInstance = new Marked(); - function marked(src, opt) { - return markedInstance.parse(src, opt); - } - /** - * Sets the default options. - * - * @param options Hash of options - */ - marked.options = - marked.setOptions = function (options) { - markedInstance.setOptions(options); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - /** - * Gets the original marked default options. - */ - marked.getDefaults = _getDefaults; - marked.defaults = exports.defaults; - /** - * Use Extension - */ - marked.use = function (...args) { - markedInstance.use(...args); - marked.defaults = markedInstance.defaults; - changeDefaults(marked.defaults); - return marked; - }; - /** - * Run callback for every token - */ - marked.walkTokens = function (tokens, callback) { - return markedInstance.walkTokens(tokens, callback); - }; - /** - * Compiles markdown to HTML without enclosing `p` tag. - * - * @param src String of markdown source to be compiled - * @param options Hash of options - * @return String of compiled HTML - */ - marked.parseInline = markedInstance.parseInline; - /** - * Expose - */ - marked.Parser = _Parser; - marked.parser = _Parser.parse; - marked.Renderer = _Renderer; - marked.TextRenderer = _TextRenderer; - marked.Lexer = _Lexer; - marked.lexer = _Lexer.lex; - marked.Tokenizer = _Tokenizer; - marked.Hooks = _Hooks; - marked.parse = marked; - const options = marked.options; - const setOptions = marked.setOptions; - const use = marked.use; - const walkTokens = marked.walkTokens; - const parseInline = marked.parseInline; - const parse = marked; - const parser = _Parser.parse; - const lexer = _Lexer.lex; - - exports.Hooks = _Hooks; - exports.Lexer = _Lexer; - exports.Marked = Marked; - exports.Parser = _Parser; - exports.Renderer = _Renderer; - exports.TextRenderer = _TextRenderer; - exports.Tokenizer = _Tokenizer; - exports.getDefaults = _getDefaults; - exports.lexer = lexer; - exports.marked = marked; - exports.options = options; - exports.parse = parse; - exports.parseInline = parseInline; - exports.parser = parser; - exports.setOptions = setOptions; - exports.use = use; - exports.walkTokens = walkTokens; - -})); -//# sourceMappingURL=marked.umd.js.map diff --git a/node_modules/marked/lib/marked.umd.js.map b/node_modules/marked/lib/marked.umd.js.map deleted file mode 100644 index ebd5196..0000000 --- a/node_modules/marked/lib/marked.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"marked.umd.js","sources":["../src/defaults.ts","../src/helpers.ts","../src/Tokenizer.ts","../src/rules.ts","../src/Lexer.ts","../src/Renderer.ts","../src/TextRenderer.ts","../src/Parser.ts","../src/Hooks.ts","../src/Instance.ts","../src/marked.ts"],"sourcesContent":["/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n","/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n","import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket, } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text),\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^(?: {1,4}| {0,3}\\t)/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (/^ {0,3}>/.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1')\n .replace(/^ {0,3}>[ \\t]?/gm, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens[tokens.length - 1];\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && /^[ \\t]*$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n const htmlBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}<[a-z].*>`, 'i');\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(/\\t/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(/\\t/g, ' ').search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n[ \\t]*\\n[ \\t]*$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1]),\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text,\n };\n }\n }\n}\n","import { edit, noopTest, } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n","import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape, } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(/^\\S*/)?.[0];\n const code = text.replace(/\\n$/, '') + '\\n';\n if (!langString) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `
    \\n${body}
    \\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `${this.parser.parseInline(tokens)}\\n`;\n }\n hr(token) {\n return '
    \\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `
  • ${itemBody}
  • \\n`;\n }\n checkbox({ checked }) {\n return '';\n }\n paragraph({ tokens }) {\n return `

    ${this.parser.parseInline(tokens)}

    \\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow({ text }) {\n return `\\n${text}\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
    ';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n","import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n"],"names":["_defaults","escape"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/marked/man/marked.1 b/node_modules/marked/man/marked.1 deleted file mode 100644 index 1a8a556..0000000 --- a/node_modules/marked/man/marked.1 +++ /dev/null @@ -1,111 +0,0 @@ -.TH "MARKED" "1" "October 2024" "14.1.2" -.SH "NAME" -\fBmarked\fR \- a javascript markdown parser -.SH SYNOPSIS -.P -\fBmarked\fP [\fB\-o\fP ] [\fB\-i\fP ] [\fB\-s\fP ] [\fB\-c\fP ] [\fB\-\-help\fP] [\fB\-\-version\fP] [\fB\-\-tokens\fP] [\fB\-\-no\-clobber\fP] [\fB\-\-pedantic\fP] [\fB\-\-gfm\fP] [\fB\-\-breaks\fP] [\fB\-\-no\-etc\.\.\.\fP] [\fB\-\-silent\fP] [filename] -.SH DESCRIPTION -.P -marked is a full\-featured javascript markdown parser, built for speed\. -.br -It also includes multiple GFM features\. -.SH EXAMPLES -.RS 2 -.nf -cat in\.md | marked > out\.html -.fi -.RE -.RS 2 -.nf -echo "hello *world*" | marked -.fi -.RE -.RS 2 -.nf -marked \-o out\.html \-i in\.md \-\-gfm -.fi -.RE -.RS 2 -.nf -marked \-\-output="hello world\.html" \-i in\.md \-\-no\-breaks -.fi -.RE -.SH OPTIONS - -.RS 1 -.IP \(bu 2 -\-o, \-\-output [output file] -.br -Specify file output\. If none is specified, write to stdout\. -.IP \(bu 2 -\-i, \-\-input [input file] -.br -Specify file input, otherwise use last argument as input file\. -.br -If no input file is specified, read from stdin\. -.IP \(bu 2 -\-s, \-\-string [markdown string] -.br -Specify string input instead of a file\. -.IP \(bu 2 -\-c, \-\-config [config file] -.br -Specify config file to use instead of the default \fB~/\.marked\.json\fP or \fB~/\.marked\.js\fP or \fB~/\.marked/index\.js\fP\|\. -.IP \(bu 2 -\-t, \-\-tokens -.br -Output a token list instead of html\. -.IP \(bu 2 -\-n, \-\-no\-clobber -.br -Do not overwrite \fBoutput\fP if it exists\. -.IP \(bu 2 -\-\-pedantic -.br -Conform to obscure parts of markdown\.pl as much as possible\. -.br -Don't fix original markdown bugs\. -.IP \(bu 2 -\-\-gfm -.br -Enable github flavored markdown\. -.IP \(bu 2 -\-\-breaks -.br -Enable GFM line breaks\. Only works with the gfm option\. -.IP \(bu 2 -\-\-no\-breaks, \-no\-etc\.\.\. -.br -The inverse of any of the marked options above\. -.IP \(bu 2 -\-\-silent -.br -Silence error output\. -.IP \(bu 2 -\-h, \-\-help -.br -Display help information\. - -.RE -.SH CONFIGURATION -.P -For configuring and running programmatically\. -.P -Example -.RS 2 -.nf -import { Marked } from 'marked'; -const marked = new Marked({ gfm: true }); -marked\.parse('*foo*'); -.fi -.RE -.SH BUGS -.P -Please report any bugs to https://github.com/markedjs/marked -.SH LICENSE -.P -Copyright (c) 2011\-2014, Christopher Jeffrey (MIT License)\. -.SH SEE ALSO -.P -markdown(1), nodejs(1) - diff --git a/node_modules/marked/man/marked.1.md b/node_modules/marked/man/marked.1.md deleted file mode 100644 index d5b94a4..0000000 --- a/node_modules/marked/man/marked.1.md +++ /dev/null @@ -1,92 +0,0 @@ -# marked(1) -- a javascript markdown parser - -## SYNOPSIS - -`marked` [`-o` ] [`-i` ] [`-s` ] [`-c` ] [`--help`] [`--version`] [`--tokens`] [`--no-clobber`] [`--pedantic`] [`--gfm`] [`--breaks`] [`--no-etc...`] [`--silent`] [filename] - -## DESCRIPTION - -marked is a full-featured javascript markdown parser, built for speed. -It also includes multiple GFM features. - -## EXAMPLES - -```sh -cat in.md | marked > out.html -``` - -```sh -echo "hello *world*" | marked -``` - -```sh -marked -o out.html -i in.md --gfm -``` - -```sh -marked --output="hello world.html" -i in.md --no-breaks -``` - -## OPTIONS - -* -o, --output [output file] -Specify file output. If none is specified, write to stdout. - -* -i, --input [input file] -Specify file input, otherwise use last argument as input file. -If no input file is specified, read from stdin. - -* -s, --string [markdown string] -Specify string input instead of a file. - -* -c, --config [config file] -Specify config file to use instead of the default `~/.marked.json` or `~/.marked.js` or `~/.marked/index.js`. - -* -t, --tokens -Output a token list instead of html. - -* -n, --no-clobber -Do not overwrite `output` if it exists. - -* --pedantic -Conform to obscure parts of markdown.pl as much as possible. -Don't fix original markdown bugs. - -* --gfm -Enable github flavored markdown. - -* --breaks -Enable GFM line breaks. Only works with the gfm option. - -* --no-breaks, -no-etc... -The inverse of any of the marked options above. - -* --silent -Silence error output. - -* -h, --help -Display help information. - -## CONFIGURATION - -For configuring and running programmatically. - -Example - -```js -import { Marked } from 'marked'; -const marked = new Marked({ gfm: true }); -marked.parse('*foo*'); -``` - -## BUGS - -Please report any bugs to . - -## LICENSE - -Copyright (c) 2011-2014, Christopher Jeffrey (MIT License). - -## SEE ALSO - -markdown(1), nodejs(1) diff --git a/node_modules/marked/marked.min.js b/node_modules/marked/marked.min.js deleted file mode 100644 index 9869504..0000000 --- a/node_modules/marked/marked.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * marked v14.1.3 - a markdown parser - * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed) - * https://github.com/markedjs/marked - */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).marked={})}(this,(function(e){"use strict";function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function n(t){e.defaults=t}e.defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};const s=/[&<>"']/,r=new RegExp(s.source,"g"),i=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,l=new RegExp(i.source,"g"),o={"&":"&","<":"<",">":">",'"':""","'":"'"},a=e=>o[e];function c(e,t){if(t){if(s.test(e))return e.replace(r,a)}else if(i.test(e))return e.replace(l,a);return e}const h=/(^|[^\[])\^/g;function p(e,t){let n="string"==typeof e?e:e.source;t=t||"";const s={replace:(e,t)=>{let r="string"==typeof t?t:t.source;return r=r.replace(h,"$1"),n=n.replace(e,r),s},getRegex:()=>new RegExp(n,t)};return s}function u(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const k={exec:()=>null};function g(e,t){const n=e.replace(/\|/g,((e,t,n)=>{let s=!1,r=t;for(;--r>=0&&"\\"===n[r];)s=!s;return s?"|":" |"})).split(/ \|/);let s=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const e=t[0].replace(/^(?: {1,4}| {0,3}\t)/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:f(e,"\n")}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const e=t[0],n=function(e,t){const n=e.match(/^(\s+)(?:```)/);if(null===n)return t;const s=n[1];return t.split("\n").map((e=>{const t=e.match(/^\s+/);if(null===t)return e;const[n]=t;return n.length>=s.length?e.slice(s.length):e})).join("\n")}(e,t[3]||"");return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(/#$/.test(e)){const t=f(e,"#");this.options.pedantic?e=t.trim():t&&!/ $/.test(t)||(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:f(t[0],"\n")}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){let e=f(t[0],"\n").split("\n"),n="",s="";const r=[];for(;e.length>0;){let t=!1;const i=[];let l;for(l=0;l/.test(e[l]))i.push(e[l]),t=!0;else{if(t)break;i.push(e[l])}e=e.slice(l);const o=i.join("\n"),a=o.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,"\n $1").replace(/^ {0,3}>[ \t]?/gm,"");n=n?`${n}\n${o}`:o,s=s?`${s}\n${a}`:a;const c=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(a,r,!0),this.lexer.state.top=c,0===e.length)break;const h=r[r.length-1];if("code"===h?.type)break;if("blockquote"===h?.type){const t=h,i=t.raw+"\n"+e.join("\n"),l=this.blockquote(i);r[r.length-1]=l,n=n.substring(0,n.length-t.raw.length)+l.raw,s=s.substring(0,s.length-t.text.length)+l.text;break}if("list"!==h?.type);else{const t=h,i=t.raw+"\n"+e.join("\n"),l=this.list(i);r[r.length-1]=l,n=n.substring(0,n.length-h.raw.length)+l.raw,s=s.substring(0,s.length-t.raw.length)+l.raw,e=i.substring(r[r.length-1].raw.length).split("\n")}}return{type:"blockquote",raw:n,tokens:r,text:s}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const s=n.length>1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");const i=new RegExp(`^( {0,3}${n})((?:[\t ][^\\n]*)?(?:\\n|$))`);let l=!1;for(;e;){let n=!1,s="",o="";if(!(t=i.exec(e)))break;if(this.rules.block.hr.test(e))break;s=t[0],e=e.substring(s.length);let a=t[2].split("\n",1)[0].replace(/^\t+/,(e=>" ".repeat(3*e.length))),c=e.split("\n",1)[0],h=!a.trim(),p=0;if(this.options.pedantic?(p=2,o=a.trimStart()):h?p=t[1].length+1:(p=t[2].search(/[^ ]/),p=p>4?1:p,o=a.slice(p),p+=t[1].length),h&&/^[ \t]*$/.test(c)&&(s+=c+"\n",e=e.substring(c.length+1),n=!0),!n){const t=new RegExp(`^ {0,${Math.min(3,p-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),n=new RegExp(`^ {0,${Math.min(3,p-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),r=new RegExp(`^ {0,${Math.min(3,p-1)}}(?:\`\`\`|~~~)`),i=new RegExp(`^ {0,${Math.min(3,p-1)}}#`),l=new RegExp(`^ {0,${Math.min(3,p-1)}}<[a-z].*>`,"i");for(;e;){const u=e.split("\n",1)[0];let k;if(c=u,this.options.pedantic?(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," "),k=c):k=c.replace(/\t/g," "),r.test(c))break;if(i.test(c))break;if(l.test(c))break;if(t.test(c))break;if(n.test(c))break;if(k.search(/[^ ]/)>=p||!c.trim())o+="\n"+k.slice(p);else{if(h)break;if(a.replace(/\t/g," ").search(/[^ ]/)>=4)break;if(r.test(a))break;if(i.test(a))break;if(n.test(a))break;o+="\n"+c}h||c.trim()||(h=!0),s+=u+"\n",e=e.substring(u.length+1),a=k.slice(p)}}r.loose||(l?r.loose=!0:/\n[ \t]*\n[ \t]*$/.test(s)&&(l=!0));let u,k=null;this.options.gfm&&(k=/^\[[ xX]\] /.exec(o),k&&(u="[ ] "!==k[0],o=o.replace(/^\[[ xX]\] +/,""))),r.items.push({type:"list_item",raw:s,task:!!k,checked:u,loose:!1,text:o,tokens:[]}),r.raw+=s}r.items[r.items.length-1].raw=r.items[r.items.length-1].raw.trimEnd(),r.items[r.items.length-1].text=r.items[r.items.length-1].text.trimEnd(),r.raw=r.raw.trimEnd();for(let e=0;e"space"===e.type)),n=t.length>0&&t.some((e=>/\n.*\n/.test(e.raw)));r.loose=n}if(r.loose)for(let e=0;e$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:s}}}table(e){const t=this.rules.block.table.exec(e);if(!t)return;if(!/[:|]/.test(t[2]))return;const n=g(t[1]),s=t[2].replace(/^\||\| *$/g,"").split("|"),r=t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[],i={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===s.length){for(const e of s)/^ *-+: *$/.test(e)?i.align.push("right"):/^ *:-+: *$/.test(e)?i.align.push("center"):/^ *:-+ *$/.test(e)?i.align.push("left"):i.align.push(null);for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:i.align[t]}))));return i}}lheading(e){const t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){const t=this.rules.block.paragraph.exec(e);if(t){const e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){const t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){const t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:c(t[1])}}tag(e){const t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^
    /i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const e=t[2].trim();if(!this.options.pedantic&&/^$/.test(e))return;const t=f(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{const e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let s=0;s-1){const n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],s="";if(this.options.pedantic){const e=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);e&&(n=e[1],s=e[3])}else s=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^$/.test(e)?n.slice(1):n.slice(1,-1)),d(t,{href:n?n.replace(this.rules.inline.anyPunctuation,"$1"):n,title:s?s.replace(this.rules.inline.anyPunctuation,"$1"):s},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){const e=t[(n[2]||n[1]).replace(/\s+/g," ").toLowerCase()];if(!e){const e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return d(n,e,n[0],this.lexer)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s)return;if(s[3]&&n.match(/[\p{L}\p{N}]/u))return;if(!(s[1]||s[2]||"")||!n||this.rules.inline.punctuation.exec(n)){const n=[...s[0]].length-1;let r,i,l=n,o=0;const a="*"===s[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(a.lastIndex=0,t=t.slice(-1*e.length+n);null!=(s=a.exec(t));){if(r=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!r)continue;if(i=[...r].length,s[3]||s[4]){l+=i;continue}if((s[5]||s[6])&&n%3&&!((n+i)%3)){o+=i;continue}if(l-=i,l>0)continue;i=Math.min(i,i+l+o);const t=[...s[0]][0].length,a=e.slice(0,n+s.index+t+i);if(Math.min(n,i)%2){const e=a.slice(1,-1);return{type:"em",raw:a,text:e,tokens:this.lexer.inlineTokens(e)}}const c=a.slice(2,-2);return{type:"strong",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(/\n/g," ");const n=/[^ ]/.test(e),s=/^ /.test(e)&&/ $/.test(e);return n&&s&&(e=e.substring(1,e.length-1)),e=c(e,!0),{type:"codespan",raw:t[0],text:e}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){const t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=c(t[1]),n="mailto:"+e):(e=c(t[1]),n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=c(t[0]),n="mailto:"+e;else{let s;do{s=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(s!==t[0]);e=c(t[0]),n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){const t=this.rules.inline.text.exec(e);if(t){let e;return e=this.lexer.state.inRawBlock?t[0]:c(t[0]),{type:"text",raw:t[0],text:e}}}}const b=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,w=/(?:[*+-]|\d{1,9}[.)])/,m=p(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,w).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),y=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,$=/(?!\s*\])(?:\\.|[^\[\]\\])+/,z=p(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",$).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),T=p(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,w).getRegex(),R="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",_=/|$))/,A=p("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",_).replace("tag",R).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),S=p(y).replace("hr",b).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),I={blockquote:p(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",S).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:z,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:b,html:A,lheading:m,list:T,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:S,table:k,text:/^[^\n]+/},E=p("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",b).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),q={...I,table:E,paragraph:p(y).replace("hr",b).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",E).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex()},Z={...I,html:p("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",_).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:k,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:p(y).replace("hr",b).replace("heading"," *#{1,6} *[^\n]").replace("lheading",m).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},P=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,L=/^( {2,}|\\)\n(?!\s*$)/,v="\\p{P}\\p{S}",Q=p(/^((?![*_])[\spunctuation])/,"u").replace(/punctuation/g,v).getRegex(),B=p(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,v).getRegex(),M=p("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,v).getRegex(),O=p("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,v).getRegex(),j=p(/\\([punct])/,"gu").replace(/punct/g,v).getRegex(),D=p(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),C=p(_).replace("(?:--\x3e|$)","--\x3e").getRegex(),H=p("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",C).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),U=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,X=p(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",U).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),F=p(/^!?\[(label)\]\[(ref)\]/).replace("label",U).replace("ref",$).getRegex(),N=p(/^!?\[(ref)\](?:\[\])?/).replace("ref",$).getRegex(),G={_backpedal:k,anyPunctuation:j,autolink:D,blockSkip:/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,br:L,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:k,emStrongLDelim:B,emStrongRDelimAst:M,emStrongRDelimUnd:O,escape:P,link:X,nolink:N,punctuation:Q,reflink:F,reflinkSearch:p("reflink|nolink(?!\\()","g").replace("reflink",F).replace("nolink",N).getRegex(),tag:H,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\!!(s=n.call({lexer:this},e,t))&&(e=e.substring(s.raw.length),t.push(s),!0)))))if(s=this.tokenizer.space(e))e=e.substring(s.raw.length),1===s.raw.length&&t.length>0?t[t.length-1].raw+="\n":t.push(s);else if(s=this.tokenizer.code(e))e=e.substring(s.raw.length),r=t[t.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?t.push(s):(r.raw+="\n"+s.raw,r.text+="\n"+s.text,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(s=this.tokenizer.fences(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.heading(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.hr(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.blockquote(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.list(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.html(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.def(e))e=e.substring(s.raw.length),r=t[t.length-1],!r||"paragraph"!==r.type&&"text"!==r.type?this.tokens.links[s.tag]||(this.tokens.links[s.tag]={href:s.href,title:s.title}):(r.raw+="\n"+s.raw,r.text+="\n"+s.raw,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(s=this.tokenizer.table(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.lheading(e))e=e.substring(s.raw.length),t.push(s);else{if(i=e,this.options.extensions&&this.options.extensions.startBlock){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startBlock.forEach((e=>{s=e.call({lexer:this},n),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(this.state.top&&(s=this.tokenizer.paragraph(i)))r=t[t.length-1],n&&"paragraph"===r?.type?(r.raw+="\n"+s.raw,r.text+="\n"+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(s),n=i.length!==e.length,e=e.substring(s.raw.length);else if(s=this.tokenizer.text(e))e=e.substring(s.raw.length),r=t[t.length-1],r&&"text"===r.type?(r.raw+="\n"+s.raw,r.text+="\n"+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(s);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,s,r,i,l,o,a=e;if(this.tokens.links){const e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(i=this.tokenizer.rules.inline.reflinkSearch.exec(a));)e.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(i=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(i=this.tokenizer.rules.inline.anyPunctuation.exec(a));)a=a.slice(0,i.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(l||(o=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((s=>!!(n=s.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)))))if(n=this.tokenizer.escape(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(e))e=e.substring(n.raw.length),s=t[t.length-1],s&&"text"===n.type&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.link(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(n.raw.length),s=t[t.length-1],s&&"text"===n.type&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(e,a,o))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(e))e=e.substring(n.raw.length),t.push(n);else if(this.state.inLink||!(n=this.tokenizer.url(e))){if(r=e,this.options.extensions&&this.options.extensions.startInline){let t=1/0;const n=e.slice(1);let s;this.options.extensions.startInline.forEach((e=>{s=e.call({lexer:this},n),"number"==typeof s&&s>=0&&(t=Math.min(t,s))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}if(n=this.tokenizer.inlineText(r))e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),l=!0,s=t[t.length-1],s&&"text"===s.type?(s.raw+=n.raw,s.text+=n.text):t.push(n);else if(e){const t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}else e=e.substring(n.raw.length),t.push(n);return t}}class te{options;parser;constructor(t){this.options=t||e.defaults}space(e){return""}code({text:e,lang:t,escaped:n}){const s=(t||"").match(/^\S*/)?.[0],r=e.replace(/\n$/,"")+"\n";return s?'
    '+(n?r:c(r,!0))+"
    \n":"
    "+(n?r:c(r,!0))+"
    \n"}blockquote({tokens:e}){return`
    \n${this.parser.parse(e)}
    \n`}html({text:e}){return e}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)}\n`}hr(e){return"
    \n"}list(e){const t=e.ordered,n=e.start;let s="";for(let t=0;t\n"+s+"\n"}listitem(e){let t="";if(e.task){const n=this.checkbox({checked:!!e.checked});e.loose?e.tokens.length>0&&"paragraph"===e.tokens[0].type?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+e.tokens[0].tokens[0].text)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" "}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • \n`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    \n`}table(e){let t="",n="";for(let t=0;t${s}`),"\n\n"+t+"\n"+s+"
    \n"}tablerow({text:e}){return`\n${e}\n`}tablecell(e){const t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${e}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){const s=this.parser.parseInline(n),r=u(e);if(null===r)return s;let i='
    ",i}image({href:e,title:t,text:n}){const s=u(e);if(null===s)return n;let r=`${n}{const r=e[s].flat(1/0);n=n.concat(this.walkTokens(r,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{const n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){const n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let s=e.renderer.apply(this,t);return!1===s&&(s=n.apply(this,t)),s}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");const n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){const t=this.defaults.renderer||new te(this.defaults);for(const n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;const s=n,r=e.renderer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){const t=this.defaults.tokenizer||new x(this.defaults);for(const n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;const s=n,r=e.tokenizer[s],i=t[s];t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){const t=this.defaults.hooks||new re;for(const n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;const s=n,r=e.hooks[s],i=t[s];re.passThroughHooks.has(n)?t[s]=e=>{if(this.defaults.async)return Promise.resolve(r.call(t,e)).then((e=>i.call(t,e)));const n=r.call(t,e);return i.call(t,n)}:t[s]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){const t=this.defaults.walkTokens,s=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(s.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ee.lex(e,t??this.defaults)}parser(e,t){return se.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{const s={...n},r={...this.defaults,...s},i=this.onError(!!r.silent,!!r.async);if(!0===this.defaults.async&&!1===s.async)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(null==t)return i(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));r.hooks&&(r.hooks.options=r,r.hooks.block=e);const l=r.hooks?r.hooks.provideLexer():e?ee.lex:ee.lexInline,o=r.hooks?r.hooks.provideParser():e?se.parse:se.parseInline;if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(t):t).then((e=>l(e,r))).then((e=>r.hooks?r.hooks.processAllTokens(e):e)).then((e=>r.walkTokens?Promise.all(this.walkTokens(e,r.walkTokens)).then((()=>e)):e)).then((e=>o(e,r))).then((e=>r.hooks?r.hooks.postprocess(e):e)).catch(i);try{r.hooks&&(t=r.hooks.preprocess(t));let e=l(t,r);r.hooks&&(e=r.hooks.processAllTokens(e)),r.walkTokens&&this.walkTokens(e,r.walkTokens);let n=o(e,r);return r.hooks&&(n=r.hooks.postprocess(n)),n}catch(e){return i(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){const e="

    An error occurred:

    "+c(n.message+"",!0)+"
    ";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}}const le=new ie;function oe(e,t){return le.parse(e,t)}oe.options=oe.setOptions=function(e){return le.setOptions(e),oe.defaults=le.defaults,n(oe.defaults),oe},oe.getDefaults=t,oe.defaults=e.defaults,oe.use=function(...e){return le.use(...e),oe.defaults=le.defaults,n(oe.defaults),oe},oe.walkTokens=function(e,t){return le.walkTokens(e,t)},oe.parseInline=le.parseInline,oe.Parser=se,oe.parser=se.parse,oe.Renderer=te,oe.TextRenderer=ne,oe.Lexer=ee,oe.lexer=ee.lex,oe.Tokenizer=x,oe.Hooks=re,oe.parse=oe;const ae=oe.options,ce=oe.setOptions,he=oe.use,pe=oe.walkTokens,ue=oe.parseInline,ke=oe,ge=se.parse,fe=ee.lex;e.Hooks=re,e.Lexer=ee,e.Marked=ie,e.Parser=se,e.Renderer=te,e.TextRenderer=ne,e.Tokenizer=x,e.getDefaults=t,e.lexer=fe,e.marked=oe,e.options=ae,e.parse=ke,e.parseInline=ue,e.parser=ge,e.setOptions=ce,e.use=he,e.walkTokens=pe})); diff --git a/node_modules/marked/package.json b/node_modules/marked/package.json deleted file mode 100644 index 4be4dcc..0000000 --- a/node_modules/marked/package.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "name": "marked", - "description": "A markdown parser built for speed", - "author": "Christopher Jeffrey", - "version": "14.1.3", - "type": "module", - "main": "./lib/marked.cjs", - "module": "./lib/marked.esm.js", - "browser": "./lib/marked.umd.js", - "types": "./lib/marked.d.ts", - "bin": { - "marked": "bin/marked.js" - }, - "man": "./man/marked.1", - "files": [ - "bin/", - "lib/", - "man/", - "marked.min.js" - ], - "exports": { - ".": { - "import": { - "types": "./lib/marked.d.ts", - "default": "./lib/marked.esm.js" - }, - "default": { - "types": "./lib/marked.d.cts", - "default": "./lib/marked.cjs" - } - }, - "./bin/marked": "./bin/marked.js", - "./marked.min.js": "./marked.min.js", - "./package.json": "./package.json" - }, - "publishConfig": { - "provenance": true - }, - "repository": "git://github.com/markedjs/marked.git", - "homepage": "https://marked.js.org", - "bugs": { - "url": "http://github.com/markedjs/marked/issues" - }, - "license": "MIT", - "keywords": [ - "markdown", - "markup", - "html" - ], - "tags": [ - "markdown", - "markup", - "html" - ], - "devDependencies": { - "@arethetypeswrong/cli": "^0.16.4", - "@markedjs/eslint-config": "^1.0.5", - "@markedjs/testutils": "14.1.1-0", - "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^12.1.0", - "@semantic-release/commit-analyzer": "^13.0.0", - "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^11.0.0", - "@semantic-release/npm": "^12.0.1", - "@semantic-release/release-notes-generator": "^14.0.1", - "cheerio": "1.0.0", - "commonmark": "0.31.2", - "cross-env": "^7.0.3", - "dts-bundle-generator": "^9.5.1", - "eslint": "^9.12.0", - "highlight.js": "^11.10.0", - "markdown-it": "14.1.0", - "marked-highlight": "^2.1.4", - "marked-man": "^2.1.0", - "node-fetch": "^3.3.2", - "recheck": "^4.4.5", - "rollup": "^4.24.0", - "semantic-release": "^24.1.2", - "titleize": "^4.0.0", - "ts-expect": "^1.3.0", - "tslib": "^2.7.0", - "typescript": "5.6.3" - }, - "scripts": { - "bench": "npm run build && node test/bench.js", - "build": "npm run rollup && npm run build:types && npm run build:man", - "build:docs": "npm run build && node docs/build.js", - "build:man": "marked-man man/marked.1.md > man/marked.1", - "build:reset": "git checkout upstream/master lib/marked.cjs lib/marked.umd.js lib/marked.esm.js marked.min.js", - "build:types": "tsc && dts-bundle-generator --export-referenced-types --project tsconfig.json -o lib/marked.d.ts src/marked.ts && dts-bundle-generator --export-referenced-types --project tsconfig.json -o lib/marked.d.cts src/marked.ts", - "lint": "eslint --fix", - "rollup": "rollup -c rollup.config.js", - "rules": "node test/rules.js", - "test": "npm run build && npm run test:specs && npm run test:unit", - "test:all": "npm test && npm run test:umd && npm run test:types && npm run test:lint", - "test:lint": "eslint", - "test:only": "npm run build && npm run test:specs:only && npm run test:unit:only", - "test:redos": "node test/recheck.js > vuln.js", - "test:specs:only": "node --test --test-only --test-reporter=spec test/run-spec-tests.js", - "test:specs": "node --test --test-reporter=spec test/run-spec-tests.js", - "test:types": "tsc --project tsconfig-type-test.json && attw -P --exclude-entrypoints ./bin/marked ./marked.min.js", - "test:umd": "node test/umd-test.js", - "test:unit:only": "node --test --test-only --test-reporter=spec test/unit/*.test.js", - "test:unit": "node --test --test-reporter=spec test/unit/*.test.js", - "test:update": "node test/update-specs.js" - }, - "engines": { - "node": ">= 18" - } -} From 8447241c47447d5a7e0b7bffefcc751eface7622 Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Thu, 24 Oct 2024 19:32:34 +0530 Subject: [PATCH 05/15] cards render dynamically and desc div modification --- .gitignore | 1 + script.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/script.js b/script.js index 7b28eda..fd6d81f 100644 --- a/script.js +++ b/script.js @@ -98,7 +98,6 @@ function processCSVData(csvContent) { const nodeColor = (d) => (d.key == "source" ? "rgba(255,0,0,0.5)" : "rgba(0,0,255,0.5)"); - function renderControls(headers) { headers = headers.filter((d) => d.trim()); const controlsTemplate = html` @@ -217,6 +216,7 @@ function brush(nodes) { render(listGroupTemplate, document.getElementById("selection")); } + } From 064c94a7153065287c813ecab6742ea8403351fc Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Fri, 25 Oct 2024 07:26:47 +0530 Subject: [PATCH 06/15] changes to card rendering and desc box modification --- script.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/script.js b/script.js index fd6d81f..35ea733 100644 --- a/script.js +++ b/script.js @@ -69,8 +69,8 @@ document.addEventListener("DOMContentLoaded", () => { function handleFileUpload(event) { const file = event.target.files[0]; - if(!DescriptionBox.classList.contains('d-none')){ - DescriptionBox.classList.add('d-none'); + if(!$DescriptionBox.classList.contains('d-none')){ + $DescriptionBox.classList.add('d-none'); } if (file) { From 26f1fc0c5215de0eb8d5302205a373e52b609e7a Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Sun, 27 Oct 2024 01:07:26 +0530 Subject: [PATCH 07/15] story added and card renders dynamically --- index.html | 183 ++++++++++++++++++++++----------------- package-lock.json | 20 +---- package.json | 6 +- script.js | 214 +++++++++++++++++++++------------------------- 4 files changed, 204 insertions(+), 219 deletions(-) diff --git a/index.html b/index.html index 970e1bf..decfd27 100644 --- a/index.html +++ b/index.html @@ -1,97 +1,122 @@ + + + + + + Network + + - - - - - - Network - - - - -
    + -
    -

    Network Explorer

    -

    A visual interface for knowledge graphs.

    +
    +

    Network Explorer

    +

    A visual interface for knowledge graphs.

    -
    -
    - -
    +
    +
    + +
    - -
    -
    + +
    +
    +
    -
    - -
    -
    -
    + +
    +
    +

    -
    +
    - -
    -
    -
    - + +
    +
    +
    + +
    +
    -
    + -
    - - - - - - - - + + + + diff --git a/package-lock.json b/package-lock.json index 5bfa3a0..fc679a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,23 +2,5 @@ "name": "network", "lockfileVersion": 3, "requires": true, - "packages": { - "": { - "dependencies": { - "marked": "^14.1.3" - } - }, - "node_modules/marked": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz", - "integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - } - } + "packages": {} } diff --git a/package.json b/package.json index 52961b9..0967ef4 100644 --- a/package.json +++ b/package.json @@ -1,5 +1 @@ -{ - "dependencies": { - "marked": "^14.1.3" - } -} +{} diff --git a/script.js b/script.js index 35ea733..805db12 100644 --- a/script.js +++ b/script.js @@ -1,78 +1,70 @@ -import { network } from "https://cdn.jsdelivr.net/npm/@gramex/network@2"; -import { kpartite } from "https://cdn.jsdelivr.net/npm/@gramex/network@2/dist/kpartite.js"; +import { + network +} from "https://cdn.jsdelivr.net/npm/@gramex/network@2"; +import { + kpartite +} from "https://cdn.jsdelivr.net/npm/@gramex/network@2/dist/kpartite.js"; import * as d3 from "https://cdn.jsdelivr.net/npm/d3@7.8.5/+esm"; -import { render, html } from "https://cdn.jsdelivr.net/npm/lit-html@3/+esm"; +import { + render, + html +} from "https://cdn.jsdelivr.net/npm/lit-html@3/+esm"; const fileInput = document.getElementById("fileInput"); const controls = document.getElementById("controls"); -const $DescriptionBox=document.getElementById("description-box"); -const $demos = document.getElementById("demos"); +const descriptionBox = document.getElementById("description-box"); +const demosDiv = document.getElementById("demos"); -let demosArray; -let clickedCardId=''; +let demosArray = []; +demosDiv.addEventListener('click', handleCardClick); function handleCardClick(event) { - const target = event.currentTarget; // Get the clicked card element - const index = target.getAttribute('data-index'); // Get the index from the data attribute - clickedCardId=index; - // Retrieve the card details from demosArray using index - const demo = demosArray[index]; // Access the corresponding demo object - const title = demo.title; // Get the title - const description = demo.description; // Get the description - - // Log the title and description or perform any desired actions - console.log(`Card clicked: ${title}`); - console.log(`Description: ${description}`); - - $DescriptionBox.classList.remove('d-none'); - document.querySelector('#title').textContent=title; - document.querySelector('#description').textContent=description; - } + const target = event.target.closest('.demo'); + if (!target) return; + const index = target.getAttribute('data-index'); + descriptionBox.classList.remove('d-none'); + document.getElementById('title').textContent = demosArray[index].title; + document.getElementById('description').textContent = demosArray[index].description; +} + +const fetchAndRenderDemos = async () => { + try { + const { + demos + } = await (await fetch("config.json")).json(); + demosArray = demos; + render( + demos.map((demo, index) => html ` + + `), demosDiv + ); -fetch("config.json") - .then((res) => res.json()) - .then(data => { - demosArray = data.demos; - const demoHTML = demosArray.map((demo,index) => { - return html` - - `; - }); - - render(demoHTML, $demos); - - const demoCards = $demos.querySelectorAll('.demo'); // Select all card links - demoCards.forEach(card => { - card.addEventListener('click', handleCardClick); // Attach the event listener - }); - }) - .catch(error => { - console.error('Error fetching config.json:', error); // Handle any errors - }); + demosDiv.querySelectorAll('.demo').forEach(card => + card.addEventListener('click', handleCardClick)); + } catch (error) { + console.error('Error fetching config.json:', error); + } +}; +fetchAndRenderDemos(); let data, nodeLinks; document.addEventListener("DOMContentLoaded", () => { fileInput.addEventListener("change", handleFileUpload); - - // Add event listener for demo clicks document.getElementById("demos").addEventListener("click", handleDemoClick); }); function handleFileUpload(event) { const file = event.target.files[0]; - if(!$DescriptionBox.classList.contains('d-none')){ - $DescriptionBox.classList.add('d-none'); - } - + descriptionBox.classList.toggle('d-none', file); if (file) { const reader = new FileReader(); reader.onload = (e) => processCSVData(e.target.result); @@ -97,10 +89,9 @@ function processCSVData(csvContent) { const nodeColor = (d) => (d.key == "source" ? "rgba(255,0,0,0.5)" : "rgba(0,0,255,0.5)"); - function renderControls(headers) { headers = headers.filter((d) => d.trim()); - const controlsTemplate = html` + const controlsTemplate = html `
    @@ -121,7 +112,7 @@ function renderControls(headers) {
    @@ -138,65 +129,62 @@ function renderControls(headers) { render(controlsTemplate, controls); updateNetwork(); - // Add event listener for the range input const thresholdRange = document.getElementById("thresholdRange"); const thresholdValue = document.getElementById("thresholdValue"); thresholdRange.addEventListener("input", (e) => { thresholdValue.textContent = `${Math.round(e.target.value * 100)}%`; drawNetwork(); - updateURL(); // Call updateURL when threshold changes - }); - - // Add event listeners for the dropdowns to update the URL when changed - const dropdowns = ['sourceSelect', 'targetSelect', 'metricSelect']; - dropdowns.forEach(id => { - document.getElementById(id).addEventListener('change', updateURL); }); - - // Function to update the URL based on the selected values and clicked card - -controls.addEventListener("change", (e) => { - if (e.target.id == "sourceSelect" || e.target.id == "targetSelect" || e.target.id == "metricSelect") updateNetwork(); -}); - -function updateNetwork() { - const source = document.getElementById("sourceSelect").value; - const target = document.getElementById("targetSelect").value; - const metric = document.getElementById("metricSelect").value; - - if (source && target) { - nodeLinks = kpartite(data, { source, target }, { metric: metric || 1 }); - nodeLinks.nodes.forEach((node) => (node.value = JSON.parse(node.id)[1])); - nodeLinks.links.sort((a, b) => b.metric - a.metric); - nodeLinks.links.forEach((link, index) => (link._rank = index)); - // console.log(nodeLinks.links); + function updateNetwork() { + const source = document.getElementById("sourceSelect").value; + const target = document.getElementById("targetSelect").value; + const metric = document.getElementById("metricSelect").value; + + if (source && target) { + nodeLinks = kpartite(data, { + source, + target + }, { + metric: metric || 1 + }); + nodeLinks.nodes.forEach((node) => (node.value = JSON.parse(node.id)[1])); + nodeLinks.links.sort((a, b) => b.metric - a.metric); + nodeLinks.links.forEach((link, index) => (link._rank = index)); + } + drawNetwork(); } - drawNetwork(); -} - -function drawNetwork() { - const { nodes, links } = nodeLinks; - const threshold = +document.getElementById("thresholdRange").value; - const filteredLinks = links.filter((link) => link._rank / links.length >= threshold); - const graph = network("#network", { nodes, links: filteredLinks, brush, d3 }); - - graph.nodes - .attr("fill", nodeColor) - .attr("r", 5) - .append("title") - .text((d) => `${d.id}: ${d.metric}`); - graph.links.attr("stroke", "rgba(var(--bs-body-color-rgb),0.2)"); -} + function drawNetwork() { + const { + nodes, + links + } = nodeLinks; + const threshold = +document.getElementById("thresholdRange").value; + const filteredLinks = links.filter((link) => link._rank / links.length >= threshold); + const graph = network("#network", { + nodes, + links: filteredLinks, + brush, + d3 + }); + + graph.nodes + .attr("fill", nodeColor) + .attr("r", 5) + .append("title") + .text((d) => `${d.id}: ${d.metric}`); + + graph.links.attr("stroke", "rgba(var(--bs-body-color-rgb),0.2)"); + } -function brush(nodes) { - const cols = { - source: document.getElementById("sourceSelect").value, - target: document.getElementById("targetSelect").value, - }; - const listGroupTemplate = html` + function brush(nodes) { + const cols = { + source: document.getElementById("sourceSelect").value, + target: document.getElementById("targetSelect").value, + }; + const listGroupTemplate = html `
      ${nodes.map( (node) => html` @@ -213,13 +201,7 @@ function brush(nodes) { )}
    `; - render(listGroupTemplate, document.getElementById("selection")); -} - - -} - - - - + render(listGroupTemplate, document.getElementById("selection")); + } +} \ No newline at end of file From 5d31c74c48f344e85e54c54f4725ee166df7ce37 Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Sun, 27 Oct 2024 01:12:22 +0530 Subject: [PATCH 08/15] minor html changes --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index decfd27..70f4cac 100644 --- a/index.html +++ b/index.html @@ -91,7 +91,7 @@

    Drag & Drop CSV file here

    -
    +

    From c2052aa18445e1b03e0afc9265ddc69fada0601d Mon Sep 17 00:00:00 2001 From: Krishna Kumar Date: Sun, 27 Oct 2024 01:14:02 +0530 Subject: [PATCH 09/15] minor html changes --- index.html | 3 --- 1 file changed, 3 deletions(-) diff --git a/index.html b/index.html index 70f4cac..4c1aac9 100644 --- a/index.html +++ b/index.html @@ -82,13 +82,11 @@

    Drag & Drop CSV file here

    -
    -
    @@ -96,7 +94,6 @@
    -
    From 33fac87bb7202a3da6c9c129a0e2de306c51374c Mon Sep 17 00:00:00 2001 From: krishna-gramener Date: Sun, 27 Oct 2024 16:05:27 +0530 Subject: [PATCH 10/15] code optimisation --- script.js | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/script.js b/script.js index 805db12..f3e0c56 100644 --- a/script.js +++ b/script.js @@ -16,11 +16,12 @@ const descriptionBox = document.getElementById("description-box"); const demosDiv = document.getElementById("demos"); let demosArray = []; -demosDiv.addEventListener('click', handleCardClick); -function handleCardClick(event) { +async function handleCardClick(event) { const target = event.target.closest('.demo'); if (!target) return; + event.preventDefault(); + processCSVData(await fetch(target.href).then((r) => r.text())); const index = target.getAttribute('data-index'); descriptionBox.classList.remove('d-none'); document.getElementById('title').textContent = demosArray[index].title; @@ -40,26 +41,23 @@ const fetchAndRenderDemos = async () => {
    ${demo.title}

    ${demo.overview}

    -
    - +
    +
    - `), demosDiv + `), demosDiv ); - demosDiv.querySelectorAll('.demo').forEach(card => - card.addEventListener('click', handleCardClick)); } catch (error) { console.error('Error fetching config.json:', error); } }; -fetchAndRenderDemos(); - let data, nodeLinks; document.addEventListener("DOMContentLoaded", () => { + fetchAndRenderDemos(); fileInput.addEventListener("change", handleFileUpload); - document.getElementById("demos").addEventListener("click", handleDemoClick); + demosDiv.addEventListener('click', handleCardClick); }); function handleFileUpload(event) { @@ -74,14 +72,6 @@ function handleFileUpload(event) { } } -async function handleDemoClick(event) { - const demoLink = event.target.closest(".demo"); - if (demoLink) { - event.preventDefault(); - processCSVData(await fetch(demoLink.href).then((r) => r.text())); - } -} - function processCSVData(csvContent) { data = d3.csvParse(csvContent); renderControls(data.columns); From 40004f73fa37eb1e35e07812f13455c8511e903e Mon Sep 17 00:00:00 2001 From: krishna-gramener Date: Sun, 27 Oct 2024 18:02:38 +0530 Subject: [PATCH 11/15] network re-renders when change in dropdown --- script.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/script.js b/script.js index f3e0c56..1073790 100644 --- a/script.js +++ b/script.js @@ -126,6 +126,11 @@ function renderControls(headers) { thresholdValue.textContent = `${Math.round(e.target.value * 100)}%`; drawNetwork(); }); +} + +controls.addEventListener("change", (e) => { + if (e.target.id == "sourceSelect" || e.target.id == "targetSelect" || e.target.id == "metricSelect") updateNetwork(); +}); function updateNetwork() { const source = document.getElementById("sourceSelect").value; @@ -193,5 +198,3 @@ function renderControls(headers) { `; render(listGroupTemplate, document.getElementById("selection")); } - -} \ No newline at end of file From dbde71306f58248e640eeae0ca0069209ba816ab Mon Sep 17 00:00:00 2001 From: krishna-gramener Date: Mon, 28 Oct 2024 21:14:05 +0530 Subject: [PATCH 12/15] unnecessary files deleted --- .gitignore | 1 - index.html | 18 +++-- package-lock.json | 6 -- package.json | 1 - script.js | 185 +++++++++++++++++++++++----------------------- 5 files changed, 105 insertions(+), 106 deletions(-) delete mode 100644 .gitignore delete mode 100644 package-lock.json delete mode 100644 package.json diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c2658d7..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/index.html b/index.html index 4c1aac9..5a916fd 100644 --- a/index.html +++ b/index.html @@ -39,22 +39,26 @@ aria-expanded="false" aria-label="Toggle theme (auto)" > - Toggle theme + + Toggle theme @@ -106,9 +110,9 @@
    diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index fc679a8..0000000 --- a/package-lock.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "network", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/package.json b/package.json deleted file mode 100644 index 0967ef4..0000000 --- a/package.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/script.js b/script.js index 1073790..4245175 100644 --- a/script.js +++ b/script.js @@ -1,19 +1,12 @@ -import { - network -} from "https://cdn.jsdelivr.net/npm/@gramex/network@2"; -import { - kpartite -} from "https://cdn.jsdelivr.net/npm/@gramex/network@2/dist/kpartite.js"; -import * as d3 from "https://cdn.jsdelivr.net/npm/d3@7.8.5/+esm"; -import { - render, - html -} from "https://cdn.jsdelivr.net/npm/lit-html@3/+esm"; - -const fileInput = document.getElementById("fileInput"); -const controls = document.getElementById("controls"); -const descriptionBox = document.getElementById("description-box"); -const demosDiv = document.getElementById("demos"); +import { network } from 'https://cdn.jsdelivr.net/npm/@gramex/network@2'; +import { kpartite } from 'https://cdn.jsdelivr.net/npm/@gramex/network@2/dist/kpartite.js'; +import * as d3 from 'https://cdn.jsdelivr.net/npm/d3@7.8.5/+esm'; +import { render, html } from 'https://cdn.jsdelivr.net/npm/lit-html@3/+esm'; + +const fileInput = document.getElementById('fileInput'); +const controls = document.getElementById('controls'); +const descriptionBox = document.getElementById('description-box'); +const demosDiv = document.getElementById('demos'); let demosArray = []; @@ -30,23 +23,23 @@ async function handleCardClick(event) { const fetchAndRenderDemos = async () => { try { - const { - demos - } = await (await fetch("config.json")).json(); + const { demos } = await (await fetch('config.json')).json(); demosArray = demos; render( - demos.map((demo, index) => html ` -
    - - + ` + ), + demosDiv ); - } catch (error) { console.error('Error fetching config.json:', error); } @@ -54,9 +47,9 @@ const fetchAndRenderDemos = async () => { let data, nodeLinks; -document.addEventListener("DOMContentLoaded", () => { +document.addEventListener('DOMContentLoaded', () => { fetchAndRenderDemos(); - fileInput.addEventListener("change", handleFileUpload); + fileInput.addEventListener('change', handleFileUpload); demosDiv.addEventListener('click', handleCardClick); }); @@ -68,7 +61,7 @@ function handleFileUpload(event) { reader.onload = (e) => processCSVData(e.target.result); reader.readAsText(file); } else { - controls.innerHTML = ""; + controls.innerHTML = ''; } } @@ -77,17 +70,20 @@ function processCSVData(csvContent) { renderControls(data.columns); } -const nodeColor = (d) => (d.key == "source" ? "rgba(255,0,0,0.5)" : "rgba(0,0,255,0.5)"); +const nodeColor = (d) => (d.key == 'source' ? 'rgba(255,0,0,0.5)' : 'rgba(0,0,255,0.5)'); function renderControls(headers) { headers = headers.filter((d) => d.trim()); - const controlsTemplate = html ` + const controlsTemplate = html`
    @@ -95,7 +91,10 @@ function renderControls(headers) {
    @@ -103,7 +102,12 @@ function renderControls(headers) {
    @@ -120,66 +124,67 @@ function renderControls(headers) { updateNetwork(); // Add event listener for the range input - const thresholdRange = document.getElementById("thresholdRange"); - const thresholdValue = document.getElementById("thresholdValue"); - thresholdRange.addEventListener("input", (e) => { + const thresholdRange = document.getElementById('thresholdRange'); + const thresholdValue = document.getElementById('thresholdValue'); + thresholdRange.addEventListener('input', (e) => { thresholdValue.textContent = `${Math.round(e.target.value * 100)}%`; drawNetwork(); }); } -controls.addEventListener("change", (e) => { - if (e.target.id == "sourceSelect" || e.target.id == "targetSelect" || e.target.id == "metricSelect") updateNetwork(); +controls.addEventListener('change', (e) => { + if (e.target.id == 'sourceSelect' || e.target.id == 'targetSelect' || e.target.id == 'metricSelect') updateNetwork(); }); - function updateNetwork() { - const source = document.getElementById("sourceSelect").value; - const target = document.getElementById("targetSelect").value; - const metric = document.getElementById("metricSelect").value; +function updateNetwork() { + const source = document.getElementById('sourceSelect').value; + const target = document.getElementById('targetSelect').value; + const metric = document.getElementById('metricSelect').value; - if (source && target) { - nodeLinks = kpartite(data, { + if (source && target) { + nodeLinks = kpartite( + data, + { source, - target - }, { - metric: metric || 1 - }); - nodeLinks.nodes.forEach((node) => (node.value = JSON.parse(node.id)[1])); - nodeLinks.links.sort((a, b) => b.metric - a.metric); - nodeLinks.links.forEach((link, index) => (link._rank = index)); - } - drawNetwork(); + target, + }, + { + metric: metric || 1, + } + ); + nodeLinks.nodes.forEach((node) => (node.value = JSON.parse(node.id)[1])); + nodeLinks.links.sort((a, b) => b.metric - a.metric); + nodeLinks.links.forEach((link, index) => (link._rank = index)); } + drawNetwork(); +} - function drawNetwork() { - const { - nodes, - links - } = nodeLinks; - const threshold = +document.getElementById("thresholdRange").value; - const filteredLinks = links.filter((link) => link._rank / links.length >= threshold); - const graph = network("#network", { - nodes, - links: filteredLinks, - brush, - d3 - }); - - graph.nodes - .attr("fill", nodeColor) - .attr("r", 5) - .append("title") - .text((d) => `${d.id}: ${d.metric}`); - - graph.links.attr("stroke", "rgba(var(--bs-body-color-rgb),0.2)"); - } +function drawNetwork() { + const { nodes, links } = nodeLinks; + const threshold = +document.getElementById('thresholdRange').value; + const filteredLinks = links.filter((link) => link._rank / links.length >= threshold); + const graph = network('#network', { + nodes, + links: filteredLinks, + brush, + d3, + }); + + graph.nodes + .attr('fill', nodeColor) + .attr('r', 5) + .append('title') + .text((d) => `${d.id}: ${d.metric}`); - function brush(nodes) { - const cols = { - source: document.getElementById("sourceSelect").value, - target: document.getElementById("targetSelect").value, - }; - const listGroupTemplate = html ` + graph.links.attr('stroke', 'rgba(var(--bs-body-color-rgb),0.2)'); +} + +function brush(nodes) { + const cols = { + source: document.getElementById('sourceSelect').value, + target: document.getElementById('targetSelect').value, + }; + const listGroupTemplate = html`
      ${nodes.map( (node) => html` @@ -187,14 +192,12 @@ controls.addEventListener("change", (e) => { class="list-group-item d-flex justify-content-between align-items-center" style="background-color: ${nodeColor(node)}" > - ${node.value || "-"} - - ${cols[node.key]} - + ${node.value || '-'} + ${cols[node.key]} ` )}
    `; - render(listGroupTemplate, document.getElementById("selection")); - } + render(listGroupTemplate, document.getElementById('selection')); +} From 4b12b384eee98469cb009b617513fb3351201210 Mon Sep 17 00:00:00 2001 From: krishna-gramener Date: Tue, 29 Oct 2024 14:11:20 +0530 Subject: [PATCH 13/15] code modification --- index.html | 109 +++++++++++++++++++++++------------------------------ 1 file changed, 47 insertions(+), 62 deletions(-) diff --git a/index.html b/index.html index 5a916fd..71c7c20 100644 --- a/index.html +++ b/index.html @@ -1,10 +1,10 @@ - - - - + + + + Network - - - -
    -

    Network Explorer

    -

    A visual interface for - knowledge graphs.

    +
    +

    Network Explorer

    +

    A visual interface for knowledge graphs.

    -
    -
    - -
    -
    -
    -
    +
    +
    + +
    +
    +
    +
    -
    -
    -
    -

    -
    +
    +
    +
    +

    +
    -
    -
    -
    - -
    -
    +
    +
    +
    +
    +
    - - - - - - +
    + + + + + + + + + \ No newline at end of file diff --git a/script.js b/script.js index 4245175..36f526d 100644 --- a/script.js +++ b/script.js @@ -1,67 +1,41 @@ -import { network } from 'https://cdn.jsdelivr.net/npm/@gramex/network@2'; -import { kpartite } from 'https://cdn.jsdelivr.net/npm/@gramex/network@2/dist/kpartite.js'; -import * as d3 from 'https://cdn.jsdelivr.net/npm/d3@7.8.5/+esm'; -import { render, html } from 'https://cdn.jsdelivr.net/npm/lit-html@3/+esm'; - -const fileInput = document.getElementById('fileInput'); -const controls = document.getElementById('controls'); -const descriptionBox = document.getElementById('description-box'); -const demosDiv = document.getElementById('demos'); - +import { network } from "https://cdn.jsdelivr.net/npm/@gramex/network@2"; +import { kpartite } from "https://cdn.jsdelivr.net/npm/@gramex/network@2/dist/kpartite.js"; +import * as d3 from "https://cdn.jsdelivr.net/npm/d3@7.8.5/+esm"; +import { render, html } from "https://cdn.jsdelivr.net/npm/lit-html@3/+esm"; + +const fileInput = document.getElementById("fileInput"); +const controls = document.getElementById("controls"); +const descriptionBox = document.getElementById("description-box"); +const demosDiv = document.getElementById("demos"); +let data, nodeLinks; let demosArray = []; +document.addEventListener("DOMContentLoaded", () => { + fetchAndRenderDemos(); + fileInput.addEventListener("change", handleFileUpload); + demosDiv.addEventListener("click", handleCardClick); +}); + async function handleCardClick(event) { - const target = event.target.closest('.demo'); + const target = event.target.closest(".demo"); if (!target) return; event.preventDefault(); processCSVData(await fetch(target.href).then((r) => r.text())); - const index = target.getAttribute('data-index'); - descriptionBox.classList.remove('d-none'); - document.getElementById('title').textContent = demosArray[index].title; - document.getElementById('description').textContent = demosArray[index].description; + const index = target.getAttribute("data-index"); + descriptionBox.classList.remove("d-none"); + document.getElementById("title").textContent = demosArray[index].title; + document.getElementById("description").textContent = demosArray[index].description; } -const fetchAndRenderDemos = async () => { - try { - const { demos } = await (await fetch('config.json')).json(); - demosArray = demos; - render( - demos.map( - (demo, index) => html` - - ` - ), - demosDiv - ); - } catch (error) { - console.error('Error fetching config.json:', error); - } -}; - -let data, nodeLinks; - -document.addEventListener('DOMContentLoaded', () => { - fetchAndRenderDemos(); - fileInput.addEventListener('change', handleFileUpload); - demosDiv.addEventListener('click', handleCardClick); -}); - function handleFileUpload(event) { const file = event.target.files[0]; - descriptionBox.classList.toggle('d-none', file); + descriptionBox.classList.toggle("d-none", file); if (file) { const reader = new FileReader(); reader.onload = (e) => processCSVData(e.target.result); reader.readAsText(file); } else { - controls.innerHTML = ''; + controls.innerHTML = ""; } } @@ -69,8 +43,7 @@ function processCSVData(csvContent) { data = d3.csvParse(csvContent); renderControls(data.columns); } - -const nodeColor = (d) => (d.key == 'source' ? 'rgba(255,0,0,0.5)' : 'rgba(0,0,255,0.5)'); +const nodeColor = (d) => (d.key == "source" ? "rgba(255,0,0,0.5)" : "rgba(0,0,255,0.5)"); function renderControls(headers) { headers = headers.filter((d) => d.trim()); @@ -80,10 +53,7 @@ function renderControls(headers) {
    @@ -91,10 +61,7 @@ function renderControls(headers) {
    @@ -102,12 +69,7 @@ function renderControls(headers) {
    @@ -124,65 +86,52 @@ function renderControls(headers) { updateNetwork(); // Add event listener for the range input - const thresholdRange = document.getElementById('thresholdRange'); - const thresholdValue = document.getElementById('thresholdValue'); - thresholdRange.addEventListener('input', (e) => { + const thresholdRange = document.getElementById("thresholdRange"); + const thresholdValue = document.getElementById("thresholdValue"); + thresholdRange.addEventListener("input", (e) => { thresholdValue.textContent = `${Math.round(e.target.value * 100)}%`; drawNetwork(); }); } -controls.addEventListener('change', (e) => { - if (e.target.id == 'sourceSelect' || e.target.id == 'targetSelect' || e.target.id == 'metricSelect') updateNetwork(); +controls.addEventListener("change", (e) => { + if (e.target.id == "sourceSelect" || e.target.id == "targetSelect" || e.target.id == "metricSelect") updateNetwork(); }); function updateNetwork() { - const source = document.getElementById('sourceSelect').value; - const target = document.getElementById('targetSelect').value; - const metric = document.getElementById('metricSelect').value; + const source = document.getElementById("sourceSelect").value; + const target = document.getElementById("targetSelect").value; + const metric = document.getElementById("metricSelect").value; if (source && target) { - nodeLinks = kpartite( - data, - { - source, - target, - }, - { - metric: metric || 1, - } - ); + nodeLinks = kpartite(data, { source, target }, { metric: metric || 1 }); nodeLinks.nodes.forEach((node) => (node.value = JSON.parse(node.id)[1])); nodeLinks.links.sort((a, b) => b.metric - a.metric); nodeLinks.links.forEach((link, index) => (link._rank = index)); + console.log(nodeLinks.links); } drawNetwork(); } function drawNetwork() { const { nodes, links } = nodeLinks; - const threshold = +document.getElementById('thresholdRange').value; + const threshold = +document.getElementById("thresholdRange").value; const filteredLinks = links.filter((link) => link._rank / links.length >= threshold); - const graph = network('#network', { - nodes, - links: filteredLinks, - brush, - d3, - }); + const graph = network("#network", { nodes, links: filteredLinks, brush, d3 }); graph.nodes - .attr('fill', nodeColor) - .attr('r', 5) - .append('title') + .attr("fill", nodeColor) + .attr("r", 5) + .append("title") .text((d) => `${d.id}: ${d.metric}`); - graph.links.attr('stroke', 'rgba(var(--bs-body-color-rgb),0.2)'); + graph.links.attr("stroke", "rgba(var(--bs-body-color-rgb),0.2)"); } function brush(nodes) { const cols = { - source: document.getElementById('sourceSelect').value, - target: document.getElementById('targetSelect').value, + source: document.getElementById("sourceSelect").value, + target: document.getElementById("targetSelect").value, }; const listGroupTemplate = html`
      @@ -192,12 +141,36 @@ function brush(nodes) { class="list-group-item d-flex justify-content-between align-items-center" style="background-color: ${nodeColor(node)}" > - ${node.value || '-'} - ${cols[node.key]} + ${node.value || "-"} + ${cols[node.key]} ` )}
    `; - render(listGroupTemplate, document.getElementById('selection')); + render(listGroupTemplate, document.getElementById("selection")); } + +const fetchAndRenderDemos = async () => { + try { + const { demos } = await (await fetch("config.json")).json(); + demosArray = demos; + render( + demos.map( + (demo, index) => html` + + ` + ), + demosDiv + ); + } catch (error) { + console.error("Error fetching config.json:", error); + } +}; From b88c36e67729e738c084457b4fb815cb2a32422e Mon Sep 17 00:00:00 2001 From: krishna-gramener Date: Tue, 29 Oct 2024 18:55:46 +0530 Subject: [PATCH 15/15] code structuring modified --- index.html | 4 ++-- script.js | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index d030c67..10cb1d4 100644 --- a/index.html +++ b/index.html @@ -50,7 +50,7 @@

    A visual interface for knowledge graphs.

    diff --git a/script.js b/script.js index 36f526d..01b0b4b 100644 --- a/script.js +++ b/script.js @@ -69,7 +69,7 @@ function renderControls(headers) {
    @@ -142,7 +142,9 @@ function brush(nodes) { style="background-color: ${nodeColor(node)}" > ${node.value || "-"} - ${cols[node.key]} + + ${cols[node.key]} + ` )}